Skip to main content

Statuses

Each object carries a status; orders carry state instead. The same values appear in API responses and in webhook deliveries, so a client branches on one set either way.

Deposit status

StatusMeaningTerminal
aml_processingAML screening is in progressno
frozenHeld pending an AML decisionno
processingBeing creditedno
doneCredited to the member's balanceyes
aml_rejectedRefused by AML screeningyes
canceledCancelled and not creditedyes

A deposit carries a tx_id in every status, including the ones where nothing was credited — the transaction exists on-chain long before the balance moves. A hash is therefore not a sign that the money arrived. Wait for done.

Withdrawal status

StatusMeaningTerminal
aml_processingAML screening of the destination address is in progressno
processingAccepted and being processedno
postponedHeld up by an internal problemno
doneExecuted — tx_id is populatedyes
failCould not be executedyes
rejectedRefused and not sentyes
aml_rejectedRefused by AML screening on the destination addressyes

A newly created payout starts at aml_processing. tx_id is null until the payout is broadcast, so it carries a value only on done.

uuid can also be null.

Two kinds of refusal

rejected and aml_rejected are separate statuses. aml_rejected specifically means the destination address did not pass AML screening; rejected is a refusal for any other reason.

Both are final. Keep them apart when you report back to a customer: an AML refusal is about where the money was going, not a technical failure on your side or ours.

postponed is not the customer's fault

It means something went wrong on the platform side, not that the request was invalid, and it is not terminal. Do not present it to a customer as a rejection.

Order state

StateMeaninglockedavg_price
waitLive, waiting to fillstill heldnull
doneExecutedreleasedthe fill price
failRejected by the systemreleasednull
cancelCancelledreleasednull

avg_price is populated once there is a fill — including on a market order. Cancel Order is what produces cancel on a limit order; a cancelled market order ends up as fail.

wait is never delivered by webhook

Order webhooks carry the terminal states only — done, fail, cancel. There is no notification when an order is accepted, so treat the response to Create Order as the record that it exists, and the webhook as the record of how it ended.

Deposits and payouts do notify on intermediate statuses.

Trade side

A trade carries trend rather than a side:

trendMeaning
upBuy
downSell

The asset a fee was taken in is stated explicitly as fee_asset_id, so it never has to be derived from the side.

Operation type

Deposits and withdrawals also carry operation_type, which says how the movement was settled:

ValueMeaning
ON_CHAINSettled as a blockchain transaction
OFF_CHAINSettled inside the platform, with no network transaction

Those are the only two values. The same field is returned by Withdrawal Fees, so you can see how a payout would be settled before creating it.