Events
order.processing: processing started or resumed.order.confirming: awaiting source confirmations.order.bridging: crossing chains.order.swapping: swap executing.order.awaiting_approval: pending offer or review.order.refunding: refund underway.order.delivering: delivery underway.order.completed: delivered.order.failed: failure; inspectdata.error.order.unfulfilled: deposit replaced or unconfirmed.order.refunded: refund confirmed.order.superseded: successor link advanced.order.recovery_required: operator release or refund decision needed.
/v1/webhooks/recovery subscriptions. Their data can carry status: "processing" with reviewStatus of pending_review or blocked_wallet. A review hold is not a ZeroConf offer.
Ordinary paused, expired, and Lightning deposit-timeout transitions emit no webhook. State normalization to processing does not imply an event. Reconcile through status polling.
Envelope
Payload fields
data is the event-time order snapshot. Amounts are integer strings in smallest units; timestamps are ISO 8601. This example shows selected fields, not a complete schema. Optional fields may be omitted rather than null.
An order.completed event for 50 USDC on Base delivered as BTC on Spark:
amountOutis null before completion.destination.txHashrecords delivery;refundis always an object with nullable fields.feeAmountis infeeAssetunits and reads “0” for invoice-billed partners.quoteIdis null for legacy address deposits.feePlanandfeePayoutsare present when the order carries app or affiliate fees. Each payout entry has a role (app_fee, recipient_payout, platform_fee, or fee_custody) and a leg (full or holdback; instant appears only on historical multi-leg records).amountFiatUsd,amountFiatCurrency, andspotUsdPerBtcappear on orders created with a USD amount.zeroconfOfferis the Bitcoin 0-conf offer; see ZeroConf.error.codevalues are in Errors.supersededByOperationIdpoints to the successor after an RBF-replaced deposit;recoveredFromOperationIdpoints back. Both are omitted when absent.- Dedupe on the tuple of
data.id,event, anddata.updatedAt.