Unified table
Payouts: the cycle with money on hold
- The full debit (
total_debit) leavesavailableand sits inheldwhile the operation is in flight. failedalways refunds the full debit (amount + fee) toavailable, automatically.- A
processingpayout cannot be cancelled through the API: wait for the final state (webhook orGET /v1/payouts/{id}).
status_code catalog on failed payouts
When a payout fails, status_code and status_message explain the cause
in neutral terms:
The refund already happened in every case: verify it in
GET /v1/movements (a payout_refund entry).
Payins: collection statuses
pending— the charge exists and awaits payment. QRs and payment pages expire (expiredif nobody pays).credited— payment received, converted at yourpayin_rateand credited.unassigned— a deposit arrived that could not be matched to any account; the administrator routes it manually and it is then credited with the destination account’s rate and fees.failed— the collection failed (e.g. a collect declined by the payer). No money moved.
Crypto withdrawals: on-chain confirmation
A withdrawal reachescompleted when the transaction confirms on the
network. Typical times: TRON ~1 minute (19 confirmations), Ethereum
a few minutes depending on congestion. The tx_id comes in the response
and the webhook so you can verify it on the explorer.
If the withdrawal fails before broadcasting, the full debit is refunded
(a withdrawal_refund entry).
Cards
pending_activation— a physical card was issued and ships inactive; it activates withPOST /v1/cards/{id}/activate.active— authorizes purchases in real time against the card’s spending asset balance (spending_asset: USDT, USDC, BTC or GOLD).frozen— frozen (manually or for an unpaid monthly fee); purchases are declined withunfunded_card_frozen. It unfreezes by settling the pending charge.cancelled— final; cannot be reverted.
Cross-cutting rules
When do I trust a status?
When do I trust a status?
Final state via webhook or via the resource’s
GET — both are
equivalent sources of truth. The webhook is push (recommended); the GET
is your fallback if a webhook is lost.What do I do on a timeout while creating an operation?
What do I do on a timeout while creating an operation?
Do NOT retry with a new key. Repeat the same request with the same
idempotency_key (it returns the original with idempotency_hit: true)
or query the resource listing. Details in
idempotency.Can a status go backwards?
Can a status go backwards?
No. Lifecycles are monotonic:
completed and failed are definitive, and
an operation never returns to a previous state.Where do I see each status's effect on my balance?
Where do I see each status's effect on my balance?
In
GET /v1/movements: every transition with an economic effect leaves an
immutable entry (payout_debit, payout_refund, payin_credit…). See
movements and reconciliation.