Skip to main content

Programming Guide

Copyright © 2025

Introduction

The FIX API for Market Data is based on version 4.3 of the FIX protocol. The API is used to receive a real-time market data feed of instruments available for trading on our system. Throughout this document, it is assumed that the client has a general understanding and knowledge of the FIX protocol version 4.3.

NOTE: The FIX Server also supports FIX versions greater than 4.3. In case of version mismatch problems at the client side, please contact us for appropriate configuration so that we may be able to support your specific conditions.

Technical Support

For all kinds of technical support and troubleshooting inquiries, please contact devcenter@koala.markets.

General Considerations

Time Zone

The system uses Coordinated Universal Time (UTC). Clients should handle any time zone conversions that may be required on their side.

Payload Security

The host communicates using SSL-encrypted TCP sockets. No special SSL certificates are needed for now. Clients can use an SSL-enabled FIX initiator/client or use SSL tunneling. The SSL-tunneling functionality is provided by freely available open-source products. In case of additional support or consultancy regarding SSL tunneling, you can contact our technical support team.

IP Filtering

Clients are identified by their IP addresses in the system. To connect, the following prerequisites should be met:

  • The static IP set of the client should be cleared at the host.
  • The client should use the provided host address and port.

Credentials

To connect to the FIX API host, the client must obtain the following:

  • TargetCompId
  • SenderCompId
  • User Name
  • Password
  • Price Feed URL (or IP) and Port
  • Trading URL (or IP) and Port

Instrument Identification

The system supports the following for identifying an instrument between the client and the host:

  • Tag 55 – Symbol: Common, "human understood" representation of the security. If you use "Tag 48 – SecurityID + Tag 22 – SecurityIDSource," then please provide "[N/A]" as the value for Tag 55.
  • Tag 48 – SecurityID + Tag 22 - SecurityIDSource: International Securities Identification Number (ISIN) that uniquely identifies a security. Its structure is defined in ISO 6166.

Please contact our technical support team for the latest list of instruments available for trading.

Multi Session

The FIX API is configured to provide two sessions per client, one for price feed and a separate one for order management. Both sessions should be configured to reset sequence numbers on login. Additionally, for price feed sessions, FIX messages should not be persisted to facilitate maximum throughput.

Trading and Price Feed Session Times

Currently, the system provides securities only from Börse Düsseldorf (Quotrix). Börse Düsseldorf working hours for price feeds and trading sessions are as follows:

Price Feed Sessions:

Monday – Friday: 07:00 – 22:05 Germany Time

Trading Sessions:

Monday – Friday: 08:00 – 22:00 Germany Time

Session Administration Messages

Login

The Login message is sent by a client to initiate a FIX session. The Login messages establish the communication session, authenticate the connecting client, and initialize the message sequence numbers. The FIX session login message type "A" should be the first message sent by the FIX API client to the server after establishing a network connection. Note that the password in the client's login message should match the expected value; otherwise, the session will be terminated. The Login message is needed for both Data feed session and trading session.

TagField NameRequiredComments
Standard HeaderYMsgType = Login (A)
98Encrypt MethodYAlways unencrypted
108HeartBtIntYHeartbeat interval in seconds
141ResetSeqNumFlagNSet to 'Y' to indicate both sides of a FIX session should reset sequence numbers. Must be 'Y' on pricing feed sessions.
553UsernameY
554PasswordY
Standard TrailerY

Example Login

8=FIX.4.3 9=133 35=A 34=1 49=TRADE-DEV-DESKTOP-CLIENT 52=20220412-09:54:08.496 56=TRADE 98=0 108=30 141=Y 553=username 554=password 10=215

Heartbeat

Message sent during quiet intervals on the connection to ensure that the connection is still alive.

TagField NameRequiredComments
Standard HeaderYMsgType = Heartbeat (0)
112TestReqIdCRequired when the heartbeat is the result of a test request message
Standard TrailerY

Logout

Message used to terminate a FIX connection. Can be sent by the client or the host.

TagField NameRequiredComments
Standard HeaderYMsgType = Logout (5)
58TextN
Standard TrailerY

Remark: Either a logout message followed by a disconnection, or a disconnection will suffice for logout.

Price Feed Message Types

Session Flow

  • API Client submits a Market Data Request
  • API will respond initially with Market Data Snapshot
  • If a subscription request is supplied, a stream of market data refresh updates will be initiated.
  • API Client can cancel an existing subscription by sending another Market Data Request or via termination of the pricing session.

Market Data Request

