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