ZagTrader

FIXT.1.1 and ApplVerID Explained

From FIX 5.0 the session layer is its own protocol, FIXT.1.1, and the application version is stated separately. One FIXT.1.1 session can carry FIX 5.0 SP2 messages, or a mix of application versions, without changing the session rules.

What FIXT.1.1 changes

  • BeginString (8) is FIXT.1.1 for every FIX 5.0, 5.0 SP1 and 5.0 SP2 session. It names the session protocol only.
  • The session messages (Logon, Heartbeat, TestRequest, ResendRequest, Reject, SequenceReset, Logout) and their rules stay as in FIX 4.4.
  • The application version is given by DefaultApplVerID (1137) on the Logon and, per message, by ApplVerID (1128).

ApplVerID codes

CodeApplication version
2FIX 4.0
3FIX 4.1
4FIX 4.2
5FIX 4.3
6FIX 4.4
7FIX 5.0
8FIX 5.0 SP1
9FIX 5.0 SP2
10FIX Latest

Both DefaultApplVerID (1137) and ApplVerID (1128) take these codes. Sending the name, such as FIX50SP2, is a common mistake.

The FIXT.1.1 Logon

The Logon must carry DefaultApplVerID (1137). It can also list, for each message type, the application version a side supports, through the NoMsgTypes (384) group with RefMsgType (372), MsgDirection (385) and RefApplVerID (1130).

Both sides agree FIX 5.0 SP2 as the default application version.

  1. 1. Initiator: Logon with 1137=9

    8=FIXT.1.1|9=77|35=A|49=BUYSIDE|56=SELLSIDE|34=1|52=20261020-07:00:00.000|98=0|108=30|1137=9|10=227|
  2. 2. Acceptor: Logon response

    8=FIXT.1.1|9=77|35=A|49=SELLSIDE|56=BUYSIDE|34=1|52=20261020-07:00:00.005|98=0|108=30|1137=9|10=232|

SOH (0x01) is shown as |. BodyLength (9) and CheckSum (10) are calculated as if every | were SOH.

Open this example in the parser

ApplVerID on a message

A message without ApplVerID (1128) uses the default from the Logon. Put ApplVerID in the header only when a message uses another version. CstmApplVerID (1129) names a custom application version, and ApplExtID (1156) an extension pack.

A New Order Single on the default version, then one sent explicitly as FIX 5.0 SP2.

  1. 1. Uses the session default (no 1128)

    8=FIXT.1.1|9=130|35=D|49=BUYSIDE|56=SELLSIDE|34=2|52=20261020-07:00:05.000|11=ORD-3001|55=MSFT|54=1|60=20261020-07:00:05.000|38=100|40=2|44=187.50|10=137|
  2. 2. States its version in the header (1128=9)

    8=FIXT.1.1|9=137|35=D|1128=9|49=BUYSIDE|56=SELLSIDE|34=3|52=20261020-07:00:06.000|11=ORD-3002|55=MSFT|54=1|60=20261020-07:00:06.000|38=100|40=2|44=187.50|10=215|

SOH (0x01) is shown as |. BodyLength (9) and CheckSum (10) are calculated as if every | were SOH.

Open this example in the parser

Engine configuration

  • A FIXT.1.1 session needs two dictionaries: the transport dictionary (FIXT 1.1) for the header, trailer and session messages, and an application dictionary (for example FIX 5.0 SP2) for everything else. In QuickFIX these are the TransportDataDictionary and AppDataDictionary settings.
  • The initiator also needs the default application version configured; QuickFIX calls the setting DefaultApplVerID.

Questions

What is the BeginString for FIX 5.0 SP2?
FIXT.1.1. The application version is carried by DefaultApplVerID (1137) on the Logon and, when needed, ApplVerID (1128) on a message.
Do I need ApplVerID on every message?
No. Messages without it use the DefaultApplVerID agreed at logon. Add it only to messages that use another version.

Reference

Related errors

More guides