FIX Trading API

Heartbeat (35=0)

Heartbeats are sent periodically to signal a connection is still active. They are sent on an interval defined by HeartBtInt in the Logon message. If an expected heartbeat is missed, a TestRequest is sent to verify the connection is still active.

TagField NameRequiredDescription
Standard Header, MsgType 35=0
112 TestReqID CField is required when the Heartbeat is the response to a Test Request message
Standard Trailer

Logon (35=A)

Logon messages from Client to Saxo FIX API are for two types of sessions:

  • Market Data Session: To request market data and receive it. This is only available for FX Spot currently. Support on CFD Indices and CFD Futures will be added soon.
  • Order session: To submit orders, change orders and send allocation instructions; and receive execution reports and allocation instruction acknowledgements.
TagField NameRequiredDescription
Standard Header, MsgType 35=A
98EncryptMethodY0 = NONE
108HeartBtIntYHeartbeat interval (seconds). Must be 30 seconds, unless otherwise agreed.
141ResetSeqNumFlagN

Note: sequence numbers reset over the weekend.
Should be set to Y for Quote Session
Should generally be set to N for Order Session except the first log on of the week
Y = YES
N = NO

553UsernameYSaxo-supplied username
554PasswordYSaxo-supplied password
Standard Trailer

Logon response from Saxo FIX API to Client.

TagField NameRequiredDescription
Standard Header, MsgType 35=A
98EncryptMethodY0 = NONE
108HeartBtIntYHeartbeat interval (seconds). Must be 30 seconds, unless otherwise agreed.
141ResetSeqNumFlagN

Note: sequence numbers reset over the weekend.
Should be set to Y for Quote Session
Should generally be set to N for Order Session except the first log on of the week
Y = YES
N = NO

Standard Trailer

TestRequest (35=1)

TestRequests will be sent in response to missed heartbeats, and may be sent periodically by Saxo Bank. They must be responded to immediately with a Heartbeat containing the TestReqID or the session will be considered unresponsive and the connection terminated.

TagField NameRequiredDescription
Standard Header, MsgType 35=1
112 TestReqID YIdentifier to be returned in resulting Heartbeat
Standard Trailer

ResendRequest (35=2)

ResendRequests can be issued if messages are missed and a message with a higher than expected sequence number is received, i.e. a message has been lost in transit—for example during a disconnect/reconnect.

TagField NameRequiredDescription

Standard Header, MsgType 35=2

 BeginSeqNo YMsgSeqNum of first message in range to be resent
16 EndSeqNo YMsgSeqNum of last message in range to be resent
Standard Trailer

Reject (35=3)

Rejects indicates a serious error in the implementation of FIX API specification by either FIX Client or Saxo FIX API. Message contains information indicating the message, tag and reason for rejection of the message. Immediately after SessionLevelReject is exchanged between FIX Client and Saxo FIX API, the session will be closed by Saxo FIX API..

TagField NameRequiredDescription
Standard Header, MsgType 35=3
45 RefSeqNum YReference message sequence number
371 RefTagID NTag of the FIX field being referenced.
372 RefMsgType NThe MsgType of the FIX message being referenced.
373 SessionRejectReason  NCode to identify reason for a session level reject message
58Text NWhere possible, text describing reject reason
Standard Trailer

SequenceReset (35=4)

SequenceResets are used to reset the sender's sequence number during a session.

TagField NameRequiredDescription
Standard Header, MsgType 35=4
 123 GapFillFlag  N

Indicates that the SequenceReset is replacing administrative or application messages which will not be resent
Y = YES
N = NO 

 36 NewSeqNo   YNew sequence number
Standard Trailer

Logout (35=5)

Logouts are sent to terminate a session.

TagField NameRequiredDescription
Standard Header, MsgType 35=5
58TextNText describing logout reason
Standard Trailer