Skip to main content
Webhooks deliver order snapshots for selected lifecycle events. Registration, signatures, retries, and deduplication are on Order status.

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; inspect data.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.
Recovery events go only to /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:
Notes on the fields that need them:
  • amountOut is null before completion. destination.txHash records delivery; refund is always an object with nullable fields.
  • feeAmount is in feeAsset units and reads “0” for invoice-billed partners.
  • quoteId is null for legacy address deposits.
  • feePlan and feePayouts are 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, and spotUsdPerBtc appear on orders created with a USD amount.
  • zeroconfOffer is the Bitcoin 0-conf offer; see ZeroConf. error.code values are in Errors.
  • supersededByOperationId points to the successor after an RBF-replaced deposit; recoveredFromOperationId points back. Both are omitted when absent.
  • Dedupe on the tuple of data.id, event, and data.updatedAt.