Skip to main content
checkout.cancelled is off by default. It will not be delivered until you enable it in Dashboard → Developers. See Receiving Webhooks for instructions.
This event is processor-specific. It fires when a transfer that was already accepted for processing is cancelled by the rail — today that happens on bank-transfer rails, for deposits as well as payouts. Card rails do not emit it, so many accounts will never receive it. Ask Soap whether your rails emit it before you subscribe or write a handler, and branch on data.type / charge.transaction_type in your handler rather than assuming a payout.

Payload Structure

Example Response

Updating Your Internal Ledger

cancelled is a terminal charge status. The charge typically moves from pending to cancelled — the transfer was accepted for processing and then cancelled before it settled. For a cancelled deposit, nothing was credited, so no ledger change is needed beyond marking the attempt closed; the charge’s failure_message may say why. For a cancelled payout, if you already debited the customer on checkout.hold, credit them back here, the same way you would for checkout.failed with from_status: "pending".