Skip to main content
checkout.failed is off by default. It will not be delivered until you enable it in Dashboard → Developers. See Receiving Webhooks for instructions.

Payload Structure

Example Response

Updating Your Internal Ledger

This event is triggered when a deposit or withdrawal fails. For deposits, and for withdrawals you have not already debited, your ledger is usually unaffected. For withdrawals it can be the event that releases a hold, and missing it strands customer funds. Use charge.from_status to tell the two cases apart:
  • from_status: "pending" — the payout was accepted for processing and then failed. Because the charge was pending rather than held immediately beforehand, Soap sends this event instead of checkout.release_hold. If you debited the customer on checkout.hold, you must credit them back here. See the withdrawal hold lifecycle.
  • from_status: "succeeded" — a settled charge was reversed after the fact. Track the charge.id state to reconcile these correctly.
This event is off by default. For withdrawals that means an accepted-then-failed payout produces no webhook at all unless you enable it in Dashboard → Developers, which is the most common way held funds go missing.