Skip to main content

Spot Order Lifecycle

This page describes the states a spot order moves through after you place it. Status values are returned in the status field of every order response.

Status values

StatusDescription
OPENOrder has been accepted; no fills yet.
PARTIALLY_EXECUTEDOrder has been partially executed. Non-terminal — may continue to fill, be cancelled, or expire.
EXECUTEDOrder has fully executed. Terminal.
CANCELLEDUser has cancelled the order. Terminal.
EXPIREDOrder has expired. Terminal.
DISCARDEDOrder was rejected before reaching the exchange. Terminal.
CANCELLATION_RAISEDIntermediate state. Cancellation requested at the exchange but not yet confirmed. Resolves to CANCELLED.
EXPIRATION_RAISEDIntermediate state. Expiration requested at the exchange but not yet confirmed. Resolves to EXPIRED.

State machine

Key behaviors

  • PARTIALLY_EXECUTED is not terminal in spot. A partially-filled order continues working until it fills, is cancelled, or expires. (This differs from Futures, where PARTIALLY_EXECUTED is terminal.)
  • Cancellation is two-phase. When you call DELETE /trade/api/v2/order, the order moves to CANCELLATION_RAISED while we ask the exchange to cancel; once confirmed it becomes CANCELLED. Don't treat CANCELLATION_RAISED as fully cancelled — the order may have filled in the meantime.
  • Expiration behaves the same way (EXPIRATION_RAISEDEXPIRED).
  • DISCARDED means the order failed validation or was rejected before being placed on the exchange. Inspect the response message to find out why.

To stream status changes in real time instead of polling, subscribe to the Order Updates WebSocket — it pushes a message every time status changes.