Order Lifecycle#
NewOrderSingle (35=D)#
Purpose:
The NewOrderSingle message creates a new order in the market. It's the primary way clients express their trading intent, whether buying or selling a specific quantity of an instrument at a defined price and time validity.To place a new buy or sell order
After analyzing market data and deciding on a trade
To express firm trading interest at specific price levels
As part of manual or algorithmic trading strategies
Business Context:
Order placement is the core function of any trading platform. NewOrderSingle supports various order types (Market, Limit, Stop) and time-in-force instructions (Day, GTC, GTD, IOC, FOK). The platform validates all orders before submission, ensuring compliance with trading rules and instrument constraints. Each order receives a unique ClOrdID from the client and an OrderID from the server for lifecycle tracking.Message Flow#
| Tag | Name | Required | Description |
|---|
| 11 | ClOrdID | Y | Client order ID (unique) |
| 1 | Account | Y | Account ID |
| 48 | SecurityID | Y | ISIN code |
| 22 | SecurityIDSource | Y | 4 = ISIN |
| 54 | Side | Y | 1=BUY, 2=SELL |
| 38 | OrderQty | Y | Order quantity |
| 40 | OrdType | Y | 1=MARKET, 2=LIMIT |
| 44 | Price | N | Limit price (required for LIMIT) |
| 59 | TimeInForce | N | 0=DAY, 1=GTC, 6=GTD |
| 126 | ExpireTime | N | Required if TIF=6 (GTD) |
Example Order#
8=FIXT.1.1|9=XXX|35=D|
11=ORDER-123456|1=ACC-001|
48=DE000BASF111|22=4|
54=1|38=1000000|40=2|44=1.0850|
59=1|
10=XXX|
ExecutionReport (35=8)#
Purpose:
The ExecutionReport message is the universal response for all order-related activities. It confirms order acceptance, reports fills, acknowledges cancellations and modifications, and provides status updates. Every order action results in an ExecutionReport.When to Use:
Execution reports are sent by the server, not requested directly. Clients receive ExecutionReports in response to:NewOrderSingle submissions (ExecType=NEW)
OrderCancelRequest submissions (ExecType=CANCELED)
OrderCancelReplaceRequest submissions (ExecType=REPLACED)
OrderStatusRequest queries (ExecType=ORDER_STATUS)
Order fills from market matching (ExecType=FILL)
Order rejections (ExecType=REJECTED)
Business Context:
ExecutionReports are the single source of truth for order state. They provide confirmation of every order lifecycle event, enabling clients to maintain accurate order books, track fills, reconcile positions, and audit trading activity. The ExecType and OrdStatus fields together describe the complete state of each order.| Tag | Name | Required | Description |
|---|
| 37 | OrderID | Y | Server-generated order ID (UUID) |
| 11 | ClOrdID | Y | Client order ID (from request) |
| 41 | OrigClOrdID | N | Original ClOrdID (for cancel/replace) |
| 17 | ExecID | Y | Execution ID (UUID) |
| 150 | ExecType | Y | Execution type (see below) |
| 39 | OrdStatus | Y | Order status (see below) |
| 54 | Side | Y | 1=BUY, 2=SELL |
| 38 | OrderQty | Y | Order quantity |
| 48 | SecurityID | Y | ISIN code |
| 22 | SecurityIDSource | Y | 4 = ISIN |
| 44 | Price | Y | Order price |
| 40 | OrdType | N | 1=MARKET, 2=LIMIT |
| 59 | TimeInForce | N | 0=DAY, 1=GTC, 6=GTD |
| 126 | ExpireTime | N | Expiration timestamp |
| 58 | Text | N | Rejection reason (if applicable) |
ExecType Values (Tag 150)#
| Value | Description | When Sent |
|---|
| 0 | NEW | Order accepted |
| 4 | CANCELED | Order cancelled |
| 5 | REPLACED | Order replaced/modified |
| 8 | REJECTED | Order rejected |
| C | EXPIRED | Order expired |
| F | FILL/TRADE | Order filled |
| I | ORDER_STATUS | Status request response |
OrdStatus Values (Tag 39)#
| Value | Description |
|---|
| 0 | NEW |
| 1 | PARTIALLY_FILLED |
| 2 | FILLED |
| 4 | CANCELED |
| 5 | REPLACED |
| 8 | REJECTED |
| C | EXPIRED |
Example ExecutionReport (New Order)#
8=FIXT.1.1|9=XXX|35=8|
37=550e8400-e29b-41d4-a716-446655440000|
11=ORDER-123456|
17=660e8400-e29b-41d4-a716-446655440000|
150=0|39=0|
54=1|38=1000000|48=DE000BASF111|22=4|44=1.0850|
10=XXX|
OrderStatusRequest (35=H)#
Purpose:
The OrderStatusRequest queries the current state of an order. It's useful for reconciliation, recovering state after reconnection, or checking order status without waiting for unsolicited updates.After reconnecting to recover order state
To check if an order is still active
For periodic reconciliation of order books
When ExecutionReports may have been missed
Business Context:
OrderStatusRequest provides on-demand order state verification. While ExecutionReports are sent automatically for all order events, status requests allow clients to proactively query order state, which is particularly valuable during connection recovery or when implementing audit processes.| Tag | Name | Required | Description |
|---|
| 11 | ClOrdID | Y | Client order ID |
| 790 | OrdStatusReqID | Y | Unique status request ID |
Example Request#
8=FIXT.1.1|9=XXX|35=H|
11=ORDER-123456|790=STATUS-001|
10=XXX|
Response: ExecutionReport (35=8) with ExecType=I (ORDER_STATUS)
OrderCancelRequest (35=F)#
Purpose:
The OrderCancelRequest attempts to cancel an existing order. Cancellation success depends on order state - orders that are already filled or in the process of filling may not be cancellable.To cancel resting limit orders
When changing trading strategy or risk limits
Before market close to avoid overnight exposure
In response to market condition changes
As part of order management workflows
Business Context:
Order cancellation is a critical risk management tool. Traders need the ability to remove resting orders quickly when market conditions change or when orders are no longer aligned with trading objectives. The platform processes cancellations on a best-effort basis - if an order has already matched, the cancellation will be rejected.| Tag | Name | Required | Description |
|---|
| 11 | ClOrdID | Y | New unique ID for this cancel request |
| 41 | OrigClOrdID | Y | ClOrdID of order to cancel |
Example Cancel Request#
8=FIXT.1.1|9=XXX|35=F|
11=CANCEL-789|
41=ORDER-123456|
10=XXX|
Response: ExecutionReport (35=8) with ExecType=4 (CANCELED)
OrderCancelReplaceRequest (35=G)#
Purpose:
The OrderCancelReplaceRequest modifies an existing order's price, quantity, or time-in-force parameters. It's an atomic operation - the original order is cancelled and a new order is created with updated parameters.To improve price on resting limit orders
To increase or decrease order quantity
To extend order validity (change TimeInForce or ExpireTime)
When market conditions warrant order adjustment
As part of algorithmic trading strategies
Business Context:
Order modification allows traders to adapt to changing market conditions without the two-step process of cancel-then-new. This reduces timing risk and ensures continuous market presence. The platform handles replace requests atomically - either the modification succeeds completely, or the original order remains unchanged.| Tag | Name | Required | Description |
|---|
| 11 | ClOrdID | Y | Client order ID (from original order) |
| 40 | OrdType | Y | 1=MARKET, 2=LIMIT |
| 44 | Price | N | New limit price |
| 38 | OrderQty | N | New quantity |
| 59 | TimeInForce | N | 0=DAY, 1=GTC, 6=GTD |
| 126 | ExpireTime | N | Required if TIF=6 |
Example Replace Request#
8=FIXT.1.1|9=XXX|35=G|
11=ORDER-123456|
40=2|44=1.0875|38=1500000|
10=XXX|
Response: ExecutionReport (35=8) with ExecType=5 (REPLACED)Modified at 2026-03-09 15:06:12