Payouts
pending→processing→completedfirespayout.completed; any →failedfirespayout.failedwithstatusMessage.- A failed payout refunds the balance automatically — no refund call needed.
- Retries against providers are internal; you’ll see them as
attemptsonGET /v1/payouts/{id}and in thetimeline.
Collections (mobile money charges)
collection.pending on creation, then collection.completed (balance credited) or collection.failed. The “customer never approved” case is a normal failed.
Deposits (virtual accounts & crypto addresses)
Deposits aren’t requested — they arrive. Each one becomes a collection of type deposit and credits your balance; you getaccount.credited and the collection webhooks. Crypto deposits wait for chain confirmations first (the checkout shows this as “confirming”).
Orders (cross-rail pass-through)
Two extra states describe how much arrived:overpaid and underpaid. Both proceed — the order is recomputed on the actual amount received and pays out that amount; it fails only if the received amount is below the destination method’s minimum. Every transition fires an order.* webhook of the same name (order.funds_received, order.underpaid, …).
Conversions
Quote → execute. A quote is valid for 10 minutes; executing it moves money between two of your balances synchronously and returnscompleted. Executing the same quote twice returns the original conversion.
Checkout sessions (hosted payment links)
A payment link isactive until its sessions collect the full amount (paid), it passes its own expiresAt (expired), or you close it (closed). A failed or expired session never changes the link — the payer just picks another method. Partial payments accumulate on the link (totalReceived / remaining).
Reading state safely
- Poll
GET …/{id}for a one-off; use webhooks for everything else. - Webhooks can arrive out of order or twice. Treat the payload’s
statusas authoritative for that resource and make handlers idempotent on the resource id + status. timelineon payout and order detail is the audit trail — it’s what the dashboard shows, assembled from the same records.