Docs / Takers
FIX API for your clients
Give a client or system your prices over FIX 4.4: create a FIX taker, share the connection details and what the session supports.
A FIX taker gives a client, a platform or one of your own systems your prices over FIX 4.4, with its own spreads, symbols and access rules. It is a market data session: orders are not accepted.
1. Create the taker
In Takers, add a taker. Under What connects? choose API, then FIX 4.4.
| Field | What to enter |
|---|---|
| Name | Any unique name, such as FIX Client A |
| Port | The first free port is filled in for you |
| Client SenderCompID | What the client sends in tag 49, such as MD_CLIENT |
| Our CompID | What the client sends in tag 56, such as BRIDGE_MD |
| Username, Password | Sent by the client in tags 553 and 554. Passwords need at least 8 characters. |
| Allowed IPs | The client's fixed IP addresses or ranges |
CompIDs use visible characters without spaces, up to 64 each. The two must differ, and each pair can be used by one taker only.
Then map symbols to the taker on the Symbols page and assign it a markup profile on Markups. A FIX client can only request symbols mapped to its taker.
2. Send the client the connection guide
Open the taker's connection guide. It contains the host, port, CompIDs, credentials and symbol list for this taker, as Markdown you can copy or download. It includes the password, so share it only with the client.
Session
| Setting | Value |
|---|---|
| Version | FIX 4.4 |
| Transport | TCP to your bridge's address and the taker's port |
| Sequence numbers | Reset on every logon, logout and disconnect. Start at 1 and send 141=Y. |
| Heartbeat | The client sets it in tag 108. 30 seconds works well. |
| Sessions | One session per taker at a time |
The client must send its Logon within 10 seconds of connecting.
8=FIX.4.4|9=...|35=A|34=1|49=MD_CLIENT|56=BRIDGE_MD|52=20261103-09:30:00.000|98=0|108=30|141=Y|553=client_a|554=********|10=...Subscribe to prices
Send a MarketDataRequest (35=V):
| Tag | Meaning | Values |
|---|---|---|
| 262 MDReqID | Your id for the request | Any text |
| 263 SubscriptionRequestType | What you want | 1 subscribe, 0 one snapshot, 2 unsubscribe |
| 264 MarketDepth | How many levels | 1 top of book, 0 full book, or a number of levels |
| 267, 269 | Entry types | Send Bid and Offer. Both are always returned. |
| 146, 55 | Symbols | One or more symbols |
35=V|262=req-1|263=1|264=1|267=2|269=0|269=1|146=2|55=EURUSD|55=XAUUSD|Symbols match regardless of case and slashes, so eur/usd finds EURUSD, and replies use the spelling you sent. More than one level of depth is only available where depth is enabled for that security.
Prices you receive
Every price arrives as a MarketDataSnapshotFullRefresh (35=W): one straight after you subscribe, if a price exists, then one on every tick.
| Tag | Contents |
|---|---|
| 262 | Your MDReqID |
| 55 | The symbol, as you spelled it |
| 269 | 0 bid, 1 offer |
| 270 | Price, at the symbol's digits, with your markup applied |
| 271 | Size. 1000000 when the source gives no volume. |
| 273 | Time of the price, UTC, HH:MM:SS.mmm |
| 290 | Level position, when you asked for depth |
35=W|262=req-1|55=EURUSD|268=2|269=0|270=1.08542|271=1000000|273=09:30:01.125|269=1|270=1.08545|271=1000000|273=09:30:01.125|Errors
| You see | Meaning |
|---|---|
| The connection closes with no reply | The IP is not allowed or is blocked, the first message was not a Logon, it came too late, or tags 49 and 56 do not match the taker |
Logout with Invalid credentials |
Wrong username or password in 553 and 554 |
35=Y with Unknown or disabled symbol(s): ... |
A symbol is not mapped to this taker, or is disabled. The whole request is rejected. |
35=j with This XiroLink feed is prices only: orders are not accepted |
The client sent an order message |
Repeated failed sign-ins from one address block it for an hour. Unblock it under Security.
Something unclear or out of date? Email [email protected].