Skip to content

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.

{
"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.