35=8Execution Report (35=8)
The server sends ExecutionReport (35=8) to the client over TLS/TCP. This is not an HTTP response.
Sent in response to New Order Single, Order Cancel Request, and Order Status Request. Also sent unsolicited for fills and terminal state transitions.
Exec types (tag 150):
| ExecType | Name | Description |
|---|---|---|
A |
PendingNew | Order received, not yet active |
0 |
New | Order live with no fills |
F |
Trade | Fill (partial or completing). Use OrdStatus (39) and LeavesQty (151) for working vs terminal state — not 150=F alone. Completing fill often still 39=1 with 151=0; terminal Filled (39=2) typically on following 150=I |
6 |
PendingCancel | Cancel request received, awaiting confirmation |
4 |
Canceled | Order canceled (may include partial fills) |
8 |
Rejected | Order rejected; see OrdRejReason (103) and Text (58) |
I |
Order Status | Response to OrderStatusRequest (35=H). Also sent as a terminal status summary after the order is fully filled (following fill reports with 150=F). |
Fill reports (150=F) include lastQty (32) and lastPx (31) for the individual fill,
plus running totals on cumQty (14) and avgPx (6). Both partial and completing fills use
150=F. Use OrdStatus (39) and LeavesQty (151) for working vs terminal state — not
ExecType alone. The last fill often still reports 39=1 even when 151=0; terminal
Filled (39=2, typically with 151=0) arrives on the following Order Status report
(150=I), not on the fill itself.
Reject reports (150=8, 39=8) include ordRejReason (103) and text (58).
Cancel reports: LeavesQty (151) on the Canceled report (150=4) stays at the open
quantity at cancel time; it is not reset to 0. Use OrdStatus (39) together with
LeavesQty (151) for terminal-state detection — 39=4 is canceled even when 151 > 0.
OrdStatus (tag 39):
| Value | Name |
|---|---|
A |
Pending New |
0 |
New |
1 |
Partially Filled |
2 |
Filled |
4 |
Canceled |
6 |
Pending Cancel |
8 |
Rejected |
OrdRejReason (tag 103) on rejects: 1 Unknown symbol, 2 Market unavailable,
3 OrderExceedsLimit, 6 Duplicate ClOrdID, 15 UnknownAccount, 99 Other (see Text).
Message fields
| Tag | Field | Required | Description |
|---|---|---|---|
| 1 | Account | Optional | Optional Trading account ID (Go account ID) |
| 6 | AvgPx | Required | Required. Average fill price ( |
| 11 | ClOrdID | Required | Required. Client order id. |
| 14 | CumQty | Required | Required. Total quantity filled so far. |
| 15 | Currency | Optional | Optional. Quantity currency for tag 38. |
| 17 | ExecID | Required | Required. Unique id for this ExecutionReport. |
| 31 | LastPx | Optional | Conditional. This fill's price. Present only when ExecType = F (Trade). Omitted otherwise. |
| 32 | LastQty | Optional | Conditional. This fill's quantity. Present only when ExecType = F (Trade). Omitted otherwise. |
| 37 | OrderID | Required | Required. BitGo order UUID. |
| 38 | OrderQty | Optional | Optional. Original order quantity echoed from the NewOrderSingle. |
| 39 | OrdStatus | Required | Required. Current order state:
|
| 40 | OrdType | Optional | Optional. Echoed from the original NewOrderSingle. |
| 41 | OrigClOrdID | Optional | Optional / Conditional. Set on cancel-related ERs to the original NOS ClOrdID. |
| 44 | Price | Optional | Optional. Limit price echoed from the original NewOrderSingle. |
| 54 | Side | Required | Required. |
| 55 | Symbol | Required | Required. Product echoed from the NewOrderSingle. |
| 58 | Text | Optional | Optional / Conditional. Human-readable reject detail. Present on rejects ( |
| 59 | TimeInForce | Optional | Optional. Echoed from the original NewOrderSingle. |
| 60 | TransactTime | Required | Required. UTC business timestamp for this report. |
| 99 | StopPx | Optional | Optional. Stop/trigger price echoed from the original NewOrderSingle. |
| 103 | OrdRejReason | Optional | Conditional. Present only when ExecType = 8 (Rejected).
|
| 150 | ExecType | Required | Required. Event type:
|
| 151 | LeavesQty | Required | Required. Quantity still open. Use together with |
| 168 | EffectiveTime | Optional | Optional. Scheduled activation time echoed from NOS. |
| 381 | GrossTradeAmt | Optional | Optional. Cumulative filled quote quantity (equivalent to REST |
| 847 | TargetStrategy | Optional | Optional. Algo strategy echoed from the original order ( |
| 957 | NoStrategyParameters | Optional | Optional. Strategy param group count echoed from NOS for algo orders. |
| 958 | StrategyParameterName | Optional | Optional. Parameter name within group 957. |
| 959 | StrategyParameterType | Optional | Optional. Populated by the server on echoed strategy parameters: |
| 960 | StrategyParameterValue | Optional | Optional. Parameter value within group 957. |
| 5001 | FundingType | Optional | Optional. |
Examples
Examples (pipe-delimited FIX) for a limit GTC funded buy:
PendingNew (150=A, 39=A):
8=FIX.4.4|9=343|35=8|34=83|49=BITGO|52=20260618-12:37:15.365|56=0123456789abcdef0123456789abcdef|1=0123456789abcdef0123456789abcdef|6=0|11=limit-gtc-funded-004|14=0|15=TBTC|17=afd7ea59-2d0b-4ec2-83ee-637ed1ad8f73|37=96b407cf-ec38-404c-b849-0d53f1ee923b|38=0.001|39=A|40=2|44=83220|54=1|55=TBTC-TUSD*|59=1|60=20260618-12:37:15.292|150=A|151=0.001|381=0|5001=1|10=XXX
New (150=0, 39=0):
8=FIX.4.4|9=343|35=8|34=84|49=BITGO|52=20260618-12:37:15.494|56=0123456789abcdef0123456789abcdef|1=0123456789abcdef0123456789abcdef|6=0|11=limit-gtc-funded-004|14=0|15=TBTC|17=bb641166-c7d5-469a-9354-26133386e67f|37=96b407cf-ec38-404c-b849-0d53f1ee923b|38=0.001|39=0|40=2|44=83220|54=1|55=TBTC-TUSD*|59=1|60=20260618-12:37:15.487|150=0|151=0.001|381=0|5001=1|10=XXX
Fill (150=F, 39=1). Completing fills may still show 39=1 with 151=0; terminal Filled is on 150=I:
8=FIX.4.4|9=369|35=8|34=85|49=BITGO|52=20260618-12:37:15.719|56=0123456789abcdef0123456789abcdef|1=0123456789abcdef0123456789abcdef|6=64310|11=limit-gtc-funded-004|14=0.001|15=TBTC|17=b4ced93f-e9d1-4c75-ac6d-272630d02c0f|31=64310|32=0.001|37=96b407cf-ec38-404c-b849-0d53f1ee923b|38=0.001|39=1|40=2|44=83220|54=1|55=TBTC-TUSD*|59=1|60=20260618-12:37:15.638|150=F|151=0|381=64.31|5001=1|10=XXX
Order Status (150=I, 39=2) after a full fill (terminal Filled). Also used as the response to OrderStatusRequest (35=H):
8=FIX.4.4|9=351|35=8|34=86|49=BITGO|52=20260618-12:37:15.756|56=0123456789abcdef0123456789abcdef|1=0123456789abcdef0123456789abcdef|6=64310|11=limit-gtc-funded-004|14=0.001|15=TBTC|17=ba23f31a-92a0-4774-8fe4-2a730a38a904|37=96b407cf-ec38-404c-b849-0d53f1ee923b|38=0.001|39=2|40=2|44=83220|54=1|55=TBTC-TUSD*|59=1|60=20260618-12:37:15.751|150=I|151=0|381=64.31|5001=1|10=XXX
Reject (150=8, 39=8), e.g. order not found on status request:
8=FIX.4.4|9=177|35=8|34=7|49=BITGO|52=20260528-12:00:00.001|56=0123456789abcdef0123456789abcdef|150=8|39=8|11=8b1d4f55-6e7c-4a8d-9b02-1c3d5e7f9000|37=NONE|55=N/A|54=7|103=99|58=order not found|10=XXX
PendingCancel (150=6, 39=6) then Canceled (150=4, 39=4).
Note: 11 (ClOrdID) is NONE on server-generated cancel reports; 41 (OrigClOrdID) carries the original client order ID.
151 (LeavesQty) reflects the open quantity at cancel time and is not reset to 0:
8=FIX.4.4|9=323|35=8|49=BITGO|56=0123456789abcdef0123456789abcdef|34=105|52=20260618-12:46:28.719|1=0123456789abcdef0123456789abcdef|6=0|11=NONE|14=0|15=TBTC|17=exec-pending-cxl|37=80115a50-1542-48b7-92f9-03d99194ade3|38=0.001|39=6|40=3|41=doc-ord-006|54=2|55=TBTC-TUSD*|59=1|60=20260618-12:46:28.685|99=48000|150=6|151=0.001|381=0|5001=1|10=XXX
8=FIX.4.4|9=320|35=8|49=BITGO|56=0123456789abcdef0123456789abcdef|34=106|52=20260618-12:46:28.953|1=0123456789abcdef0123456789abcdef|6=0|11=NONE|14=0|15=TBTC|17=exec-canceled|37=80115a50-1542-48b7-92f9-03d99194ade3|38=0.001|39=4|40=3|41=doc-ord-006|54=2|55=TBTC-TUSD*|59=1|60=20260618-12:46:28.948|99=48000|150=4|151=0.001|381=0|5001=1|10=XXX