Understanding Order Status
The lifecycle of an order — from submission through fill or cancellation.
Order States
| Status | Meaning |
|---|---|
| Pending | The order has been submitted but not yet processed by the engine. |
| Open | The order is resting in the order book, awaiting a counterparty match. |
| Partially Filled | Some quantity has been matched. The remainder is still open. |
| Filled | The full quantity has been matched. The order is complete. |
| Cancelled | The order was cancelled before being fully filled. |
| Rejected | The engine refused the order (insufficient balance, invalid signature, etc.). |
State Transitions
When you submit an order, it enters the Pending state. The engine processes requests in strict arrival order, so under high load a brief pending period is normal.
Once the engine processes the order, one of three things happens:
- Immediate match: The order crosses the spread and matches against resting orders. The matched quantity is filled. For GTC orders, any remaining quantity becomes Open. For IOC/FOK, the remainder is cancelled.
- Rests in book: The order does not cross the spread. For GTC and Post-Only orders, the order enters the Open state and waits for a matching order to arrive.
- Rejected: The engine determines the order is invalid — insufficient balance, nonce already used, signature mismatch, credit limit exceeded, or Post-Only order that would have crossed.
Partial Fills
When only part of your order can be matched — because there is insufficient opposing liquidity at your price — the order becomes Partially Filled. The filled portion is complete; the unfilled portion remains in the book as Open (for GTC orders). Each partial fill generates a separate fill record with its own price and size.
Viewing Fill History
Completed fills are visible in the Trade History panel on each market page and in the Dashboard. Each fill record shows the market, side, fill price, fill quantity, fee charged, and timestamp. Private WebSocket subscribers receive fill events in real time.
orders and fills private channels after authenticating your WebSocket connection.