FIX ExecutionReport explained
An ExecutionReport (35=8) communicates an order event and its current state. It can acknowledge an order, report a fill, confirm a cancellation, or answer a status request.
Read a partial-fill report
This synthetic FIX 4.4 report records a fill of 40 shares at 185.50 against an order for 100 shares. Pipes stand in for the wire SOH delimiter.
8=FIX.4.4|9=200|35=8|49=BROKER|56=CLIENT|34=2|52=20260901-14:30:02.000|37=VENUE-001|17=EXEC-002|11=DOC-001|150=F|39=1|38=100|32=40|31=185.50|151=60|14=40|6=185.50|55=AAPL|54=1|40=2|44=185.50|60=20260901-14:30:02.000|10=026|| Tag | Value | Meaning in this report |
|---|---|---|
| 35 · MsgType | 8 | ExecutionReport |
| ClOrdID (11) | DOC-001 | Client’s order identifier |
| OrderID (37) | VENUE-001 | Sell-side order identifier |
| ExecID (17) | EXEC-002 | Identifier of this report |
| ExecType (150) | F | Trade event |
| OrdStatus (39) | 1 | Order is partially filled |
| 32 · LastQty | 40 | Quantity filled by this trade |
| 31 · LastPx | 185.50 | Price of this trade |
| 14 · CumQty | 40 | Total quantity filled so far |
| 151 · LeavesQty | 60 | Quantity still open |
| 6 · AvgPx | 185.50 | Average price of fills so far |
ExecType vs OrdStatus
ExecType (150) explains why the report was sent. OrdStatus (39) describes the order’s current state. Their values do not have to match.
| FIX 4.4 event | ExecType | OrdStatus |
|---|---|---|
| Order acknowledged | 0 · New | 0 · New |
| Part of the order trades | F · Trade | 1 · Partially filled |
| The remainder trades | F · Trade | 2 · Filled |
| A partially filled order is replaced | 5 · Replaced | 1 · Partially filled |
Check the quantities
For this active order, OrderQty (38) = CumQty (14) + LeavesQty (151): 100 = 40 + 60. LastQty is the latest trade’s quantity, not the cumulative total.
After a cancellation, LeavesQty can be zero even though the order was not fully filled. Trade corrections, trade cancels, and pending states also need the surrounding reports; a single quantity equation is not a complete validator.
Inspect the example in FIXtags
Open the sample above to inspect its decoded fields. For the surrounding story, follow the cancel/replace walkthrough, which includes the initial order, acknowledgement, fill, replacement, and cancellation.
In your own log, filter with @MsgType == @ExecutionReport or 35=8, then select a report. Use Trace this order to include the related requests as well.