payment.completed
This is the event most integrations key their fulfilment logic off. It fires once, when a payment first reaches full confirmation for exactly the expected amount — settlement is 100% wallet-to-wallet to your own address; Send Chain never holds the funds.
Payload (data)
Section titled “Payload (data)”{ "livemode": false, "paymentId": "pay_test_00000000", "paymentRequestId": "req_test_00000000", "origin": { "type": "link", "id": "lnk_test_00000000", "title": "Sample link" }, "supporter": { "id": "sup_test_00000000", "handle": "sample_supporter", "message": "Test payment" }, "asset": "USDC", "chain": "base", "onchainAmount": "15000000", "feeAmount": "75000", "decimals": 6, "fiatValue": { "minor": 1500, "currency": "USD" }, "rateBasis": "Locked", "txRef": "0xtesttx", "confirmations": 12, "completedAt": "2026-09-13T00:00:00Z"}A completed payment can later be undone by a chain reorganisation — see
payment.reversed. See
Webhooks overview for the envelope, headers, and
signature verification shared by every event type.