Skip to content
FIXtags·Docs
Working with FIX · FIX 4.4

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.

FIX 4.4 · synthetic message
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|
TagValueMeaning in this report
35 · MsgType8ExecutionReport
ClOrdID (11)DOC-001Client’s order identifier
OrderID (37)VENUE-001Sell-side order identifier
ExecID (17)EXEC-002Identifier of this report
ExecType (150)FTrade event
OrdStatus (39)1Order is partially filled
32 · LastQty40Quantity filled by this trade
31 · LastPx185.50Price of this trade
14 · CumQty40Total quantity filled so far
151 · LeavesQty60Quantity still open
6 · AvgPx185.50Average 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 eventExecTypeOrdStatus
Order acknowledged0 · New0 · New
Part of the order tradesF · Trade1 · Partially filled
The remainder tradesF · Trade2 · Filled
A partially filled order is replaced5 · Replaced1 · 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.