FIX 4.4 vs FIX 4.2
Every difference between the two dictionaries this site covers, computed from the data rather than written by hand. If you are bridging a FIX 4.2 counterparty to a FIX 4.4 venue, this is the list that bites.
By the numbers
- Fields in 4.4
- 912
- Fields in 4.2
- 405
- In both
- 370
- 4.4 only
- 542
- 4.2 only
- 35
- Messages
- 93 vs 46
- Components
- 105 vs 2
FIX 4.2 declares only 2 component blocks — the standard header and trailer — because component blocks postdate it. Everything else is inlined into each message, which is why the two message bodies look so different even where the fields are the same.
Renamed fields (22)
Same tag number, different name. The wire is unaffected — a decoder keyed on tag numbers interoperates — but code and logs written against one name will not match the other.
| Tag | FIX 4.2 name | FIX 4.4 name |
|---|---|---|
| 22 | IDSource | SecurityIDSource |
| 23 | IOIid | IOIID |
| 27 | IOIShares | IOIQty |
| 32 | LastShares | LastQty |
| 33 | LinesOfText | NoLinesOfText |
| 53 | Shares | Quantity |
| 63 | SettlmntTyp | SettlType |
| 64 | FutSettDate | SettlDate |
| 74 | AvgPrxPrecision | AvgPxPrecision |
| 77 | OpenClose | PositionEffect |
| 80 | AllocShares | AllocQty |
| 193 | FutSettDate2 | SettlDate2 |
| 211 | PegDifference | PegOffsetValue |
| 218 | SpreadToBenchmark | Spread |
| 286 | OpenCloseSettleFlag | OpenCloseSettlFlag |
| 297 | QuoteAckStatus | QuoteStatus |
| 304 | TotQuoteEntries | TotNoQuoteEntries |
| 305 | UnderlyingIDSource | UnderlyingSecurityIDSource |
| 327 | HaltReason | HaltReasonChar |
| 389 | DiscretionOffset | DiscretionOffsetValue |
| 393 | TotalNumSecurities | TotNoRelatedSym |
| 418 | TradeType | BidTradeType |
Changed datatypes (43)
These fields kept their tag and name but changed type, so a value legal in one dialect can fail validation in the other.
| Tag | Field | FIX 4.2 | FIX 4.4 |
|---|---|---|---|
| 7 | BeginSeqNo | int | SeqNum |
| 9 | BodyLength | int | Length |
| 16 | EndSeqNo | int | SeqNum |
| 33 | NoLinesOfText | int | NumInGroup |
| 34 | MsgSeqNum | int | SeqNum |
| 36 | NewSeqNo | int | SeqNum |
| 45 | RefSeqNum | int | SeqNum |
| 73 | NoOrders | int | NumInGroup |
| 78 | NoAllocs | int | NumInGroup |
| 85 | NoDlvyInst | int | NumInGroup |
| 124 | NoExecs | int | NumInGroup |
| 136 | NoMiscFees | int | NumInGroup |
| 146 | NoRelatedSym | int | NumInGroup |
| 158 | AccruedInterestRate | float | Percentage |
| 199 | NoIOIQualifiers | int | NumInGroup |
| 211 | PegOffsetValue | PriceOffset | float |
| 215 | NoRoutingIDs | int | NumInGroup |
| 223 | CouponRate | float | Percentage |
| 267 | NoMDEntryTypes | int | NumInGroup |
| 268 | NoMDEntries | int | NumInGroup |
| 272 | MDEntryDate | UTCDate | UTCDateOnly |
| 286 | OpenCloseSettlFlag | char | MultipleValueString |
| 291 | FinancialStatus | char | MultipleValueString |
| 292 | CorporateAction | char | MultipleValueString |
| 295 | NoQuoteEntries | int | NumInGroup |
| 296 | NoQuoteSets | int | NumInGroup |
| 369 | LastMsgSeqNumProcessed | int | SeqNum |
| 382 | NoContraBrokers | int | NumInGroup |
| 383 | MaxMessageSize | int | Length |
| 384 | NoMsgTypes | int | NumInGroup |
| 386 | NoTradingSessions | int | NumInGroup |
| 389 | DiscretionOffsetValue | PriceOffset | float |
| 398 | NoBidDescriptors | int | NumInGroup |
| 402 | LiquidityPctLow | float | Percentage |
| 403 | LiquidityPctHigh | float | Percentage |
| 405 | EFPTrackingError | float | Percentage |
| 407 | OutsideIndexPct | float | Percentage |
| 410 | WtAverageLiquidity | float | Percentage |
| 413 | CrossPercent | float | Percentage |
| 420 | NoBidComponents | int | NumInGroup |
| 421 | Country | String | Country |
| 428 | NoStrikes | int | NumInGroup |
| 435 | UnderlyingCouponRate | float | Percentage |
Renamed messages (4)
| MsgType | FIX 4.2 name | FIX 4.4 name |
|---|---|---|
| D | OrderSingle | NewOrderSingle |
| E | OrderList | NewOrderList |
| J | Allocation | AllocationInstruction |
| b | QuoteAcknowledgement | MassQuoteAcknowledgement |
Enumerated values
Across the 370 shared fields, FIX 4.4 adds 277 enumerated values and drops 38, affecting 47 fields. A value your counterparty sends legally under one dialect can therefore come back as validate/value-not-in-enum under the other.
Note that the symbolic names differ far more than the values do: FIX 4.4 names come from the QuickFIX dictionary in SCREAMING_SNAKE_CASE, FIX 4.2 names from the FIX Repository in PascalCase. Only the on-the-wire value is stable across dialects, which is why every table on this site keys on the value.
Descriptions
Of the 370 shared fields, 175 have a byte-identical description in both dictionaries and 195 differ. Where they differ, the field’s page shows both.