FIX 4.0 vs FIX 4.2: What Changed
FIX 4.2 grew FIX 4.0 from an order-entry protocol into one that also carries market data, security definitions and trading session status. It also adds the fields that make Execution Reports easier to read and the reason codes that make rejects easier to act on.
- Message types
- 27 to 46
- Messages added
- 19
- Fields
- 138 to 405
- Fields added / removed
- 267 / 0
BeginString: FIX.4.0 and FIX.4.2. Counts come from the standard data dictionaries.
Migrating from FIX 4.0 to FIX 4.2
- FIX 4.1 adds ExecType (150) and LeavesQty (151) to the Execution Report, so the event and the open quantity no longer have to be inferred.
- FIX 4.2 adds the market data messages (Market Data Request (35=V), Market Data Snapshot Full Refresh (35=W), Market Data Incremental Refresh (35=X), Market Data Request Reject (35=Y)), security definition and status messages, trading session status and mass quoting.
- Business Message Reject (35=j) is new in FIX 4.2, and the session Reject gains RefTagID (371), RefMsgType (372) and SessionRejectReason (373).
- TransactTime (60) becomes a required field on New Order Single, Order Cancel Request and Cancel/Replace.
- ExecInst (18) can carry several space-separated instructions instead of one.
- ResendRequest can ask for everything after a number by sending EndSeqNo (16) = 0; FIX 4.0 and 4.1 used 999999.
- ListNoOrds (68) is renamed TotNoOrders.
Value changes in key fields
Enumerated values added or removed between the two versions.
MsgType (35)
Added in FIX 4.2: T Settlement Instructions; V Market Data Request; W Market Data Snapshot Full Refresh; X Market Data Incremental Refresh; Y Market Data Request Reject; Z Quote Cancel; a Quote Status Request; b Mass Quote Ack; c Security Definition Request; d Security Definition; e Security Status Request; f Security Status; g Trading Session Status Request; h Trading Session Status; i Mass Quote; j Business Message Reject; k Bid Request; l Bid Response; m List Strike Price
OrdType (40)
Added in FIX 4.2: F Forex limit; G Forex swap; H Forex previously quoted; I Funari
ExecType (150)
Not in FIX 4.0; new in FIX 4.2.
Values: 0 New; 1 Partial fill; 2 Fill; 3 Done for day; 4 Canceled; 5 Replaced; 6 Pending cancel; 7 Stopped; 8 Rejected; 9 Suspended; A Pending new; B Calculated; C Expired; D Restated; E Pending replace
SessionRejectReason (373)
Not in FIX 4.0; new in FIX 4.2.
Values: 0 Invalid tag number; 1 Required tag missing; 2 Tag not defined for this message type; 3 Undefined tag; 4 Tag specified without a value; 5 Value is incorrect; 6 Incorrect data format for value; 7 Decryption problem; 8 Signature problem; 9 CompID problem; 10 Sending time accuracy problem; 11 Invalid MsgType
OrdRejReason (103)
Added in FIX 4.2: 5 Unknown order; 6 Duplicate order; 7 Duplicate of a verbally communicated order; 8 Stale order
CxlRejReason (102)
Added in FIX 4.2: 2 Broker / exchange option; 3 Order already in pending cancel or pending replace status
Messages added in FIX 4.2 (19)
- Settlement Instructions 35=T
- Market Data Request 35=V
- Market Data Snapshot Full Refresh 35=W
- Market Data Incremental Refresh 35=X
- Market Data Request Reject 35=Y
- Quote Cancel 35=Z
- Quote Status Request 35=a
- Mass Quote Ack 35=b
- Security Definition Request 35=c
- Security Definition 35=d
- Security Status Request 35=e
- Security Status 35=f
- Trading Session Status Request 35=g
- Trading Session Status 35=h
- Mass Quote 35=i
- Business Message Reject 35=j
- Bid Request 35=k
- Bid Response 35=l
- List Strike Price 35=m
Field changes in the core order messages
6 messages most sessions carry, compared field by field.
New Order Single 35=D
38 fields added, counting fields inside components and repeating groups.
Required in FIX 4.0, optional in FIX 4.2: OrderQty (38)
Added: TransactTime (60), PositionEffect (77), NoAllocs (78), AllocAccount (79), AllocQty (80), CashOrderQty (152), SecurityType (167), EffectiveTime (168), OrderQty2 (192), SettlDate2 (193), MaturityMonthYear (200), PutOrCall (201), StrikePrice (202), CoveredOrUncovered (203), CustomerOrFirm (204), MaturityDay (205), OptAttribute (206), SecurityExchange (207), MaxShow (210), PegOffsetValue (211), CouponRate (223), ContractMultiplier (231), TradingSessionID (336), EncodedIssuerLen (348), EncodedIssuer (349), EncodedSecurityDescLen (350), EncodedSecurityDesc (351), EncodedTextLen (354), EncodedText (355), ComplianceID (376), SolicitedFlag (377), NoTradingSessions (386), DiscretionInst (388), DiscretionOffsetValue (389), GTBookingInst (427), ExpireDate (432), ClearingFirm (439), ClearingAccount (440)
Order Cancel/Replace Request 35=G
39 fields added, counting fields inside components and repeating groups.
Required in FIX 4.0, optional in FIX 4.2: OrderQty (38)
Added: TransactTime (60), PositionEffect (77), NoAllocs (78), AllocAccount (79), AllocQty (80), LocateReqd (114), CashOrderQty (152), SecurityType (167), EffectiveTime (168), OrderQty2 (192), SettlDate2 (193), MaturityMonthYear (200), PutOrCall (201), StrikePrice (202), CoveredOrUncovered (203), CustomerOrFirm (204), MaturityDay (205), OptAttribute (206), SecurityExchange (207), MaxShow (210), PegOffsetValue (211), CouponRate (223), ContractMultiplier (231), TradingSessionID (336), EncodedIssuerLen (348), EncodedIssuer (349), EncodedSecurityDescLen (350), EncodedSecurityDesc (351), EncodedTextLen (354), EncodedText (355), ComplianceID (376), SolicitedFlag (377), NoTradingSessions (386), DiscretionInst (388), DiscretionOffsetValue (389), GTBookingInst (427), ExpireDate (432), ClearingFirm (439), ClearingAccount (440)
Order Cancel Request 35=F
20 fields added, 1 removed, counting fields inside components and repeating groups.
Required in FIX 4.0, optional in FIX 4.2: OrderQty (38)
Removed: CxlType (125)
Added: Account (1), TransactTime (60), CashOrderQty (152), SecurityType (167), MaturityMonthYear (200), PutOrCall (201), StrikePrice (202), MaturityDay (205), OptAttribute (206), SecurityExchange (207), CouponRate (223), ContractMultiplier (231), EncodedIssuerLen (348), EncodedIssuer (349), EncodedSecurityDescLen (350), EncodedSecurityDesc (351), EncodedTextLen (354), EncodedText (355), ComplianceID (376), SolicitedFlag (377)
Execution Report 35=8
53 fields added, 5 removed, counting fields inside components and repeating groups.
Required in FIX 4.0, optional in FIX 4.2: LastPx (31), LastQty (32), OrderQty (38)
Removed: NetMoney (118), NoMiscFees (136), MiscFeeAmt (137), MiscFeeCurr (138), MiscFeeType (139)
Order Cancel Reject 35=9
8 fields added, counting fields inside components and repeating groups.
Added: Account (1), OrdStatus (39), OrigClOrdID (41), TransactTime (60), SecondaryOrderID (198), EncodedTextLen (354), EncodedText (355), CxlRejResponseTo (434)
Logon 35=A
5 fields added, counting fields inside components and repeating groups.
Added: ResetSeqNumFlag (141), RefMsgType (372), MaxMessageSize (383), NoMsgTypes (384), MsgDirection (385)
Fields renamed (1)
Same tag number and wire format, new name. Code generated from a dictionary changes.
| Tag | FIX 4.0 name | FIX 4.2 name |
|---|---|---|
| 68 | ListNoOrds | TotNoOrders |
Fields removed (0)
No field of FIX 4.0 is missing from FIX 4.2.
Fields added (267)
Show 267 fields
- 51 SendingDate
- 141 ResetSeqNumFlag
- 142 SenderLocationID
- 143 TargetLocationID
- 144 OnBehalfOfLocationID
- 145 DeliverToLocationID
- 146 NoRelatedSym
- 147 Subject
- 148 Headline
- 149 URLLink
- 150 ExecType
- 151 LeavesQty
- 152 CashOrderQty
- 153 AllocAvgPx
- 154 AllocNetMoney
- 155 SettlCurrFxRate
- 156 SettlCurrFxRateCalc
- 157 NumDaysInterest
- 158 AccruedInterestRate
- 159 AccruedInterestAmt
- 160 SettlInstMode
- 161 AllocText
- 162 SettlInstID
- 163 SettlInstTransType
- 164 EmailThreadID
- 165 SettlInstSource
- 166 SettlLocation
- 167 SecurityType
- 168 EffectiveTime
- 169 StandInstDbType
- 170 StandInstDbName
- 171 StandInstDbID
- 172 SettlDeliveryType
- 173 SettlDepositoryCode
- 174 SettlBrkrCode
- 175 SettlInstCode
- 176 SecuritySettlAgentName
- 177 SecuritySettlAgentCode
- 178 SecuritySettlAgentAcctNum
- 179 SecuritySettlAgentAcctName
- 180 SecuritySettlAgentContactName
- 181 SecuritySettlAgentContactPhone
- 182 CashSettlAgentName
- 183 CashSettlAgentCode
- 184 CashSettlAgentAcctNum
- 185 CashSettlAgentAcctName
- 186 CashSettlAgentContactName
- 187 CashSettlAgentContactPhone
- 188 BidSpotRate
- 189 BidForwardPoints
- 190 OfferSpotRate
- 191 OfferForwardPoints
- 192 OrderQty2
- 193 FutSettDate2
- 194 LastSpotRate
- 195 LastForwardPoints
- 196 AllocLinkID
- 197 AllocLinkType
- 198 SecondaryOrderID
- 199 NoIOIQualifiers
- 200 MaturityMonthYear
- 201 PutOrCall
- 202 StrikePrice
- 203 CoveredOrUncovered
- 204 CustomerOrFirm
- 205 MaturityDay
- 206 OptAttribute
- 207 SecurityExchange
- 208 NotifyBrokerOfCredit
- 209 AllocHandlInst
- 210 MaxShow
- 211 PegDifference
- 212 XmlDataLen
- 213 XmlData
- 214 SettlInstRefID
- 215 NoRoutingIDs
- 216 RoutingType
- 217 RoutingID
- 218 SpreadToBenchmark
- 219 Benchmark
- 223 CouponRate
- 231 ContractMultiplier
- 262 MDReqID
- 263 SubscriptionRequestType
- 264 MarketDepth
- 265 MDUpdateType
- 266 AggregatedBook
- 267 NoMDEntryTypes
- 268 NoMDEntries
- 269 MDEntryType
- 270 MDEntryPx
- 271 MDEntrySize
- 272 MDEntryDate
- 273 MDEntryTime
- 274 TickDirection
- 275 MDMkt
- 276 QuoteCondition
- 277 TradeCondition
- 278 MDEntryID
- 279 MDUpdateAction
- 280 MDEntryRefID
- 281 MDReqRejReason
- 282 MDEntryOriginator
- 283 LocationID
- 284 DeskID
- 285 DeleteReason
- 286 OpenCloseSettleFlag
- 287 SellerDays
- 288 MDEntryBuyer
- 289 MDEntrySeller
- 290 MDEntryPositionNo
- 291 FinancialStatus
- 292 CorporateAction
- 293 DefBidSize
- 294 DefOfferSize
- 295 NoQuoteEntries
- 296 NoQuoteSets
- 297 QuoteStatus
- 298 QuoteCancelType
- 299 QuoteEntryID
- 300 QuoteRejectReason
- 301 QuoteResponseLevel
- 302 QuoteSetID
- 303 QuoteRequestType
- 304 TotQuoteEntries
- 305 UnderlyingIDSource
- 306 UnderlyingIssuer
- 307 UnderlyingSecurityDesc
- 308 UnderlyingSecurityExchange
- 309 UnderlyingSecurityID
- 310 UnderlyingSecurityType
- 311 UnderlyingSymbol
- 312 UnderlyingSymbolSfx
- 313 UnderlyingMaturityMonthYear
- 314 UnderlyingMaturityDay
- 315 UnderlyingPutOrCall
- 316 UnderlyingStrikePrice
- 317 UnderlyingOptAttribute
- 318 UnderlyingCurrency
- 319 RatioQty
- 320 SecurityReqID
- 321 SecurityRequestType
- 322 SecurityResponseID
- 323 SecurityResponseType
- 324 SecurityStatusReqID
- 325 UnsolicitedIndicator
- 326 SecurityTradingStatus
- 327 HaltReasonChar
- 328 InViewOfCommon
- 329 DueToRelated
- 330 BuyVolume
- 331 SellVolume
- 332 HighPx
- 333 LowPx
- 334 Adjustment
- 335 TradSesReqID
- 336 TradingSessionID
- 337 ContraTrader
- 338 TradSesMethod
- 339 TradSesMode
- 340 TradSesStatus
- 341 TradSesStartTime
- 342 TradSesOpenTime
- 343 TradSesPreCloseTime
- 344 TradSesCloseTime
- 345 TradSesEndTime
- 346 NumberOfOrders
- 347 MessageEncoding
- 348 EncodedIssuerLen
- 349 EncodedIssuer
- 350 EncodedSecurityDescLen
- 351 EncodedSecurityDesc
- 352 EncodedListExecInstLen
- 353 EncodedListExecInst
- 354 EncodedTextLen
- 355 EncodedText
- 356 EncodedSubjectLen
- 357 EncodedSubject
- 358 EncodedHeadlineLen
- 359 EncodedHeadline
- 360 EncodedAllocTextLen
- 361 EncodedAllocText
- 362 EncodedUnderlyingIssuerLen
- 363 EncodedUnderlyingIssuer
- 364 EncodedUnderlyingSecurityDescLen
- 365 EncodedUnderlyingSecurityDesc
- 366 AllocPrice
- 367 QuoteSetValidUntilTime
- 368 QuoteEntryRejectReason
- 369 LastMsgSeqNumProcessed
- 370 OnBehalfOfSendingTime
- 371 RefTagID
- 372 RefMsgType
- 373 SessionRejectReason
- 374 BidRequestTransType
- 375 ContraBroker
- 376 ComplianceID
- 377 SolicitedFlag
- 378 ExecRestatementReason
- 379 BusinessRejectRefID
- 380 BusinessRejectReason
- 381 GrossTradeAmt
- 382 NoContraBrokers
- 383 MaxMessageSize
- 384 NoMsgTypes
- 385 MsgDirection
- 386 NoTradingSessions
- 387 TotalVolumeTraded
- 388 DiscretionInst
- 389 DiscretionOffset
- 390 BidID
- 391 ClientBidID
- 392 ListName
- 393 TotalNumSecurities
- 394 BidType
- 395 NumTickets
- 396 SideValue1
- 397 SideValue2
- 398 NoBidDescriptors
- 399 BidDescriptorType
- 400 BidDescriptor
- 401 SideValueInd
- 402 LiquidityPctLow
- 403 LiquidityPctHigh
- 404 LiquidityValue
- 405 EFPTrackingError
- 406 FairValue
- 407 OutsideIndexPct
- 408 ValueOfFutures
- 409 LiquidityIndType
- 410 WtAverageLiquidity
- 411 ExchangeForPhysical
- 412 OutMainCntryUIndex
- 413 CrossPercent
- 414 ProgRptReqs
- 415 ProgPeriodInterval
- 416 IncTaxInd
- 417 NumBidders
- 418 TradeType
- 419 BasisPxType
- 420 NoBidComponents
- 421 Country
- 422 TotNoStrikes
- 423 PriceType
- 424 DayOrderQty
- 425 DayCumQty
- 426 DayAvgPx
- 427 GTBookingInst
- 428 NoStrikes
- 429 ListStatusType
- 430 NetGrossInd
- 431 ListOrderStatus
- 432 ExpireDate
- 433 ListExecInstType
- 434 CxlRejResponseTo
- 435 UnderlyingCouponRate
- 436 UnderlyingContractMultiplier
- 437 ContraTradeQty
- 438 ContraTradeTime
- 439 ClearingFirm
- 440 ClearingAccount
- 441 LiquidityNumSecurities
- 442 MultiLegReportingType
- 443 StrikeTime
- 444 ListStatusText
- 445 EncodedListStatusTextLen
- 446 EncodedListStatusText
Version dictionaries
Other comparisons
Field and message data comes from the QuickFIX data dictionaries for FIX 4.0 to 5.0 SP2 and FIXT 1.1, used under the QuickFIX Software License. This product includes software developed by quickfixengine.org (http://www.quickfixengine.org/). Enumerated value names are converted to plain text for reading.