Exchange FIX Protocol
Introduction
Welcome to the Crypto.com Exchange FIX API reference documentation.
FIX (Financial Information eXchange) is a standard electronic messaging protocol which can be used to place orders, receive order updates and executions, and cancel orders. Our FIX API is based on the FIX 4.4 specification and modeled after FIX implementations of other popular cryptocurrency exchanges.
The FIX API is available across 3 servers: the user data server (order management), user data server (drop copy), and the market data server.
Users who are less familiar with FIX can also consider using the REST API or WebSocket API.
Change Log
- 2025-08-29 - Update description on tag6616, tag10060, tag60 and tag52
- 2025-11-13 - Update 35=D, added tag20100 ReceiveWindow
- 2025-07-30 - Update 35=H, not available for Drop Copy session
- 2025-07-09 - Update 35=D, tag18=8 SMART_POST_ONLY
- 2025-06-26 - Added 35=G for OrderCancelReplaceRequest
- 2025-05-29 - Update 35=V, tag MarketDepth(264) include market depth 1
- 2025-04-23 - Update FIX housekeeping period date
- 2025-02-06 - Added tag 10060 into tag 35=8
- 2024-10-25 - Added tag 20101 and tag 20102 into tag 35=8
- 2024-09-26 - Added tag 880 TrdMatchID into tag 35=8
- 2024-09-10 - FIX 3.0 initial
- 2024-06-28 - Added Self Trade Prevention (STP) feature
- 2023-10-03 - Added tag544=2 for margin trading in 35=D
- 2023-04-25 - Added 35=W for market data
- 2023-04-17 - Update 35=D, update tag1107 remove '=I', '=M'
- 2023-04-17 - Updated details on 35=X, NoMDEntries(268)
- 2023-02-23 - Add wait interval in 35=A
- 2023-02-06 - Added tag 278 include details with order books
- 2023-02-02 - MDS 2.0 initial
- 2023-02-01 - Added tag18 in execution report
- 2022-12-02 - Update on tag 35=2
- 2022-12-01 - Update description on tag 20001
- 2022-11-22 - Update the default COMPIDs
- 2022-11-18 - Included the response and reason codes
- 2022-11-14 - Update tag 1107 TriggerPriceType description
- 2022-10-18 - Updated cancellation request tag 35=F
- 2022-09-08 - Updated logon requests
- 2022-06-30 - Updated mass order request
- 2022-03-21 - Initial v3 API
Generating the API Key
Before sending any requests, you'll need to generate a new API key.
This can be done in the Exchange website under User Center > API.
After generating the key, there are two things you need to carefully note down:
- API Key
- Secret Key
API Key and Secret are randomly generated by the system and cannot be modified. Default settings will be set to "Can Read" only, and you have the option of adding or removing certain permissions for your API Key via Web UI.
You can optionally specify a whitelist of IP addresses when generating the API Key. If specified, the API can only be used from the whitelisted IP addresses.
Rate Limits
| FIX Endpoint | Limit |
|---|---|
| Order Entry | 2500 requests per second |
| Market Data | 20 requests per second |
Important Note: We recommend adding a 1-second sleep after establishing the FIX connection, and before requests are sent. This will avoid occurrences of rate-limit errors, as the rate limits are pro-rated based on the calendar-second that the connection was opened.
FIX Dictionary
Our FIX API implementation is based on the FIX Protocol 4.4 specifications, and on top of it we also include some tags from other versions of the FIX Specification, as well as some User Defined Fields.
We provide a custom dictionary in the QuickFIX XML format, which is also compatible with various FIX engine implementations.
FIX Endpoints
To establish a FIX session, FIX clients must setup/use the AWS private link connection.
UAT Sandbox
| FIX Gateway | FIX Endpoint | Sender Comp ID | Target Comp ID |
|---|---|---|---|
| User Data (Order Management) | tcp://uat1-fix-ud-f18a.crypto.local:31301 | UAT1.CLIENT_NAME.UD.00 | UAT1.CDC.UD |
| User Data (Drop Copy) | tcp://uat1-fix-uc-f18a.crypto.local:30300 | UAT1.CLIENT_NAME.UC.00 | UAT1.CDC.DC |
| Market Data (BTC related) | tcp://uat1-fix-md-f18a.crypto.local:34402 | UAT1.CLIENT_NAME_BTC.MD.00 | UAT1.CDC.MD |
| Market Data (ETH related) | tcp://uat1-fix-md-f18a.crypto.local:34403 | UAT1.CLIENT_NAME_ETH.MD.00 | UAT1.CDC.MD |
| Market Data (OTHERS related) | tcp://uat1-fix-md-f18a.crypto.local:3440[5-7] | UAT1.CLIENT_NAME_OTHERS.MD.00 | UAT1.CDC.MD |
Production
| FIX Gateway | FIX Endpoint | Sender Comp ID | Target Comp ID |
|---|---|---|---|
| User Data (Order Management) | tcp://prd3-fix-ud-f18b.crypto.local:31301 | PRD3.CLIENT_NAME.UD.00 | PRD3.CDC.UD |
| User Data (Drop Copy) | tcp://prd3-fix-uc-f18b.crypto.local:30300 | PRD3.CLIENT_NAME.UC.00 | PRD3.CDC.UC |
| Market Data (BTC related) | tcp://prd3-fix-md-f18b.crypto.local:34402 | PRD3.CLIENT_NAME_BTC.MD.00 | PRD3.CDC.MD |
| Market Data (ETH related) | tcp://prd3-fix-md-f18b.crypto.local:34403 | PRD3.CLIENT_NAME_ETH.MD.00 | PRD3.CDC.MD |
| Market Data (OTHERS related) | tcp://prd3-fix-md-f18b.crypto.local:3440[5-7] | PRD3.CLIENT_NAME_OTHERS.MD.00 | PRD3.CDC.MD |
Market Data Port Assignment
- BTC related pairs - Port 34402 (Note: ETH/BTC is NOT included on this instance)
- ETH related pairs - Port 34403 (Note: ETH/BTC is included on this instance)
- Others - Port 34405 [0-9A-D], Port 34406 [E-M], Port 34407 [N-Z]
Standard Header and Trailer
This documentation uses | to represent the FIX field separator (byte 0x01). It should be replaced by 0x01 in actual messages.
Standard Header
The header identifies the message type, length, destination, sequence number, origination point and time.
| Tag | Name | Type | Required | Description |
|---|---|---|---|---|
| 8 | BeginString | string | Y | Must be "FIX.4.4" |
| 9 | BodyLength | number | Y | Length of the message body in bytes |
| 35 | MsgType | string | Y | Message Type |
| 34 | MsgSeqNum | number | Y | Integer message sequence number |
| 43 | PossDupFlag | boolean | N | Indicates possible retransmission of message with this sequence number |
| 49 | SenderCompID | string | Y | See FIX Endpoints for details |
| 56 | TargetCompID | string | Y | See FIX Endpoints for details |
| 52 | SendingTime | UTCTimestamp | Y | Time when the message is being sent out from FIX Gateway |
| 97 | PossResend | boolean | N | Indicates that message may contain information sent under another sequence number |
Processing PossDupFlag and PossResend:
- PossDupFlag (43=Y) — if a message with this sequence number has been previously received, ignore message; if not, process normally.
- PossResend (97=Y) — forward message to application and determine if previously received (i.e. verify order id and parameters).
Standard Trailer
Each FIX message is terminated by a Standard Trailer as a message delimiter as well as containing the checksum value.
| Tag | Name | Type | Required | Description |
|---|---|---|---|---|
| 10 | CheckSum | string | Y | Three bytes, simple checksum. Always last field in message |