Introduction
Welcome to the Crypto.com Exchange FIX API - FIX API reference documentation.
Change Logs
- 2025-07-09 - Update 35=D, tag18=8 SMART_POST_ONLY
- 2025-06-26 - Aded 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-06-04 - Added OTC RFS Flow
- 2023-04-25 - Added 35=W or 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 can not 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
FIX Endpoint | Limit |
---|---|
User API | 500 requests per second |
Market Data | 20 requests per second |
We recommend adding a 1-second sleep after establishing the websocket connection, and before requests are sent.
This will avoid occurrences of rate-limit (`TOO_MANY_REQUESTS`) errors, as the websocket rate limits are pro-rated based on the calendar-second that the websocket connection was opened.
FIX API Overview
What is FIX API
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.
Users who are less familiar with FIX can also consider using the REST API or Web Socket API.
FIX Dictionary
Our FIX API implementation is based on the FIX Protocol 4.4 specifications, and on top of it we also includes 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.
Download FIX Dictionary for Order Management / Market data
FIX Endpoints
The FIX API is available across 3 servers: the user data server (order management), user data server (drop copy), and the market data server.
UAT Sandbox
FIX API (Spot/Deriv)
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 API (Spot/Deriv)
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 |
Remarks for market data flow:
BTC related pair
port: 34402
note: ETH/BTC is NOT included on this instance
ETH related pair
port: 34403
note: ETH/BTC is included on this instance
Others [start with character]
port: 34405 [0-9A-D]
port: 34406 [E-M]
port; 34407 [N-Z]
FIX Connectivity
- To establish a FIX session, FIX clients must setup/use the AWS private link connection.
FIX Session Management
Starting a Session
FIX API runs the server side of the FIX connection ("acceptor"). Sequence numbers start at 1 and must be incremented with every message. Messages with duplicate or out-of-order sequence numbers will be rejected. We never reset sequence numbers on the server side during the logon workflow.
Standard Session Recovery
Standard ResendRequest can be used to recover a session.
- Send 35=2 with the need sequence number range.
- Receive replay message with PossDupFlag=Y. Apply the changes based on standard FIX protocol. If a message with this sequence number has been previously received, ignore message, if not, process normally.
- Continue trading.
Ending a Session
The client may send the server an optional Logout (35=5) message, but the exchange will not interpret its absence as being an abnormal condition.
Under certain conditions, the server may send the client a Logout (35=5) message where the Text (58) field contains the reason.
FIX Messages
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 | |
97 | PossResend | boolean | N | Indicates that message may contain information that has been sent under another sequence number. |
Two fields help with resending messages.
The PossDupFlag 43=Y
when resending a message as the result of a session level event (i.e. the retransmission of a message reusing a sequence number).
The PossResend 97=Y
when reissuing a message with a new sequence number (e.g. resending an order).
The receiving application should process these messages as follows:
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 |
Logon (35=A)
Tag | Name | type | Required | Description |
---|---|---|---|---|
95 | RawDataLength | number | Y | Length of RawData field |
96 | RawData | string | Y | Please refer FIX Digital Singature for details |
98 | EncryptMethod | number | Y | Must be 98=0 |
108 | HeartBtInt | number | Y | Heartbeat interval in seconds. |
141 | ResetSeqNumFlag | boolean | N | Indicates that both sides of the FIX session should reset sequence numbers. |
553 | Username | string | Y | API Key |
554 | Digital Signature | string | Y | Please refer FIX Digital Singature for details |
6867 | CancelOnDisconnect (Scope) | string | N | Y : Enabled for the open order placed by this session/connection. |
35002 | CancelOnDisconnect (Type) | number | N | '0' : Disable '3' : Enable |
FIX Digital Signature
For FIX API, the Logon (35=A) message has to be invoked ONCE per session, with the Digital Signature as Password (554) and API key as UserName (553) to be part of the message. Once authenticated, you will gain access to a FIX session, and no longer need to use the pass in the Digital Signature and API key anymore for the duration of the session.
The authentication is based on the pairing of the API Key, along with the HMAC-SHA256 hash of the request parameters using the API Secret as the cryptographic key.
The algorithm for generating the HMAC-SHA256 signature is as follows:
- (Case i. Order Management Flow) Concatenate the following: "public/auth" + MsgSeqNum (34) + api_key + "system_labelONEEX" + RawData (96)
(Case ii. Market Data Flow) Concatenate the following: "public/auth" + MsgSeqNum (34) + api_key + RawData (96)
(Case iii. Drop Copy Flow) Concatenate the following: "public/auth" + MsgSeqNum (34) + api_key + "system_labelONEEX" + RawData (96) - Use HMAC-SHA256 to hash the above using the API Secret as the cryptographic key
- Encode the output as a hex string -- this is your Digital Signature
The above method is similar to sign a Digital Signature for REST / WS, with the following equivalent field mappings:
FIX Tag | Equivalent WS / REST Field for Signing Digital Signature |
---|---|
MsgType (35) | method |
MsgSeqNum (34) | id |
UserName (553) | api_key |
RawData (96) | nonce in milliseconds |
Password (554) | sig |
Please refer to the repsective section to sign a Digital Signature for REST / WS for sample code.
Remarks
We recommend adding 50 ms wait interval after receiving 35=A on both side, before sending first request.
The FIX gateway maintainance (Order Management flow only) will be carried out on second Thursday 07:05-07:15 (UTC) monthly.
Please disconnect on 07:04 (UTC) and reconnect on 07:15 (UTC) with sequence number 1/1.
Other options for client preferences:
option 1
:
Sequence number resets require by clients to LOGOFF and then LOGIN again using the Logon [A] message with the ResetSeqNumFlag (141) set to 'Y'.
This resets the sequence numbers on both sides.
Clients are free to perform this action whenever is convenient for their own schedule and set-up.
Option 2
:
Crypto.com FIX connections shall establish a cap to prevent sequence number counter overflow;
Our FIX engine shall trigger disconnection and reset the sequence number to 1/1, either the inbound or outbound sequence number reach 2,147,480,000
Logout (35=5)
The Logout<5> message initiates or confirms the termination of a FIX session. Disconnection without the exchange of Logout<5> messages should be interpreted as an abnormal condition.
Before actually closing the session, the logout initiator should wait for the opposite side to respond with a confirming Logout<5> message. This gives the remote end a chance to perform any Gap Fill operations that may be necessary. The session may be terminated if the remote side does not respond in an appropriate timeframe.
After sending the Logout<5> message, the logout initiator should not send any messages unless requested to do so by the logout acceptor via a ResendRequest<2>.
Tag | Field Name | Data Type | Req | Description |
---|---|---|---|---|
58 | Text | string | N | |
1409 | number | N | Status of the FIX session. Not sent for scheduled server initiated log outs 0 = session active 4 = Session logout complete 5 = Invalid username or password 6 = Account locked 7 = Logons are not allowed at this time |
Heartbeat (35=0)
The Heartbeat (0) monitors the status of the communication link and identifies when the last of a string of messages was not received.
- When either end of a FIX connection has not sent any data for [ HeartBtInt (108) ] seconds, it will transmit a Heartbeat (0) message.
- When either end of the connection has not received any data for ( HeartBtInt (108) + "some reasonable transmission time") seconds, it will transmit a Test Request (1) message.
- If there is still no Heartbeat (0) message received after ( HeartBtInt (108) + "some reasonable transmission time") seconds then the connection should be considered lost and corrective action be initiated.
- If HeartBtInt (108) is set to zero then no regular heartbeat messages will be generated. Note that a test request message can still be sent independent of the value of the HeartBtInt (108) , which will force a Heartbeat (0) message.
- Heartbeats issued as the result of Test Request (1) must contain the TestReqID (112) transmitted in the Test Request (1) message. This is useful to verify that the Heartbeat (0) is the result of the Test Request (1) and not as the result of a regular timeout.
Tag | Name | Type | Required | Description |
---|---|---|---|---|
112 | TestReqID | string | N | Identifier included in Test Request (1) message to be returned in resulting Heartbeat (0) |
TestRequest (35=1)
The Test Request (1) message forces a heartbeat from the opposing application. The Test Request (1) message checks sequence numbers or verifies communication line status. The opposite application responds to the Test Request (1) with a Heartbeat (0) containing the TestReqID (112).
The TestReqID (112) verifies that the opposite application is generating the heartbeat as the result of Test Request (1) and not a normal timeout. The opposite application includes the TestReqID (112) in the resulting Heartbeat (0). Any string can be used as the TestReqID (112) (one suggestion is to use a timestamp string).
Tag | Name | Type | Required | Description |
---|---|---|---|---|
112 | TestReqID | string | Y | Identifier included in Test Request (1) message to be returned in resulting Heartbeat (0) |
ResendRequest (35=2)
The resend request is sent by the receiving application to initiate the retransmission of messages. This function is utilized if a sequence number gap is detected, if the receiving application lost a message, or as a function of the initialization process.
The resend request can be used to request a single message, a range of messages or all messages subsequent to a particular message.
Note: the sending application may wish to consider the message type when resending messages; e.g. if a new order is in the resend series and a significant time period has elapsed since its original inception, the sender may not wish to retransmit the order given the potential for changed market conditions. (The Sequence Reset-GapFill <4> message is used to skip messages that a sender does not wish to resend.)
Note: it is imperative that the receiving application process messages in sequence order, e.g. if message number 7 is missed and 8-9 received, the application should ignore 8 and 9 and ask for a resend of 7-9, or, preferably, 7-0 (0 represents infinity). This latter approach is strongly recommended to recover from out of sequence conditions as it allows for faster recovery in the presence of certain race conditions when both sides are simultaneously attempting to recover a gap.
- To request a single message: BeginSeqNo (7) = EndSeqNo (16)
- To request a range of messages: BeginSeqNo (7) = first message of range, EndSeqNo <16> = last message of range
- To request all messages subsequent to a particular message: BeginSeqNo (7) = first message of range, EndSeqNo (16) = 0 (represents infinity) .
Tag | Name | Type | Required | Description |
---|---|---|---|---|
7 | BeginSeqNo | number | Y | First sequence number in the range to be resent. Please refer [FIX Sequence Number Resent scenario] for more details |
16 | EndSeqNo | number | Y | Last sequence number in the range to be resent. For single message resend requests, set BeginSeqNo = EndSeqNo. If request is for all messages subsequent to a particular message, EndSeqNo = 0. |
[FIX Sequence Number Resent scenario] (Assume client is the initiator, CDC is the acceptor. The following is the synchronization after successful logon) | ||||
------------------------------Case 1 :------------------------------ After logon request 35=A, CDC found that there are missing sequence number and requires retransmission of messages from client. ResendRequest(35=2) sent by CDC. | ||||
------------------------------Case 2:------------------------------ After logon request 35=A, client found that there are missing sequence number and requires retransmission of messages from CDC. ResendRequest(35=2) sent by client. | ||||
------------------------------Case 3:------------------------------ ResendRequest(35=2) sent by client and CDC after Logon(35=A) acknowledgement. | ||||
SequenceReset (35=4)
The Sequence Reset message has two modes: Gap Fill mode and Reset mode.
Gap Fill mode
Gap Fill mode is used in response to a Resend Request <2> when one or more messages must be skipped over for the following reasons:
- During normal resend processing, the sending application may choose not to send a message (e.g. an aged order).
- During normal resend processing, a number of administrative messages are skipped and not resent (such as Heart Beats, Test Requests).
Gap Fill mode is indicated by GapFillFlag <123> field = "Y".
If the GapFillFlag <123> field is present (and equal to "Y"), the MsgSeqNum <34> should conform to standard message sequencing rules (i.e. the MsgSeqNum <34> of the Sequence Reset <4> GapFill mode message should represent the beginning MsgSeqNum <34> in the GapFill range because the remote side is expecting that next message sequence number).
Reset mode
Reset mode involves specifying an arbitrarily higher new sequence number to be expected by the receiver of the Sequence Reset <4>-Reset mode message, and is used to reestablish a FIX session after an unrecoverable application failure.
Reset mode is indicated by the GapFillFlag <123> field = "N" or if the field is omitted.
If the GapFillFlag <123> field is not present (or set to N), it can be assumed that the purpose of the Sequence Reset <4> message is to recover from an out-of-sequence condition. In Sequence Reset <4> - Reset mode, the MsgSeqNum <34> in the header should be ignored (i.e. the receipt of a Sequence Reset <4> - Reset mode message with an out of sequence MsgSeqNum <34> should not generate resend requests). Sequence Reset <4> - Reset should NOT be used as a normal response to a Resend Request <2> (use Sequence Reset <4> - Gap Fill mode). The Sequence Reset <4> - Reset should ONLY be used to recover from a disaster situation which cannot be recovered via the use of Sequence Reset <4> - Gap Fill. Note that the use of Sequence Reset <4> - Reset may result in the possibility of lost messages.
Rules for processing all Sequence Reset messages:
- The sending application will initiate the Sequence Reset <4>. The message in all situations specifies NewSeqNo <36> to reset to as the value of the next sequence number to be expected by the message receipient immediately following the messages and/or sequence numbers being skipped.
- The Sequence Reset <4> can only increase the sequence number.
- If a sequence reset is received attempting to decrease the next expected sequence number the message should be rejected and treated as a serious error.
- One must be careful to ignore the duplicate Sequence Reset <4>-GapFill mode which is attempting to lower the next expected sequence number. This can be detected by checking to see if its MsgSeqNum <34> is less than expected. If so, the Sequence Reset <4>-GapFill mode is a duplicate and should be discarded.
Tag | Name | Type | Required | Description |
---|---|---|---|---|
123 | GapFillFlag | boolean | N | Indicates that the Sequence Reset message is replacing administrative or application messages which will not be resent. Y = Gap Fill Message, Msg Seq Num Field Valid N = Sequence Reset, Ignore Msg Seq Num |
36 | NewSeqNo | number | Y | New sequence number |
NewOrderSingle (35=D)
Creates a new BUY or SELL order on the Exchange.
This call is asynchronous, so the response with Pending New is simply an acceptance of the request, but not necessarily mean it is confirmed into order book.
The drop copy subscription can be used to check when the order is successfully created.
See FIX Spot Order Life Cycle and ExecutionReport for details.
Tag | Name | Type | Required | Description |
---|---|---|---|---|
11 | ClOrdID | string | Y | Unique identifier for Order as assigned by the buy-side. Uniqueness must be guaranteed across trading sessions. |
15 | Currency | string | N (Depends) | Required for OTC Order. Indicates whether OrderQty is for Base Currency or Quote Currency |
18 | ExecInst | MultipleCharValue | N. | (Limit Orders Only) Options are: - 6 : POST_ONLY - 8 : SMART_POST_ONLY - Or leave empty |
38 | OrderQty | qty | Depends | For LIMIT Orders, MARKET, STOP_LOSS, TAKE_PROFIT orders only: Order Quantity |
40 | OrdType | string | Y | 1 : MARKET , 2 : LIMIT , 3 : STOP_LOSS , 4 : STOP_LIMIT , J : TAKE_PROFIT , W : TAKE_PROFIT_LIMIT , D : PREVIOUSLY_QUOTED Must of D for OTC RFQ OrderMust of 1 or 2 for OTC RFS Order |
44 | Price | price | Depends | For LIMIT and STOP_LIMIT orders only: Unit price |
54 | Side | string | Y | 1 : BUY , 2 : SELL |
55 | Symbol | string | Y | e.g., ETH_CRO, BTC_USDT |
59 | TimeInForce | char | N | (Limit Orders Only) Options are: - 1 : GOOD_TILL_CANCEL (Default if unspecified)- 3 : IMMEDIATE_OR_CANCEL - 4 : FILL_OR_KILL .Must of 4 for OTC Order |
60 | TransactTime | string | Y | Time this order request was initiated/released by the trader or trading system. i.e. 20190525-08:26:38.989 (in GMT) |
117 | QuoteID | string | Depends | Required for OTC Order. Must be RFS for OTC RFS Order |
152 | CashOrderQty | price | Depends | For MARKET (BUY), STOP_LOSS (BUY), TAKE_PROFIT (BUY) orders only: Notional amount to spend |
544 | CashMargin | char | N | 1 : SPOT places order without margin (default for Spot)2 : SPOT places order with margin |
1102 | TriggerPrice | price | Depends | Used with STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, and TAKE_PROFIT_LIMIT orders. Dictates when order will be triggered |
1107 | TriggerPriceType | char | N | which price to use for ref_price: 2 : LAST_PRICE (default for Spot) I : INDEX_PRICE M : MARK_PRICE |
12362 | SelfMatchPreventionScope | string | N | Optional Field Possible Values - M: Matches Master or Sub a/c - S: Matches Sub a/c only Note: orderbook-specific settings takes higher precedence. |
2964 | SelfMatchPreventionInstruction | string | N* | Mandatory if SelfMatchPreventionScope is set. Possible Values - 1: Cancel Taker - 2: Cancel Maker - 3: Cancel Both Maker and Taker |
2362 | SelfMatchPreventionID | string of number | N* | Optional Field Possible Value: 0 to 32767 Default Value - If SelfMatchPreventionScope & SelfMatchPreventionInstruction are not specified, REJECT - If SelfMatchPreventionScope is specified, default value = 0. Note: orderbook-specific settings takes higher precedence. |
2643 | CommissionCurrency | string | N | Fee currency for trade. Only present if this message was the result of a fill. Valid Values: [SPOT] Buy - Base/Quote token/USD/USDT/EUR [SPOT] Sell - Quote token/USD/USDT/EUR [DERIV] Buy/Sell - USD/USDT/EUR Example: If a client would like to BUY CRO/BTC, the default fee token is CRO, valid tokens are CRO/BTC/USD/USDT/EUR. If a client would like to SELL CRO/BTC, the default fee token is BTC, valid tokens are BTC/USD/USDT/EUR. If a client would like to BUY/SELL BTCUSD-PERP, the default fee token is USD, valid tokens are USD/USDT/EUR. If a client has an insufficient balance in their preferred fee token, the system will switch to the default fee token. |
7933 | BrokerId | string | N | Optional Field, Brokder ID of the client. |
Here are the mandatory parameters based on OrdType
:
OrdType | Side | Additional Mandatory Parameters |
---|---|---|
1 : MARKET |
1 : BUY |
CashOrderQty or OrderQty , mutually exclusive |
1 : MARKET |
2 : SELL |
OrderQty |
2 : LIMIT |
1 : BUY |
OrderQty , Price |
2 : LIMIT |
2 : SELL |
OrderQty , Price |
3 : STOP_LOSS |
1 : BUY |
CashOrderQty , TriggerPrice |
3 : STOP_LOSS |
2 : SELL |
OrderQty , TriggerPrice |
4 : STOP_LIMIT |
1 : BUY |
Price , OrderQty , TriggerPrice |
4 : STOP_LIMIT |
2 : SELL |
Price , OrderQty , TriggerPrice |
J : TAKE_PROFIT |
1 : BUY |
CashOrderQty , TriggerPrice |
J : TAKE_PROFIT |
2 : SELL |
OrderQty , TriggerPrice |
W : TAKE_PROFIT_LIMIT |
1 : BUY |
Price , OrderQty , TriggerPrice |
W : TAKE_PROFIT_LIMIT |
2 : SELL |
Price , OrderQty , TriggerPrice |
Helpful information:
STOP_LIMIT
andTAKE_PROFIT_LIMIT
will execute aLIMIT
order when theTriggerPrice
is reached.STOP_LOSS
andTAKE_PROFIT
will execute aMARKET
order when theTriggerPrice
is reached.
To create trigger orders against market price:
TriggerPrice
below market price: BUYSTOP_LOSS
andSTOP_LIMIT
, SELLTAKE_PROFIT
andTAKE_PROFIT_LIMIT
TriggerPrice
above market price: SELLSTOP_LOSS
andSTOP_LIMIT
, BUYTAKE_PROFIT
andTAKE_PROFIT_LIMIT
Response Attributes
Tag | Name | Type | Required | Description |
---|---|---|---|---|
35 | MsgType | string | Y | Must be 35=8 |
37 | OrderID | string | Y | Newly created order ID |
39 | OrdStatus | string | Y | 39=A for an order being accepted, but not yet confirmed. |
11 | ClOrdID | string | Y | Unique identifier for Order as assigned by the buy-side. Uniqueness must be guaranteed across trading sessions. |
150 | ExecType | string | Y | 150=A for an order being accepted, but not yet confirmed.150=I will also be sent when a trigger order is confirmed but not yet triggered. |
See FIX Spot Order Life Cycle and ExecutionReport for details.
OrderCancelReplaceRequest (35=G)
Cancel/Replace will be used to change any valid attribute of an open order (i.e. reduce/increase quantity, change limit price, change instructions, etc.),
Requests which cannot be processed will be rejected using the Cancel Reject <9> message. The Cancel Reject <9> message should provide the ClOrdID <11> and OrigClOrdID <41> values which were specified on the Cancel/Replace Request message for identification.
Tag | Name | Type | Required | Description |
---|---|---|---|---|
11 | ClOrdID | string | Y | Unique identifier for Order as assigned by the buy-side. Uniqueness must be guaranteed across trading sessions. |
41 | OrigClOrdID | string | Y* | ClOrdID <11> of the previous non-rejected order. * Either OrigClOrdID/OrderID has to be provided (If both OrderID and OrigClOrdID exist together, OrderID has higher precedence) |
37 | OrderID | string | Y* | Order ID assigned by the Exchange. * Either OrigClOrdID/OrderID has to be provided (If both OrderID and OrigClOrdID exist together, OrderID has higher precedence) |
38 | OrderQty | qty | Y | For LIMIT Orders, MARKET, STOP_LOSS, TAKE_PROFIT orders only: Order Quantity |
44 | Price | price | Y | For LIMIT and STOP_LIMIT orders only: Unit price |
60 | TransactTime | string | Y | Time this order request was initiated/released by the trader or trading system. i.e. 20190525-08:26:38.989 (in GMT) |
2964 | SelfMatchPreventionInstruction | string | N | Mandatory if SelfMatchPreventionScope is set. Possible Values - 1: Cancel Taker - 2: Cancel Maker - 3: Cancel Both Maker and Taker Remark: SelfMatchPreventionScope and SelfMatchPreventionID are not supported by this message type |
Response Attributes
Tag | Name | Type | Required | Description |
---|---|---|---|---|
35 | MsgType | string | Y | Must be 35=8 |
37 | OrderID | string | Y | Newly created order ID |
39 | OrdStatus | string | Y | 39=A for an order being accepted, but not yet confirmed. |
11 | ClOrdID | string | Y | Unique identifier for Order as assigned by the buy-side. Uniqueness must be guaranteed across trading sessions. |
150 | ExecType | string | Y | 150=A for an order being accepted, but not yet confirmed.150=I will also be sent when a trigger order is confirmed but not yet triggered. |
See FIX Spot Order Life Cycle and ExecutionReport for details.
OrderCancelRequest (35=F)
Cancels an existing order on the Exchange (asynchronous)
This call is asynchronous, so the response as ExecutionReport with Pending New is simply an acceptance of the request, but not necessarily mean it is confirmed into order book.
The drop copy subscription can be used to check when the order is successfully cancelled.
See FIX Spot Order Life Cycle and ExecutionReport for details.
Tag | Name | Type | Required | Description |
---|---|---|---|---|
55 | Symbol | string | Y | e.g., ETH_CRO, BTC_USDT |
37 | OrderID | string | N | Order ID assigned by the Exchange. |
11 | ClOrdID | string | Y | Unique ID of cancel request as assigned by the buy-side. |
41 | OrigClOrdID | string | N | ClOrdID <11> of the previous non-rejected order (NOT the initial order of the day) when canceling or replacing an order. Uniqueness must be guaranteed across trading sessions. |
Response Attributes
An ExecutionReport (8) with ExecType=6 (Pending Cancel) for acceptance of the cancel request, pending for confirmation. Besides, OrderCancelReject (9) can be returned if cancel reject happens.
Tag | Name | Type | Required | Description |
---|---|---|---|---|
35 | MsgType | string | N | Must be 35=8 for pending cancel or 35=9 for cancel reject |
37 | OrderID | string | Y | Newly created order ID |
39 | OrdStatus | string | Y | 39=6 for an order cancel request being accepted, but not yet confirmed. |
11 | ClOrdID | string | Y | Unique identifier for Order as assigned by the buy-side. Uniqueness must be guaranteed across trading sessions. |
41 | OrigClOrdID | string | Y | Original Unique identifier for Order as assigned by the buy-side. Uniqueness must be guaranteed across trading sessions. |
150 | ExecType | string | N | 35=8 and 150=6 for an order cancel request being accepted, but not yet confirmed. |
See FIX Spot Order Life Cycle, ExecutionReport and OrderCancelReject for details.
OrderCancelReject (35=9)
The Order Cancel Reject <9> message is issued by the broker upon receipt of a cancel request or cancel/replace request message which cannot be honored. Requests to change price or decrease quantity are executed only when an outstanding quantity exists. Filled orders cannot be changed (i.e quantity reduced or price change. However, the broker/sellside may support increasing the order quantity on a currently filled order).
When rejecting a Cancel/Replace Request
Tag | Name | Type | Required | Description |
---|---|---|---|---|
35 | MsgType | string | Y | Must be 35=9 for cancel reject |
37 | OrderID | string | Y | Newly created order ID |
11 | ClOrdID | string | N | Unique identifier for Order as assigned by the buy-side. Uniqueness must be guaranteed across trading sessions. |
41 | OrigClOrdID | string | N | Original Unique identifier for Order as assigned by the buy-side. Uniqueness must be guaranteed across trading sessions. |
39 | OrdStatus | string | Y | OrdStatus value after this cancel reject is applied. |
434 | CxlRejResponseTo | string | Y | 1 = Order Cancel Request 2 = Order Cancel/Replace Request |
102 | CxlRejReason | Number | N | Cancel reject reason |
58 | Text | string | N | |
19 | ExecRefID | string | N | For CDC internal reference only. |
OrderMassCancelRequest (35=q)
Cancels all orders for a particular instrument/pair (asynchronous)
This call is asynchronous, so the response as OrderMassCancelReport is simply an acceptance of the request, but not necessarily mean it is confirmed into order book.
The drop copy subscription can be used to check when the order is successfully cancelled with ExecutionReport or rejected with OrderCancelReject message.
From the drop copy, for each respective order, Execution Report (8) with ExecType=6 (Pending Cancel) and/or ExecType=4 (Cancelled) for acceptance and confirmation of the cancel request respectively. Besides, OrderCancelReject (9) can be returned if cancel reject happens.
Tag | Name | Type | Required | Description |
---|---|---|---|---|
11 | ClOrdID |
string | Y | Unique ID of Order Mass Cancel Request (q) as assigned by the client. |
530 | MassCancelRequestType |
number | Y | Specifies the type of cancellation requested. Supported values: 1 : Cancel by Symbol |
55 | Symbol |
string | Depends | The symbol for which to cancel all orders. Required when MassCancelRequestType=1 |
Response Attributes
See OrderMassCancelReport for details
OrderMassCancelReport (35=r)
The Order Mass Cancel Report . Note that each affected order that is canceled is acknowledged with a separate Execution Report <8> or Order Cancel Reject <9> message.
Tag | Name | Type | Required | Description |
---|---|---|---|---|
11 | ClOrdID |
string | Y | Echoed back from the OrderMassCancelRequest |
19 | ExecRefID |
string | N | For CDC internal reference only |
530 | MassCancelRequestType |
number | Y | Echoed back from the OrderMassCancelRequest |
531 | MassCancelResponse |
number | N | If successful, echoes the MassCancelRequestType . |
532 | MassCancelRejectReason |
number | N | Reason why cancel request has failed. 1 : Unknown Symbol 5 : Unknown SecurityType |
MassOrder (35=DJ)
The MassOrder message, which we adopted from FIX 5.0 SP2, can be used to add or cancel multiple unrelated orders with a single message. Only the key order attributes for high performance trading are available.
The behaviour of individual orders within a MassOrder (35=DJ) may vary depending upon its attributes, e.g. OrdType (40) and TimeInForce (59). Individual orders may be cancelled with single order messages such as OrderCancelRequest. Each of the orders in the MassOrder (35=DJ) are to be treated as stand-alone individual orders.
Tag | Name | Type | Required | Description |
---|---|---|---|---|
2423 | MassOrderRequestID | string | Y | Reqeust ID. Will be echoed back in the respective Pending New or Pending Cancel messages. |
2427 | OrderResponseLevel | number | Y | Must be 2 : Ack each order |
2432 | TotNoOrderEntries | number | Y | 1 to 10 |
2643 | CommissionCurrency | string | N | Fee currency for trade. Only present if this message was the result of a fill. Valid Values: [SPOT] Buy - Base/Quote token/USD/USDT/EUR [SPOT] Sell - Quote token/USD/USDT/EUR [DERIV] Buy/Sell - USD/USDT/EUR Example: If a client would like to BUY CRO/BTC, the default fee token is CRO, valid tokens are CRO/BTC/USD/USDT/EUR. If a client would like to SELL CRO/BTC, the default fee token is BTC, valid tokens are BTC/USD/USDT/EUR. If a client would like to BUY/SELL BTCUSD-PERP, the default fee token is USD, valid tokens are USD/USDT/EUR. If a client has an insufficient balance in their preferred fee token, the system will switch to the default fee token. |
893 | LastFragment | boolean | Y | Must be Y |
2428 | NoOrderEntries | number | Y | 1 to 10. Must be the same as Tag 2432 . |
OrderEntryAction | number | Y | 1 : Add3 : Cancel |
|
Y | When Tag 2429 = 1 , fields as in NewOrderSingle are allowed.When Tag 2429 = 3 , fields as in OrderCancelRequest are allowed. |
Response Attributes
MassOrder sends 35=D or 35=F in batch respectively. Each order will follow their respective execution report. See ExecutionReport for details.
ExecutionReport (35=8)
Tag | Name | Value | Required | Description |
---|---|---|---|---|
35 | MsgType | 8 | Y | |
11 | ClOrdID | order123 | Y | Client-selected order ID. |
18 | ExecInst | 6 | N | Instructions for order handling on exchange. If more than one instruction is applicable to an order, this field can contain multiple instructions separated by space. |
19 | ExecRefID | 1 | N | For CDC internal reference only |
37 | OrderID | 123456 (Numeric) | Y | Server-assigned order ID |
17 | ExecID | 123456 (Numeric) | Y | unique execution ID. Equal to Fill ID if this message was the result of a fill |
55 | Symbol | BTC_USDT | Y | Symbol name |
54 | Side | 1 | Y | "1": buy; "2": sell |
38 | OrderQty | 1.2 | Y | Original order quantity |
44 | Price | 8000 | N | Original order price |
150 | ExecType | 1 | Y | Reason for this message (see below) |
39 | OrdStatus | 0 | Y | Order status (Please refer to standard FIX spec) |
14 | CumQty | 0.4 | Y | Quantity of order that has already been filled |
151 | LeavesQty | 0.8 | Y | Quantity of order that is still open |
636 | WorkingIndicator | Y or N | N | Indicates if the order is currently being worked. |
60 | TransactTime | 20241001-09:31:49.200226907 | N | Time of the order update. Only present on order updates |
6616 | OrderCreateTime | 20241001-09:31:49.200226907 | N | TransactTime when order is created with 39=0|150=0 |
31 | LastPx | 7999.25 | Y | Fill price. Only present if this message was the result of a fill |
32 | LastQty | 0.4 | Y | Fill quantity. Only present if this message was the result of a fill |
851 | LastLiquidityInd | 1, 2, 3 | N | "2": taker fill; "1": maker fill. Only present if this message was the result of a fill |
6 | AvgPx | 7999.25 | Y | Average fill price for all fills in order. Only present if this message was the result of a fill |
12 | Commission | 0.0067307233000000 | N | Fee for trade. Only present if this message was the result of a fill |
2643 | CommissionCurrency | CRO | N | Fee currency for trade. Only present if this message was the result of a fill |
13 | CommType | 3 | Y | Always 3 (absolute) |
103 | OrdRejReason | 3 | N | Reason the order was rejected (see below). Only present on rejected NewOrderSingle (D) requests. i.e. 1 = Unkown symbol 5 = Unknown Order 99 = Other |
58 | Text | 58 | N | Description of the reason the order was rejected (e.g., Too many requests). Only present on rejected NewOrderSingle (D) requests |
544 | CashMargin | 1, 2 | N | `1`: messages corresponds to an spot order. `2`: messages corresponds to an margin order. |
880 | TrdMatchID | string of number | N | Trade match ID |
10060 | TradeTransactTime | 20250203-11:02:30.133953794 | N | TransactTime when order is getting partial filled or fullly filled |
20101 | MatchCount | number | N |
Number of orders matched for this trade execution If it is Maker's Order, value is always 1 If it is Taker's Order, it is the number of orders matched for this trade execution |
20102 | MatchIndex | number | N |
Only appears if it is Maker's order. It represents which order entry of corresponding price level was matched This value is 0 base. If the matched order is on the top of the queue, it is shown 0. |
ExecType values
The ExecType (150) field indicates the reason why this ExecutionReport was sent.
ExecType | Description |
---|---|
0 | New order |
4 | Order cancelled |
A | Response to a successful NewOrderSingle (D) request |
8 | Response to a rejected NewOrderSingle (D) request |
6 | Response to a successful OrderCancelRequest (F) request |
I | Response to a OrderStatusRequest (H) |
F | Trade |
OrderStatusRequest (35=H)
Get details on a particular OPEN Orders only.
Tag | Name | Type | Required | Description |
---|---|---|---|---|
55 | Symbol | string | Y | |
11 | ClOrdID | string | N | Unique identifier for Order as assigned by the buy-side. |
37 | OrderID | number | Y | OrderID of the order to request. |
Response Attributes
An ExecutionReport (8) with ExecType=I (Order Status) will be returned.
Tag | Name | Type | Required | Description |
---|---|---|---|---|
35 | MsgType | string | Y | Must be 35=8 . |
150 | ExecType | string | Y | Must be 150=I . |
911 | TotNumReports | number | N | Must be 0 to indicate there is no match, otherwise this tag will not be populated. |
912 | LastRptRequested | number | N | Must be Y . |
* Order status request rejected for unknown order
Tag | Name | Type | Required | Description |
---|---|---|---|---|
35 | MsgType | string | Y | Must be 35=8 . |
150 | ExecType | string | Y | Must be 150=I . |
39 | OrdStatus | String | Y | Must be 39=8 Rejected. |
14 | CumQty | number | Y | Must be 14=0 . |
151 | LeavesQty | number | Y | Must be 151=0 . |
58 | Comment | String | N | Rejected Reason / code |
103 | OrdRejReason | number | N | 5 = Unknown Order 8 = Stale Order 13 = Incorrect quantity 99 = Other |
911 | TotNumReports | number | N | Must be 0 to indicate there is no match, otherwise this tag will not be populated. |
912 | LastRptRequested | number | N | Must be Y . |
See ExecutionReport for details.
MarketDataRequest (35=V)
Subscribes to Market Data: Order Book, Trades.
Tag | Name | Type | Required | Description |
---|---|---|---|---|
262 | MDReqID | string | Y | Market Data channel. Possible values: book.{Symbol}.{MarketDepth} , e.g. book.BTC_USDT.50 trade.{Symbol} , e.g. trade.ETH_CRO |
263 | SubscriptionRequestType | string | Y | Possible values: 1 : Subscribe 2 : Unsubscribe |
264 | MarketDepth | number | Y | Can be either 1 or 150 when 262 = book.{Symbol}.{MarketDepth} .Must be 0 when 262 = trade.{Symbol} |
265 | MDUpdateType | number | Y | Must be 1 : Incremental Refresh. |
266 | AggregatedBook | boolean | Y | Must be Y when 262 = book.{Symbol}.{MarketDepth} Must be N when 262 = trade.{Symbol} |
547 | MDImplicitDelete | boolean | Y | Must be N . |
267 | NoMDEntryTypes | number | Y | Must be 2 when 262 = book.{Symbol}.{MarketDepth} Must be 1 when 262 = trade.{Symbol} |
MDEntryType | string | Y | Possible values: 0 : Bid, 1 : Offer, 2 : Trade.When 262 = book.{Symbol}.{MarketDepth} , both 0 and 1 must be in the repeating group.When 262 = trade.{Symbol} , 2 must be in the repeating group. |
|
146 | NoRelatedSym | number | Y | Must be 1 |
Symbol | string | Y | Must be equal to {Symbol} as in 262 . |
Response Attributes
See MarketDataIncrementalRefresh and MarketDataRequestReject for details.
MarketDataIncrementalRefresh (35=X)
Response for Market Data Request.
Tag | Name | Type | Required | Description |
---|---|---|---|---|
262 | MDReqID | string | Y | Market Data channel. Possible values: book.{Symbol}.{MarketDepth} , e.g. book.BTC_USDT.50 trade.{Symbol} , e.g. trade.ETH_CRO |
278 | MDEntryID | string | N | i. Trade ID when 269 = 2 . ii. sequence id in order book |
280 | MDEntryRefID | string | N | Referring to previous sequence id (MDEntryID) in order book |
55 | Symbol | string | Y | |
10273 | MDEntryTimeMs | number | Y | Same meaning as 272 and 273 , with representation as epoch in milliseconds |
268 | NoMDEntries | number | Y | Number of market data entries. |
MDUpdateAction | string | Y | Possible values: 0 : New, 1 : Update, 2 : Delete. |
|
MDEntryType | string | Y | Possible values: 0 : Bid, 1 : Offer, J : Empty Book, 2 : Trade. When 269 = J , please clean the entire order book. |
|
MDEntryPx | number | Y | ||
MDEntrySize | number | Y | ||
NumberOfOrders | number | N | ||
TakerSide | string | N | Similar meaning to 851 to indiate the liquidity taker side.1 : Buyer is the taker2 : Seller is the taker. |
|
TrdMatchID | string | N | Trade match ID |
MarketDataRequestReject (35=Y)
The Market Data Request Reject
Tag | Name | type | Required | Description |
---|---|---|---|---|
262 | MDReqID | Number | Y | Must refer to the MDReqID <262> of the request. |
281 | MDReqRejReason | String | N | Reject reason |
816 | NoAltMDSource | Number | N | Number of market data source |
=>817 | AltMDSourceID | Number | N | |
58 | Text | String | N | |
354 | EncodedTextLen | Number | N | Must be set if EncodedText <355> field is specified and must immediately precede it. |
355 | EncodedText | String | N | Encoded (non-ASCII characters) representation of the Text <58> field in the encoded format specified via the MessageEncoding <347> field. |
SecurityDefinitionRequest (35=c)
The FIX Client could request the details of a tradable instrument by sending a Security Definition Request (35=c) message to the gateway. The Symbol (55) is used as the unique identifier of an instrument.
Tag | Name | type | Req. | Description |
---|---|---|---|---|
320 | SecurityReqID | String | Y | The unique identifier of this request |
321 | SecurityRequestType | String | Y | Required for snapshot and/or subscribe. Valid values: 0 = Request Security identity and specifications ( ie. Symbol tag55 is required ) |
55 | Symbol | String | Y | Required for snapshot and/or subscribe. |
263 | SubscriptionRequestType | String | Y | Valid values: 0 = Snapshot 1 = Snapshot and subscribe this security definition changes 2 = Unsubscribe |
Response Attributes
See SecurityDefinition for details.
SecurityDefinition (35=d)
After received 35=c, gateway will acknowledge and send a Security Definition (35=d) message to the client. The subscribed clients will be sent a Security Definition (35=d) message for each new instrument. Client will receive multiple Security Definition (35=d) when receiving (35=c,321=3)
Tag | Name | type | Req. | Description |
---|---|---|---|---|
320 | SecurityReqID | String | Y | The unique identifier of this request from 35=d |
322 | SecurityResponseID | String | Y | Identifier for the Security Definition <d> message |
323 | SecurityResponseType | String | Y | 1 = Accept security proposal as is |
55 | Symbol | String | Y | The fully qualified product symbol |
870 | NoInstrAttrib | Number | N | Number of repeating InstrAttrib group entries. |
=>871 | InstrAttribType | Number | N | Type of instrument attribute Valid values: 1000=Display name 1001=Base currency 1002=Quote currency 1003=Quantity Decimal 1004=Quote Decimal 1005=Price ticksize 1006=Quantity ticksize 1007=Max leverage 1008=Tradable 1009=Expiry timestamp ms 1010=Beta Product 1011=Margin Buy Enabled 1012=Margin Sell Enabled |
=>872 | InstrAttribValue | String | N | Value of instrument attribute, if applicable |
Snapshot/Full Refresh (35=W)
The Market Data messages are used as the response to a Market Data Request 'V' message. In all cases, one Market Data message refers only to one Market Data Request 'V'. It can be used to transmit a 2-sided book of orders or list of quotes, a list of trades, index values, opening, closing, settlement, high, low, or VWAP prices, the trade volume or open interest for a security, or any combination of these.
Tag | Name | Type | Required | Description |
---|---|---|---|---|
262 | MDReqID | string | Y | Market Data channel. Possible values: book.{Symbol}.{MarketDepth} , e.g. book.BTC_USDT.50 trade.{Symbol} , e.g. trade.ETH_CRO |
278 | MDEntryID | string | N | i. Trade ID when 269 = 2 . ii. sequence id in order book |
55 | Symbol | string | Y | |
10273 | MDEntryTimeMs | number | Y | Same meaning as 272 and 273 , with representation as epoch in milliseconds |
268 | NoMDEntries | number | Y | Number of market data entries. |
MDUpdateAction | string | Y | Possible values: 0 : New, 1 : Update, 2 : Delete. |
|
MDEntryType | string | Y | Possible values: 0 : Bid, 1 : Offer, J : Empty Book, 2 : Trade. When 269 = J , please clean the entire order book. |
|
MDEntryPx | number | Y | ||
MDEntrySize | number | Y | ||
NumberOfOrders | number | N |
SecurityListRequest (35=x)
Security List is an aggregation of instrument definitions. It is useful when the FIX Client want get all instrument definitions, or expect to get numerous instrument definitions in one go. The FIX Client should send a Security List Request (35=x) message to the gateway.
Tag | Name | type | Req. | Description |
---|---|---|---|---|
320 | SecurityReqID | String | Y | The unique identifier of this request |
559 | SecurityListRequestType | String | Y | Required for snapshot and/or subscribe. Valid values: 0 = Symbol (tag55) |
263 | SubscriptionRequestType | Number | Y | Valid values: 0 = Snapshot 1 = Snapshot and subscribe the security list changes 2 = Unsubscribe |
Response Attributes
See SecurityList for details.
SecurityList (35=y)
After receiving 35=x, the Gateway will acknowledge this message by sending one or more Security List (35=y) message, because the gateway divides the list of instruments into chunks, and each chunk will construct a Security List (35=y) message so as to avoid an excessively large Security List (35=y) message. The subscribed clients will be sent a Security Definition (35=d) message for each new instrument. ie. One instrument with one 35=y only.
Tag | Name | type | Req. | Description |
---|---|---|---|---|
320 | SecurityReqID | String | Y | The unique identifier of Security List i.e. From (35=x) request message |
322 | SecurityResponseID | String | Y | Identifier for the Security List response message |
560 | SecurityRequestResult | Number | Y | Valid values: 0 = Valid 2 = Not found 3 = Not authorised 4 = Unavailable |
893 | LastFragment | String | Y | Y = Last message in a sequence of messages N = Not last message in a sequence of messages |
146 | NoRelatedSym | Number | Y | Specifies the number of repeating symbols (instruments) specified |
=> 55 | Symbol | String | Y | The fully qualified product symbol |
=> 870 | NoInstrAttrib | Number | N | Number of repeating InstrAttrib group entries. |
=> => 871 | InstrAttribType | Number | N | Type of instrument attribute Valid values: 1000=Display name 1001=Base currency 1002=Quote currency 1003=Quantity Decimal 1004=Quote Decimal 1005=Price ticksize 1006=Quantity ticksize 1007=Max leverage 1008=Tradable 1009=Expiry timestamp ms 1010=Beta Product 1011=Margin Buy Enabled 1012=Margin Sell Enabled |
=> => 872 | InstrAttribValue | String | N | Value of instrument attribute, if applicable |
BusinessMessageReject (35=j)
The Business Message Reject
Tag | Name | Type | Required | Description |
---|---|---|---|---|
35 | MsgType | string | Y | Must be 35=j for Business Message Reject |
45 | RefSeqNum | string | Y | MsgSeqNum <34> of rejected message |
372 | RefMsgType | string | Y | The MsgType <35> of the FIX message being referenced. |
379 | BusinessRejectRefID | string | N | The value of the business-level 'ID' field on the message being referenced. |
380 | BusinessRejectReason | string | Y | Code to identify reason for a Business Message Reject 0 = Other 1 = Unkown ID 2 = Unknown Security 3 = Unsupported Message Type 4 = Application not available 5 = Conditionally Required Field Missing 6 = Not authorized 7 = DeliverTo firm not available at this time |
58 | Text | string | N | Business Message Reject reason |
19 | ExecRefID | string | N | For CDC internal reference only |