Skip to main content
A deposit is tracked by polling /deposit/status with the source-chain receipt. It reports one of four statuses.

The statuses

When to credit the user

Credit only on done. That is the single signal that funds actually landed at the destination. pending is not a guarantee; failed and expired mean nothing was delivered.

Tracking channels

  • Now: poll /deposit/status from your client or backend until the status is terminal. Keep polls a few seconds apart to stay under the rate limit (5 requests / 10s / IP).
  • Coming soon: webhooks will push status changes to your backend so you can credit the user without polling. Until they ship, poll.
A plan, not a live spec.
  • Three channels, one payload - the same status delivered by polling (today), webhooks (push, recommended for crediting), and a WebSocket stream (near real-time), so you pick per need.
  • Bank On/Off-Ramp statuses - the fiat product adds a longer chain (awaiting_payment → processing → completed, plus failed / refunded / expired) once it lands. The crediting rule stays the same: credit only on the completed/done state.
For anything your backend must trust (crediting a user, releasing an order), rely on a done status you fetched yourself - not on client-side UI state.