Brokeret LogoDocs
FIX API / FIX 5.0/Session Management

Session Management

FIXT 1.1 logon with application version negotiation, heartbeats, and recovery.

FIXT 1.1 Session Layer

FIX 5.0 uses FIXT 1.1 as its transport/session layer. Session-level messages (Logon, Logout, Heartbeat, TestRequest, ResendRequest, SequenceReset, Reject) use BeginString=FIXT.1.1 and are functionally identical to FIX 4.4 with one key addition: application version negotiation during Logon.

Logon (MsgType = A)

Client → Server

TagFieldRequiredDescription
8BeginStringYesFIXT.1.1
35MsgTypeYesA
49SenderCompIDYesYour assigned sender ID
56TargetCompIDYesBrokeret's target ID
34MsgSeqNumYesExpected: 1 for new session
52SendingTimeYesUTC timestamp
98EncryptMethodYes0 (None)
108HeartBtIntYesHeartbeat interval in seconds (recommended: 30)
553UsernameNoLogin username (if required)
554PasswordYesAuthentication password
141ResetSeqNumFlagNoY to reset sequence numbers
1137DefaultApplVerIDYesDefault application version: 9 (FIX 5.0 SP2)

Example

8=FIXT.1.1|9=138|35=A|49=CLIENT1|56=BROKERET|34=1|52=20260312-14:30:00.000|98=0|108=30|553=client1|554=MyP@ssw0rd|141=Y|1137=9|10=201|

Server → Client (Acknowledgment)

TagFieldDescription
8BeginStringFIXT.1.1
35MsgTypeA
49SenderCompIDBROKERET
56TargetCompIDYour SenderCompID
108HeartBtIntConfirmed heartbeat interval
1137DefaultApplVerIDConfirmed application version

Version Negotiation

If the server does not support the requested DefaultApplVerID, it may:

  1. Accept the Logon with a different DefaultApplVerID in its response
  2. Reject the Logon with a Logout message explaining the unsupported version

The client must check the returned DefaultApplVerID and adapt accordingly.

Logon Failure

Same as FIX 4.4 — server sends Logout (5) with rejection reason:

8=FIXT.1.1|9=84|35=5|49=BROKERET|56=CLIENT1|34=1|52=20260312-14:30:00.500|58=Invalid credentials|10=215|

Logout (MsgType = 5)

Identical to FIX 4.4. See the FIX 4.4 Session Management for details.

TagFieldRequiredDescription
8BeginStringYesFIXT.1.1
35MsgTypeYes5
58TextNoReason for logout
⚠️
WarningAlways send a Logout before disconnecting. Abrupt disconnection without Logout may cause sequence number gaps.

Heartbeat (MsgType = 0)

Identical to FIX 4.4. Both sides send heartbeats at the agreed interval.

TagFieldRequiredDescription
8BeginStringYesFIXT.1.1
35MsgTypeYes0
112TestReqIDConditionalRequired if responding to a TestRequest

TestRequest (MsgType = 1)

Identical to FIX 4.4.

TagFieldRequiredDescription
8BeginStringYesFIXT.1.1
35MsgTypeYes1
112TestReqIDYesUnique identifier (echoed back in Heartbeat)

ResendRequest (MsgType = 2)

Identical to FIX 4.4.

TagFieldRequiredDescription
8BeginStringYesFIXT.1.1
35MsgTypeYes2
7BeginSeqNoYesFirst sequence number to resend
16EndSeqNoYesLast sequence number (0 = all subsequent)

SequenceReset (MsgType = 4)

Identical to FIX 4.4. Both GapFill and Reset modes supported.

TagFieldRequiredDescription
8BeginStringYesFIXT.1.1
35MsgTypeYes4
123GapFillFlagNoY for GapFill mode
36NewSeqNoYesNew expected sequence number

Reject (MsgType = 3)

Session-level rejection. Identical to FIX 4.4 with the same reason codes.

TagFieldDescription
8BeginStringFIXT.1.1
35MsgType3
45RefSeqNumSequence number of the rejected message
371RefTagIDTag causing the rejection
372RefMsgTypeMsgType of the rejected message
373SessionRejectReasonReason code (same codes as FIX 4.4)
58TextHuman-readable description

Per-Message Application Version Override

In FIXT 1.1, individual application messages can override the default application version using Tag 1128 (ApplVerID):

8=FIXT.1.1|9=160|35=D|49=CLIENT1|56=BROKERET|34=5|1128=6|...

This sends a NewOrderSingle using FIX 4.4 application semantics while maintaining the FIXT 1.1 session. This is rarely needed but useful for mixed-version environments.

Sequence Number Management

Same rules as FIX 4.4:

  • Persist sequence numbers to disk
  • Use ResetSeqNumFlag=Y on Logon only when agreed with Brokeret
  • Daily sequence reset at 00:00 UTC

Connection Recovery

Same procedure as FIX 4.4:

  1. Reconnect with the same SenderCompID and TargetCompID
  2. Send Logon with next expected outgoing sequence number and DefaultApplVerID
  3. Handle ResendRequests for any gaps
  4. For a clean start, use ResetSeqNumFlag=Y

Next Steps