Public FIX Interface v2

For FIX Interface access, contact support.

1 Introduction

This is a public FIX Interface. It describes FIX messaging interface (messages, component blocks, and fields) supported by Qovex FIX Gateway. This interface is based on standard FIX 4.4 (Financial Information eXchange protocol, http://www.fixtradingcommunity.org/) and is adopted to Qovex FIX Gateway specifics.

Qovex FIX Gateway supports only those messages, component blocks and fields, which are described in this document. Note that all fields, which are required or conditionally required by FIX 4.4 standard, but absent in Qovex Public FIX Interface specification are optional and will be ignored. Messages containing fields, which are absent in FIX 4.4 standard and in this document, will be considered as invalid and will be rejected.

1.1 System Overview

Qovex FIX Gateway is FIX compliant gateway that provides a direct connectivity to the core Qovex trading infrastructure. The communication is done via appropriate FIX messages.

Qovex FIX Gateway operates in UTC time zone.

1.2 Reading Instructions

Each message or component block is presented in table. Each table row is a message field or component block having the following characteristics:

Tag unique field identifier
Name field name
Req’d
shows whether the field is required or not in appropriate message or component block:
‘Y’ tag is required (mandatory)
‘N’ tag is not required (optional)
‘C’ tag is conditionally required.
‘Y*’ tag is required by Qovex FIX Gateway, but not required by the standard FIX 4.4 protocol
‘N*’ tag is not required by Qovex FIX Gateway, but required by the standard FIX 4.4 protocol
Type field type
Comments comments, list of valid values and additional information for the tag.

2 Supported FIX Messages

Session level messages

All FIX 4.4 session-level messages are supported. The structure and semantics of FIX messages are identical to the standard.

Application level messages

The following FIX application-level messages are supported:

 

Other application-level messages are not supported. All unsupported messages are rejected with Session Level Reject (MsgType = '3').

3 FIX Session Layer

3.1 FIX Session Management

3.1.1 FIX Session Establishment & Authentication

In order to establish FIX session, each FIX Client must initiate secure (SSL) TCP/IP socket connection to Qovex FIX Gateway and submit Logon (MsgType = ‘A’) FIX message equipped with Username (553) and Password (554).

FIX Session Parameters
Host: fixserver.bitstamp.net
Port: 5001
SSL Required: Yes
SenderCompID (49): Your Customer ID
SenderSubID (50): Your Trade account ID* (0 in case of main account)
TargetCompID (56): Always equals ‘BITSTAMP’ constant
Heartbeat Interval (108): 30 (recommended)
Username (553): Must contain API key, assigned to the Customer ID
Password (554): Must contain API SECRET, assigned to the Customer ID

*Trade account id needs to match the sub-account unique id of the API key used for login. Trade account id for main account is 0.

For FIX Interface access, contact support.

3.1.2 FIX Session Termination

In order to close FIX session, FIX Client should submit Logout (MsgType = ‘5’) message, wait for confirming Logout and close TCP/IP socket connection to Qovex FIX Gateway host. FIX Client is allowed to start and stop FIX session at any time.

3.1.3 FIX Server Restart

Occasionally servers need to be restarted (e.g. due to software updates). When this happens, clients get a news message notifying them to reconnect. Clients have 10 seconds to reconnect, otherwise server logs them out automatically. To recover, users should send a Logon message.

Example:

  1. Server needs to be restarted. It sends the following FIX message: '8=FIX.4.4|9=109|35=B|34=44|49=BITSTAMP|52=20220401-12:01:11.145|56=<user_id>|148=Server is about to restart. Please reconnect|10=113|'
  2. Server waits for 10 seconds.
  3. If clients have not reconnected, the server logs them out, by sending the following message: '8=FIX.4.4|9=121|35=5|34=65|49=BITSTAMP|52=20220401-12:01:16.146|56=<user_id>|58=Disconnected due to server going under restart procedure.|10=109|'.
  4. Clients have to send a Logon message to reconnect.

3.1.4 Sequence Numbers Reset

Sequence numbers will be reset when a user reaches a predefined threshold. The threshold of sequence number is currently set to 1,000,000.

When the user reaches the sequence number threshold, the server sends a fix news event notifying the user of the upcoming sequence number reset. After that user has 5 seconds to reconnect and reset the sequence numbers. If the user does not respond, the server sends an OnLogout event with ResetSeqNumFlag set to ‘Y’.

Example:

  1. User exceeds a threshold.
  2. Server sends the following FIX message: '8=FIX.4.4|9=132|35=B|34=1000002|49=BITSTAMP|52=20220401-12:01:11.145|56=<user_id>|148=Sequence number threshold reached. Please reset sequence numbers.|10=234|'.
  3. Server waits for 5 seconds.
  4. If user has not reconnected, the server logs them out, by sending the following message: '8=FIX.4.4|9=130|35=5|34=1|49=BITSTAMP|52=20220401-12:01:16.146|56=<user_id>|58=Sequence number threshold reached. Resetting sequence number.|141=Y|10=231|'.
  5. User has to send a Logon message to reconnect.

3.1.5 Reject Handling

Qovex FIX Gateway will reject message deviating from expected ones as follows:

FIX Message Reject Reason
Session Level Reject (MsgType = ‘3’)

Received FIX message violates FIX session level rules.

Example:

  • message lacking a mandatory tag
  • message with an incorrect value for a specific tag
  • tag without a value
  • unknown message type
  • tag appears more than once
  • number of repeating group entries does not comply with leading tag, etc

3.2 FIX Session Level Messages

3.2.1 Logon (MsgType = ‘A’)

The Logon (A) message authenticates a user establishing a connection to a remote system. The Logon (A) message must be the first message sent by the application requesting to initiate a FIX session.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = 'A'
58 Text N String We support the following parameters:
  • Parameter {"asyncSession":true} enables an async session. An async session enables significantly higher throughput, but does not guarantee an execution order (i.e. orders that were sent sooner might be placed later and vice versa).
    Default value: false.
  • Parameter {"preserveOrders":true} preserves orders on logout. On default the orders are canceled on logout. If this is left out, the default value ('{preserveOrders:false}') is considered.
    NOTE: In the vast majority of scenarios all orders will be canceled as expected on disconnect. However, there is a possibility that a network (or other similar) anomaly may result in some orders not being canceled.
  • Parameter {"IncludeTradeInfo":true} ensures that trade ID of the associated trade is included in AgreementID (914).
    Default value: false.
  • Parameter {"LogoutOnInactivity":true} offers to automatically disconnect the session on inactivity. It prevents unexpected behavior when the session becomes stale.
    Default value: false.
Of course all parameters can be used in any combination. When some parameter is left out, the default value is considered.
Examples:
  • {"asyncSession":true, "preserveOrders":true}
  • {"asyncSession":true, "LogoutOnInactivity":true}
  • {"asyncSession":true, "LogoutOnInactivity":true, "preserveOrders":false}

98 EncryptMethod Y Int

Method of encryption. Supported values:

  • '0' — None
108 HeartBtInt Y Int Heartbeat interval in seconds.
141 ResetSeqNumFlag N Boolean Indicates that the both sides of the FIX session should reset sequence numbers.
553 Username Y* String Must contain API key assigned to the customer.
554 Password Y* String Must contain API secret assigned to the customer.
<Standard Message Trailer> Y

3.2.2 Heartbeat (MsgType = ‘0’)

The Heartbeat (0) monitors the status of the communication link and identifies when the last of a string of messages was not received.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = '0'
112 TestReqID N String Identifier included in Test Request (1) message to be returned in resulting Heartbeat (0).
<Standard Message Trailer> Y

3.2.3 Test Request (MsgType = ‘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).

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = '1'
112 TestReqID Y String Identifier included in Test Request (1) message to be returned in resulting Heartbeat (0).
<Standard Message Trailer> Y

3.2.4 Resend Request (MsgType = ‘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.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = '2'
7 BeginSeqNo Y SeqNum Message sequence number of first message in range to be resent.
16 EndSeqNo Y SeqNum Message sequence number of last message in range to be resent. If request is for a single message BeginSeqNo (7) = EndSeqNo (16). If request is for all messages subsequent to a particular message, EndSeqNo (16) = '0' (representing infinity).
<Standard Message Trailer> Y

3.2.5 Session Level Reject (MsgType = ‘3’)

Session Level Reject message is be used issued to reject message, which cannot be properly processed due to a session-level rule violation.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = '3'
45 RefSeqNum Y SeqNum MsgSeqNum (34) of rejected message.
371 RefTagID N Int The tag number of the FIX field being referenced.
372 RefMsgType N String(10) The MsgType (35) of the FIX message being referenced.
373 SessionRejectReason N Int

Code to identify reason for reject.

Supported values:

  • '0' (Invalid tag number)
  • '1' (Required tag missing)
  • '2' (Tag not defined for this message type)
  • '3' (Undefined tag)
  • '4' (Tag specified without a value)
  • '5' (Value is incorrect (out of range) for this tag)
  • '6' (Incorrect data format for value)
  • '7' (Decryption problem)
  • '8' (Signature problem)
  • '9' (CompID problem)
  • '10' (SendingTime accuracy problem)
  • '11' (Invalid MsgType (35))
  • '13' (Tag appears more than once)
  • '14' (Tag specified out of required order)
  • '15' (Repeating group fields out of order)
  • '16' (Incorrect NumInGroup count for repeating group)
  • '17' (Non "data" value includes field delimiter)
  • '99' (Other)
58 Text N String Message to explain reason for rejection.
<Standard Message Trailer> Y

3.2.6 Reset Sequence (MsgType = ‘4’)

The Sequence Reset (4) 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'.

Reset mode

Reset mode involves specifying an arbitrarily higher new sequence number to be expected by the receiver of the Sequence Reset (4) message, and is used to re-establish a FIX session after an unrecoverable application failure.

Reset mode is indicated by the GapFillFlag (123) field = 'N' or if the field is omitted.

For more details, please read the following information.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = '4'
123 GapFillFlag N Boolean

Indicates that the Sequence Reset (4) message is replacing administrative or application messages which will not be resent.

Supported values:

  • ‘Y' (Gap Fill message, MsgSeqNum field valid)
  • 'N' (Sequence Reset, ignore MsgSeqNum)
36 NewSeqNo Y SeqNum New sequence number.
<Standard Message Trailer> Y

3.2.7 Logout (MsgType = ‘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. To recover from this a user should send a Logon message with a 'ResetSeqNumFlag' field set to 'Y'.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = '5'
58 Text N String Logout reason.
<Standard Message Trailer> Y

3.3 FIX Application Level Messages

3.3.1 FIX Component Blocks

3.3.1.1 Standard Message Header

Each administrative or application message is preceded by a standard header. The header identifies the message type, length, destination, sequence number, origination point and time.

Tag Field Name Req'd Type Comments
8 BeginString Y String

Identifies beginning of new message and protocol version.

Always unencrypted, must be first field in message.

9 BodyLength Y Length

Message length, in bytes, forward to the CheckSum field.

Always unencrypted, must be second field in message.

35 MsgType Y String

Defines message type.

Always unencrypted, must be third field in message.

49 SenderCompID Y String

Assigned value used to identify firm sending message.

Always unencrypted.

56 TargetCompID Y String

Assigned value used to identify receiving firm.

Always unencrypted.

34 MsgSeqNum Y SeqNum Integer message sequence number.
43 PossDupFlag N Boolean

Indicates possible retransmission of message with this sequence number. Required for retransmitted messages.

Supported values:

  • ‘Y’ (Possible duplicate)
  • 'N' (Original transmission)
97 PossResend N Boolean

Indicates that message may contain information that has been sent under another sequence number.

Supported values:

  • ‘Y’ (Possible resend)
  • 'N' (Original transmission)
52 SendingTime Y UTCTimestamp

Time of message transmission (expressed in UTC).

YYYYMMDD-HH:MM:SS.sss

122 OrigSendingTime N UTCTimestamp

Original time of message transmission when transmitting messages as the result of resend request (expressed in UTC).

Required for message resent as a result of a resend request.

3.3.1.2 Standard Message Trailer

Each administrative or application message is terminated by a standard trailer. The trailer is used to segregate messages and contains the three-digit character representation of the Checksum value.

Tag Field Name Req'd Type Comments
10 CheckSum Y String

Three bytes, simple checksum.

Always unencrypted, always last field in message.

3.3.2 General

3.3.2.1 News (MsgType = ‘B’)

FIX message “News (B)” is used to inform user about the incoming actions.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = 'B'
148 Headline Y String Specifies the headline text
<Standard Message Trailer> Y

3.3.3 Market Data

3.3.3.1 Market Data Request (MsgType = ‘V’)

FIX message “Market Data Request (V)” is used to subscribe for Order Book (events/changes) or Live Trades. Note that sending subsequent market data request invalidates previous subscriptions. To subscribe to more than one trading pair send a request containing all the wanted pairs (a repeating group).

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = 'V'
262 MDReqID Y String Unique identifier for Market Data Request (V).
263 SubscriptionRequestType Y Char

Subscription Request Type.

Supported values:

  • 1 - Subscribe
  • 2 - Unsubscribe
264 MarketDepth Y Int

Depth of market for Order Book Snapshot.

Supported values: from 0 to 20, where 0 means full Book (same as 20), but every other value means that received events contain at most that given amount of price levels of Book.
Example: If given value of 5, up to 5 price levels will be sent.

267 NoMDEntryTypes Y NumInGroup Number of MDEntryType (269) fields requested
=>269 MDEntryType Y Char

Type Market Data Entry.

Supported values:

  • 0 – Bid
  • 1 – Offer
  • 2 – Trade
146 NoRelatedSym Y NumInGroup Number of symbols (instruments) requested.
=>55 Symbol Y String

Trading pair.

Supported values:

<Currency Pairs>

<Standard Message Trailer> Y

3.3.3.2 Market Data – Full Refresh (MsgType = ‘W’)

FIX message “Market Data – Snapshot/Full Refresh (W)” is used to deliver updates of Order Book.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = 'W'
262 MDReqID Y* String Unique identifier for Market Data Request (V) this message is sent in reply to.
55 Symbol Y String

Trading pair.

Valid values:

<Currency Pairs>

268 NoMDEntries Y NumInGroup Number of entries following.
=>269 MDEntryType Y Char

Type of Market Data Entry.

Valid values:

  • 0 – Bid
  • 1 – Offer
=>270 MDEntryPx Y* Price Price of the Market Data Entry.
=>271 MDEntrySize Y* Qty Quantity or volume represented by the Market Data Entry.
<Standard Message Trailer> Y

3.3.3.3 Market Data – Incremental Refresh (MsgType = ‘X’)

FIX message “Market Data – Incremental Refresh (X)” is used to deliver live ticker.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = 'X'
262 MDReqID Y* String Unique identifier for Market Data Request (V) this message is sent in reply to.
268 NoMDEntries Y NumInGroup Number of entries following.
=>279 MDUpdateAction Y Char

Type of Market Data update action.

Valid values:

  • 0 – New
=>269 MDEntryType Y* Char

Type of Market Data entry.

Valid values:

  • 2 – Trade
=>278 MDEntryID Y* String Trade unique ID.
=>55 Symbol Y* String

Trading pair.

Valid values:

<Currency Pairs>

=>270 MDEntryPx Y* Price Price of the Market Data Entry.
=>271 MDEntrySize Y* Qty Quantity or volume represented by the Market Data Entry.
=>272 MDEntryDate Y* UTCDateOnly Date of Market Data Entry.
=>273 MDEntryTime Y* UTCTimeOnly Time of Market Data Entry.
288 MDEntryBuyer Y* Int This value represents a BuyOrderID*.
289 MDEntrySeller Y* Int This value represents a SellOrderID*.
<Standard Message Trailer> Y

* NOTE: The lower ID value between MDEntryBuyer and MDEntrySeller represents a maker side, and the higher ID value represents a taker side.

3.3.3.4 Market Data Request Reject (MsgType = ‘Y’)

FIX message “Market Data Request Reject (Y)” is used to reject the Market Data Request, due to business or technical reasons.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = 'Y'
262 MDReqID Y String Must refer to the MDReqID (262) of the request.
281 MDReqRejReason Y* Char

Reason for the rejection of a Market Data Request (V).

Valid values:

  • '0' — Unknown symbol
  • '1' — Duplicate MDReqID (262)
  • '4' — Unsupported SubscriptionRequestType (263)
  • '5' — Unsupported MarketDepth (264)
  • '8' — Unsupported MDEntryType (269)
  • 'y' — Unknown MDReqID (262)
<Standard Message Trailer> Y

3.3.4 Trading

3.3.4.1 New Order – Single (MsgType = ‘D’)

FIX message “New Order – Single (D)” is used to submit the order to the Qovex Trading System.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = 'D'
11 ClOrdID Y String Unique identifier of the order as assigned by the client
55 Symbol Y String

Trading pair.

Valid values:

<Currency Pairs>

54 Side Y Char

Side of order.

Valid values:

  • '1' - Buy
  • '2' - Sell
58 Text N String

Optional JSON that extends FIX with MOC order type

MOC Support

FIX protocol does not support TimeInForce MOC (Maker Or Cancel) by default. By setting text value of {"moc":true} and TimeInForce value '1' (Good Till Cancel), we consider the order to have Maker Or Cancel TimeInForce.

60 TransactTime N* UTCTimestamp Timestamp provided by the client.
38 OrderQty Y Qty Quantity ordered.
40 OrdType Y Char

Order type.

Valid values:

  • '1' - Market
  • '2' - Limit
44 Price C Price Price of the limit order. Required for OrderType(40) = ‘2’ (Limit)
59 TimeInForce Y* Char

Specifies how long the order remains in effect.

Valid values:

  • '0' - Day
  • '1' - Good Till Cancel (GTC)
  • '3' - Immediate Or Cancel (IOC)
  • '4' – Fill or Kill (FOK)
  • '6' – Good Till Date (GTD)
126 ExpireTime Y* UTCTimestamp Time/Date of order expiration (always expressed in UTC (Universal Time Coordinated, also known as "GMT") This is the expiration time of a 'Good Till Date' TimeInForce <59>. UTCTimestamp is string field representing Time/date combination represented in either YYYYMMDD-HH:MM:SS (whole seconds) or YYYYMMDD-HH:MM:SS.sss (milliseconds) format, colons, dash, and period required.
<Standard Message Trailer> Y

3.3.4.2 Order Cancel Request (MsgType = ‘F’)

FIX message “Order Cancel Request (F)” is used to cancel a specific order previously submitted to the Qovex Trading System.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = 'F'
41 OrigClOrdID Y String ClOrdID (11) of the previous non-rejected order when canceling an order. Used for reference only.
11 ClOrdID Y String Unique ID of cancel request as assigned by the client
37 OrderID Y* String Unique identifier of the order in Qovex Trading System. This ID will be used to find the order to be cancelled.
60 TransactTime N* UTCTimestamp Timestamp provided by the client.
<Standard Message Trailer> Y

3.3.4.3 Order Mass Cancel Request (MsgType = ‘q’)

FIX message "Order Mass Cancel Request (q)" is used to cancel all client orders in the Qovex Trading System.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = 'q'
11 ClOrdID Y String Unique ID of Order Mass Cancel Request (q) as assigned by the client
530 MassCancelRequestType Y Char

Specifies the type of cancellation requested.

Valid values:

  • '7' - Cancel all orders
60 TransactTime N* UTCTimestamp Time of order creation.
<Standard Message Trailer> Y

3.3.4.4 Execution Report (MsgType = ‘8’)

FIX message "Execution Report (8)" is used to:

  • confirm the receipt of an order;
  • confirm changes to an existing order (i.e. accept cancel request);
  • relay order status information;
  • relay fill information on working orders;
  • reject orders.

NOTE: In case of self-matching, you will receive an execution report similar to this:
'8=FIX.4.4|​9=324|​35=8|​34=2|​49=BITSTAMP|​52=20221025-09:58:10.588|​56=<user_id>|​6=0.00000000|​11=ClOrdId12345|​14=0.00000000|​17=1547701927653376|​37=12345678900|​39=8|​54=1|​55=BTC/EUR|​58=Order execution rejected due to disabled self trade|​60=20221025-09:58:10.588|​103=11|​150=8|​151=0.00000000|​10=143|'

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = '8'
11 ClOrdID Y* String Unique identifier of the order or cancel request this Execution Report relates to, as assigned by the client.
37 OrderID Y String Unique identifier of the order assigned by Qovex Trading System.
41 OrigClOrdID C String ClOrdID (11) of the cancelled order. Conditionally required in response to Cancel request (ExecType (150) = Canceled).
17 ExecID Y String Unique identifier of Execution Report (8) message as assigned by Qovex.
150 ExecType Y Char

Describes the specific Execution Report (8) type.

Valid values:

  • '0' - New
  • '4' - Canceled
  • '8' - Rejected
  • 'F' - Trade (partial fill or fill)
39 OrdStatus Y Char

Identifies current status of order.

Valid values:

  • '0' - New
  • '1' - Partially filled
  • '2' - Filled
  • '4' - Canceled
  • '8' - Rejected
55 Symbol Y String

Trading pair.

Valid values:

<Currency Pairs>

54 Side Y Char

Side of order.

Valid values:

  • '1' - Buy
  • '2' - Sell
40 OrdType N Char

Order type.

Valid values:

  • '1' - Market
  • '2' - Limit
32 LastQty С Qty

Quantity bought/sold on this fill.

Required if ExecType (150) = ‘F’ (Trade).

31 LastPx С Price

Price of this fill.

Required if ExecType (150) = ‘F’ (Trade).

151 LeavesQty Y Qty Quantity open for further execution. Always 0 for ExecType=’8’ (Rejected).
14 CumQty Y Qty Currently quantity for the order. Always 0 for ExecType=’8’ (Rejected).
6 AvgPx Y Price Always 0.
60 TransactTime N UTCTimestamp Time of execution.
58 Text N String Error message in case of ER_REJECT.
103 OrdRejReason N Int Code to identify reason for cancel rejection. If present, value is always '99' - Other.
137 MiscFeeAmt N Amt Fees applied on this trade.
<Standard Message Trailer> Y

3.3.4.5 Order Status Request (MsgType = ‘H’)

FIX message "Order Status Request (H)" is used to obtain the status of an order. Response to this message is an Execution Report.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = 'H'
37 OrderID N String Unique identifier of the order in Qovex Trading System. If this field is included, ClOrdID is ignored.
11 ClOrdID Y String Unique ID of cancel request as assigned by the client. If OrderID is included, this field is ignored. This field can be left empty.
54 Side Y Char

Side of order.

Valid values:

  • '1' - Buy
  • '2' - Sell
<Standard Message Trailer> Y

3.3.4.6 Order Cancel Reject (MsgType = ‘9’)

FIX message "Order Cancel Reject (9)" is used to reply to a Cancel Request (F) message which cannot be honored.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = '9'
37 OrderID Y String Unique identifier of the order in Qovex Trading System.
11 ClOrdID Y String Unique ID of cancel request as assigned by the client.
41 OrigClOrdID Y String ClOrdID (11) of the previous non-rejected order when canceling an order.
39 OrdStatus Y Char

Identifies current status of order.

Valid values:

  • '8' - Order Cancel Rejected (8)
434 CxlRejResponseTo Y Char

Identifies the type of request that an Order Cancel Reject (9) is in response to.

Valid values:

  • '1' - Order Cancel Request (F)
60 TransactTime N UTCTimestamp Timestamp of the reject being sent.
102 CxlRejReason N Int

Code to identify reason for cancel rejection.

Valid values:

  • '1' - Unknown order
  • '99' - Other
58 Text N String Free format text string – the reason for the reject.
<Standard Message Trailer> Y

3.3.4.7 Order Mass Cancel Report (MsgType = ‘r’)

FIX message "Order Mass Cancel Report (r)" is used to acknowledge an Order Mass Cancel Request (q).

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = 'D'
11 ClOrdID Y* String ClOrdID provided on the Order Mass Cancel Request (q)
37 OrderID Y String

Unique Identifier for the Order Mass Cancel Request (q) assigned by the recipient of the Order Mass Cancel Request (q).

Valid values:

  • '' (empty string)
60 TransactTime N UTCTimestamp Time this report was initiated/released.
530 MassCancelRequestType Y Char Order Mass Cancel Request Type accepted by the system.
531 MassCancelResponse Y Char

Specifies the action taken by system as a result of the Order Mass Cancel Request (q).

Valid values:

  • '0' - Cancel Request Rejected
  • '7' - Cancel all orders
532 MassCancelRejectReason N Int

Reason Order Mass Cancel Request (q) was rejected.

Valid values:

  • '99' - Other
58 Text N String Free format text string – the reason for the reject.
<Standard Message Trailer> Y

3.3.4.8 Business Message Reject (MsgType = ‘j’)

FIX message " Business Message Reject (j)" is used to reject an application-level message which fulfills session-level rules and cannot be rejected via any other means.

Tag Field Name Req'd Type Comments
<Standard Message Header> Y MsgType = 'j'
45 RefSeqNum N SeqNum Reference message sequence number.
372 RefMsgType Y String The MsgType (35) of the FIX message being referenced.
379 BusinessRejectRefID N String The value of the business-level "ID" field on the message being referenced.
380 BusinessRejectReason Y Int

Code to identify reason for a Business Message Reject (j) message.

Valid values:

  • '0' - Other
  • '1' - Unknown ID
  • '2' - Unknown Security
  • '3' - Unsupported Message Type
  • '4' - Application not available
  • '5' - Conditionally Required Field Missing
  • '6' - Not authorized
58 Text N String Free format text string – the reason for the reject.
<Standard Message Trailer> Y

4 Appendix

4.1 Currency Pairs

This is the complete list of supported currency pairs:

  • BTC/USD,
    BTC/EUR,
    BTC/GBP,
    BTC/USDC,
    BTC/USDT,
    BTC/RLUSD
  • GBP/USD
  • EUR/USD
  • XRP/USD,
    XRP/EUR,
    XRP/BTC,
    XRP/GBP,
    XRP/USDT,
    XRP/RLUSD
  • LTC/BTC,
    LTC/USD,
    LTC/EUR
  • ETH/BTC,
    ETH/USD,
    ETH/EUR,
    ETH/GBP,
    ETH/USDC,
    ETH/USDT,
    ETH/RLUSD
  • BCH/USD,
    BCH/EUR,
    BCH/BTC
  • XLM/BTC,
    XLM/USD,
    XLM/EUR,
    XLM/GBP
  • LINK/USD,
    LINK/EUR,
    LINK/GBP,
    LINK/BTC
  • USDC/USD,
    USDC/EUR,
    USDC/USDT
  • ETH2/ETH
  • AAVE/USD,
    AAVE/EUR,
    AAVE/BTC
  • BAT/USD,
    BAT/EUR
  • UMA/USD,
    UMA/EUR
  • DAI/USD
  • KNC/USD,
    KNC/EUR
  • MKR/USD,
    MKR/EUR
  • ZRX/USD,
    ZRX/EUR
  • ALGO/USD,
    ALGO/EUR
  • AUDIO/USD,
    AUDIO/EUR
  • CRV/USD,
    CRV/EUR
  • SNX/USD,
    SNX/EUR
  • UNI/USD,
    UNI/EUR,
    UNI/BTC
  • YFI/USD,
    YFI/EUR
  • COMP/USD,
    COMP/EUR
  • GRT/USD,
    GRT/EUR
  • LRC/USD,
    LRC/EUR
  • USDT/USD,
    USDT/EUR
  • FLR/USD,
    FLR/EUR
  • MANA/USD,
    MANA/EUR
  • MATIC/USD,
    MATIC/EUR
  • SUSHI/USD,
    SUSHI/EUR
  • CHZ/USD,
    CHZ/EUR
  • ENJ/USD,
    ENJ/EUR
  • HBAR/USD,
    HBAR/EUR
  • AXS/USD,
    AXS/EUR
  • SAND/USD,
    SAND/EUR
  • STORJ/USD,
    STORJ/EUR
  • ADA/USD,
    ADA/EUR,
    ADA/BTC
  • FET/USD,
    FET/EUR
  • SKL/USD,
    SKL/EUR
  • SLP/USD,
    SLP/EUR
  • SGB/USD,
    SGB/EUR
  • AVAX/USD,
    AVAX/EUR
  • DYDX/USD,
    DYDX/EUR
  • FTM/USD,
    FTM/EUR
  • SHIB/USD,
    SHIB/EUR
  • AMP/USD,
    AMP/EUR
  • ENS/USD,
    ENS/EUR
  • GALA/USD,
    GALA/EUR
  • PERP/USD,
    PERP/EUR
  • WBTC/BTC
  • CTSI/USD,
    CTSI/EUR
  • IMX/USD,
    IMX/EUR
  • NEXO/USD,
    NEXO/EUR
  • RAD/USD,
    RAD/EUR
  • BAND/USD,
    BAND/EUR
  • INJ/USD,
    INJ/EUR
  • RLY/USD,
    RLY/EUR
  • RNDR/USD,
    RNDR/EUR
  • 1INCH/USD,
    1INCH/EUR
  • SOL/USD,
    SOL/EUR
  • APE/USD,
    APE/EUR
  • EUROC/USDC,
    EUROC/EUR
  • DOT/USD,
    DOT/EUR
  • NEAR/USD,
    NEAR/EUR
  • LDO/USD,
    LDO/EUR
  • DGLD/USD,
    DGLD/EUR
  • DOGE/USD,
    DOGE/EUR
  • SUI/USD,
    SUI/EUR
  • EURCV/USDT,
    EURCV/EUR
  • PYUSD/USD,
    PYUSD/EUR
  • TRAC/USD,
    TRAC/EUR
  • WECAN/USD,
    WECAN/EUR
  • BLUR/USD,
    BLUR/EUR
  • LMWR/USD,
    LMWR/EUR
  • PEPE/USD,
    PEPE/EUR
  • VEXT/USD,
    VEXT/EUR
  • CSPR/USD,
    CSPR/EUR
  • GYEN/USD
  • VCHF/USD,
    VCHF/EUR
  • VEUR/USD,
    VEUR/EUR
  • ZUSD/USD
  • BONK/USD,
    BONK/EUR
  • JUP/USD,
    JUP/EUR
  • PYTH/USD,
    PYTH/EUR
  • WIF/USD,
    WIF/EUR
  • ONDO/USD,
    ONDO/EUR
  • SMT/USD,
    SMT/EUR
  • TRUF/USD,
    TRUF/EUR
  • EGLD/USD,
    EGLD/EUR
  • ICP/USD,
    ICP/EUR
  • XDC/USD,
    XDC/EUR
  • COREUM/USD,
    COREUM/EUR
  • FLOKI/USD,
    FLOKI/EUR
  • STRK/USD,
    STRK/EUR
  • XCHNG/USD,
    XCHNG/EUR
  • CTX/USD,
    CTX/EUR
  • MOG/USD,
    MOG/EUR
  • WEN/USD,
    WEN/EUR
  • ARB/USD,
    ARB/EUR
  • XSGD/USD,
    XSGD/USDT
  • ZETA/USD,
    ZETA/EUR
  • MEW/USD,
    MEW/EUR
  • RLUSD/USD,
    RLUSD/EUR,
    RLUSD/USDT
  • WOO/USD,
    WOO/EUR
  • SEI/USD,
    SEI/EUR
  • OP/USD,
    OP/EUR
  • BOME/USD,
    BOME/EUR
  • CXT/USD,
    CXT/EUR
  • POPCAT/USD,
    POPCAT/EUR
  • SYRUP/USD,
    SYRUP/EUR
  • MELANIA/USD,
    MELANIA/EUR
  • TRUMP/USD,
    TRUMP/EUR