Execution 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).
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
Responses
200
ExecutionReport (35=8) field reference.
35=8) field reference.Response Body
object
ExecutionReport (35=8). Server → client. Lifecycle events for NewOrderSingle, cancels,
fills, rejects, and OrderStatusRequest (150=I).
Correlate with ClOrdID (11) and OrderID (37). ExecType=F is used for all fills.
Use OrdStatus (39) and LeavesQty (151) for working vs terminal state — not 150=F
alone. Terminal Filled (39=2, typically 151=0) is usually on the following Order
Status report (150=I), not on the last fill.
-
accountstringOptional Trading account ID (Go account ID) -
avgPxstring requiredRequired. Average fill price (0if unfilled). -
clOrdIDstring requiredRequired. Client order id.NONEon cancel reports (PendingCancel / Canceled) and when the order has no client id. -
cumQtystring requiredRequired. Total quantity filled so far. -
currencystringOptional. Quantity currency for tag 38. -
execIDstring requiredRequired. Unique id for this ExecutionReport. -
lastPxstringConditional. This fill's price. Present only when ExecType = F (Trade). Omitted otherwise. -
lastQtystringConditional. This fill's quantity. Present only when ExecType = F (Trade). Omitted otherwise. -
orderIDstring requiredRequired. BitGo order UUID.NONEon some reject reports. -
orderQtystringOptional. Original order quantity echoed from the NewOrderSingle. -
ordStatusstring enum requiredRequired. Current order state:APending New,0New,1Partially Filled,2Filled,4Canceled,6Pending Cancel,8Rejected.012468A -
ordTypestring enumOptional. Echoed from the original NewOrderSingle.1234 -
origClOrdIDstringOptional / Conditional. Set on cancel-related ERs to the original NOS ClOrdID. -
pricestringOptional. Limit price echoed from the original NewOrderSingle. -
sidestring enum requiredRequired.1Buy,2Sell.7Undisclosed may appear on some reject reports.127 -
symbolstring requiredRequired. Product echoed from the NewOrderSingle.N/Aon some reject reports. -
textstringOptional / Conditional. Human-readable reject detail. Present on rejects (150=8). -
timeInForcestring enumOptional. Echoed from the original NewOrderSingle.1346 -
transactTimestring requiredRequired. UTC business timestamp for this report. -
stopPxstringOptional. Stop/trigger price echoed from the original NewOrderSingle. -
ordRejReasoninteger enumConditional. Present only when ExecType = 8 (Rejected).1Unknown symbol,2Market unavailable,3OrderExceedsLimit,6Duplicate ClOrdID,15UnknownAccount,99Other (see Text).12361599 -
execTypestring enum requiredRequired. Event type:APendingNew,0New,FTrade (partial or full),6PendingCancel,4Canceled,8Rejected,IOrder Status (response to35=H, and terminal status summary after a full fill).0468AFI -
leavesQtystring requiredRequired. Quantity still open. Use together withOrdStatus(39) for working vs terminal state. On terminal Canceled reports (150=4/39=4) this stays at the open quantity at cancel time; it is not reset to0(39=4is canceled even when151>0). On fills,151=0with39=1is not yet terminal Filled — wait for39=2(typically on150=I). -
effectiveTimestringOptional. Scheduled activation time echoed from NOS. -
grossTradeAmtstringOptional. Cumulative filled quote quantity (equivalent to RESTfilledQuoteQuantity). -
targetStrategystring enumOptional. Algo strategy echoed from the original order (TTWAP,SSteadyPace).TS -
noStrategyParametersintegerOptional. Strategy param group count echoed from NOS for algo orders. -
strategyParameterNamestringOptional. Parameter name within group 957. -
strategyParameterTypestring enumOptional. Populated by the server on echoed strategy parameters:1= Int,6= Float,14= String, based on the parameter's inferred type.1614 -
strategyParameterValuestringOptional. Parameter value within group 957. -
fundingTypestring enumOptional.1Funded,2Margin. Echoed from the original order.12