TagField NameRequiredRepeatComments
Standard HeaderYMsgType = Market Data Request (V)
262MDReqIDYFor SubscriptionRequestType = 1, must be a unique ID per subscription. For SubscriptionRequestType = 2, specifies the MDReqID of the previous Market Data Request to disable
263SubscriptionRequestTypeYSnapshot + Updates (1) Cancel subscription (2)
264MarketDepthNTop of Book (1)
267NoMDEntryTypesYNumber of MDEntryTypes for the repeating group
269MDEntryTypeYRepeatsBid (0) Offer (1) (Both should be specified)
146NoRelatedSymYNumber of symbols (instruments) requested. One symbol per MarketDataRequest is recommended.
55SymbolCRepeatsEither Tag 55 or Tag 48 & 22 should be sent
48SecurityIDCRepeatsEither Tag 55 or Tag 48 & 22 should be sent
22SecurityIDSourceCRepeatsISIN number (4) Either Tag 55 or Tag 48 & 22 should be sent
Standard TrailerY

Market Data Request Reject

TagField NameRequiredRepeatComments
Standard HeaderYMsgType = MarketDataRequestReject (Y)
262MDReqIDYRefers to MDReqID specified on Market Data Request
281MDReqRejReasonYUnknown symbol (0) Duplicate MDReqID (1)
58TextNReason of Reject
Standard TrailerY

Market Data Snapshot / Full Refresh

TagField NameRequiredRepeatComments
Standard HeaderYMsgType = MarketDataSnapshotFullRefresh (W)
262MDReqIDYRefers to MDReqID from request
55SymbolCEither Tag 55 or Tag 48 & 22 will be sent based on how market data is requested initially.
48SecurityIDCEither Tag 55 or Tag 48 & 22 will be sent based on how market data is requested initially.
22SecurityIDSourceCISIN number (4) Either Tag 55 or Tag 48 & 22 will be sent based on how market data is requested initially.
268NoMDEntriesYNumber of MDEntries for the repeating group
269MDEntryTypeYRepeatsBid (0) Offer (1)
270MDEntryPxYRepeatsNumber of MDEntryPx for the repeating group
271MDEntrySizeNRepeatsRepresents the maximum size available to order at corresponding price.
299QuoteEntryIDNRepeatsSpecified for top-of-book only
290MDEntryPositionNoCRepeatsSpecified for Professional variant only (where market depth is supported)
Standard TrailerY

Examples

MarketDataRequest – Symbol as Short Code PAH3.DU example - subscribing

Sent to FIX API

MDReqID=262=1649834547887

SubscriptionType=263=1 (Snapshot + Updates subscription)

MarketDepth=264=1 (Top of Book)

Symbol=55=PAH3.DU (Short Code and .DU for the instrument)

NoMDEntryTypes=267=2

There are 2 MDEntryType tags, 269=0 and 269=1 (both)

8=FIX.4.3 9=150 35=V 34=27 49=FXC-CLIENT 52=20220413-07:22:27.901 56=PRICE-FEED 262=1649834547887 263=1 264=1 265=0 266=N 146=1 55=PAH3.DU 267=2 269=0 269=1 10=086
Received from FIX API

Market data will be delivered to client with subsequent messages. Such as:

8=FIX.4.3 9=216 35=W 34=27 49=PRICE-FEED 52=20220413-07:22:34.088 56=FXC-CLIENT 55=PAH3.DU 262=1649834547887 268=2 269=0 270=80.76 271=130 272=20220413273=07:22:30.284 269=1 270=80.78 271=130 272=20220413 273=07:22:30.284 10=247
8=FIX.4.3 9=216 35=W 34=28 49=PRICE-FEED 52=20220413-07:22:34.370 56=FXC-CLIENT 55=PAH3.DU 262=1649834547887 268=2 269=0 270=80.36 271=130 272=20220413273=07:22:32.792 269=1 270=81.18 271=130 272=20220413 273=07:22:32.792 10=245
8=FIX.4.3 9=216 35=W 34=29 49=PRICE-FEED 52=20220413-07:22:36.927 56=FXC-CLIENT 55=PAH3.DU 262=1649834547887 268=2 269=0 270=80.72 271=130 272=20220413273=07:22:35.289 269=1 270=80.74 271=130 272=20220413 273=07:22:35.289 10=009

MarketDataRequest – Short Code PAH3.DU example – canceling subscription

Sent to FIX API

MDReqID=262=1649834547887

SubscriptionType=263=2 (cancel subscription)

MarketDepth=264=1 (Top of Book)

Symbol=55=PAH3.DU (Short Code and .DU for the instrument)

NoMDEntryTypes=267=2

There are 2 MDEntryType tags, 269=0 and 269=1 (both)

8=FIX.4.3 9=150 35=V 34=27 49=FXC-CLIENT 52=20220413-07:40:37.801 56=PRICE-FEED 262=1649834547887 263=2 264=1 265=0 266=N 146=1 55=PAH3.DU 267=2 269=0 269=1 10=086