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
rejectedRefused, including a final AML refusal; 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
initiatedCreated, waiting for the core to accept itno
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
expiredNot accepted by the core within a day; not sentyes
cancelCancelled by the platform before the core accepted it; not sentyes

A newly created payout starts at aml_processing. That status is not delivered by webhook — the first one you can receive is processing, see Receiving Deliveries.

tx_id is null until the payout is broadcast, so it carries a value only on done. uuid works the other way round: it is set when the core accepts the payout, so it carries a value in every status in the table above, and is null only on a payout that failed before the core registered it.

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.

When a payout ends as fail, rejected or aml_rejected, the money held for it goes back to the balance — but not always all of it. On fail and rejected the whole amount + fee returns. On aml_rejected the AML part of the fee is kept, so what returns is amount + fee − AML fee; that part is the aml_fee of the Withdrawal Fees quote.

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 until the first fill
doneExecutedreleasedthe fill price
failRejected by the systemreleasednull
cancelCancelledreleasednull

avg_price is populated once there is a fill — including on a market order. Older records can depart from this table: a market order in cancel, or a filled market order with avg_price null. Cancel Order is what produces cancel on a limit order. A market order cannot be cancelled through the API; if the core itself stops an unfilled market order, it ends 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: the direction of the trade from the taker's side — the order that executed against the order book.

trendMeaning
upThe taker bought
downThe taker sold

It matches your member's side only when your member's order was the taker, which every market order is. When your member's order was the maker — a limit order resting in the book — trend is the opposite of that order's side. To read your member's own side, follow order_id to the order and take its side.

The asset a fee was taken in is stated as fee_asset_id — the asset the member received: the base asset on a buy, the quote asset on a sell. Older trades can carry null there; for those, apply the same rule using the order's 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; older records carry null. The same field is returned by Withdrawal Fees, so you can see how a payout would be settled before creating it.