NAV

Introduction

Institutions can use the FIX Order Entry session to submit and cancel orders.

Survey

Please complete our API Use Survey to help us improve your experience using the Gemini APIs.

FIX Dictionary

Gemini uses FIX 4.4 with the 20030618 errata.

Of particular note if you may be using an older dictionary:

Tag Field Value Notes
269 MDEntryType Q = Auction Clearing Price Added FIX.4.4 EP6
18 ExecInst j = Single Execution Requested For Block Trade Added FIX.4.4 EP6
234 StipulationValue FIX enum but should allow other values. Compatible with Errata 20030618 Vol 6 - see p. 86.

Custom tags

Tag Field Type Notes
9001 CancelOnDisconnect Boolean Used in Logon <A> to enable or disable session-level cancel on disconnect.
9002 MDEntryMakerSide Char Used in Market Data - Incremental Refresh <X> MDEntry groups when MDEntryType had the value 2 = Trade to indicate the maker side of a trade. See Examples: Request to enable maker side on trades.
9003 EnableMDEntryMakerSide Boolean Used in Market Data Request <V> to optionally enable showing custom field 9002 MDEntryMakerSide in Market Data - Incremental Refresh <X> messages when MDEntryType had the value 2 = Trade. See Examples: Showing Maker Side For Trades.

Download

For your convenience, Gemini maintains our custom dictionary in QuickFIX XML form:

Environment File
Production https://docs.gemini.com/files/gemini-fix-dictionary.xml.zip
Sandbox https://docs.sandbox.gemini.com/files/gemini-fix-dictionary.xml.zip

Connecting

Gemini's primary trading platform and network point of presence (PoP) is housed in the Equinix NY5 data center in Secaucus, New Jersey. Customers can cross connect from their NY2/NY4/NY5 infrastructure or leverage an approved extranet provider to access Gemini production Market Data feeds, Drop Copy, and Order Entry sessions.

We are also nearing completion of a PoP in Equinix CH3 which will be available via cross connects from the Equinix family of data centers in Chicago and approved extranet providers.

Steps to get connected to our FIX infrastructure:

Complete Account Verification

If your firm has not done so already, please complete the Institutional Account Verification Process

Get connected

Once on-boarded as a Gemini customer, email connectivity@gemini.com with a brief description of your business and your preferred connectivity method. There are 3 options for production FIX connectivity to Gemini:

Cross-connect

For customers with applications in the same data center as Gemini. If you would like to cross-connect, please include the legal entity name that we should include in our LOA (letter of authorization).

Extranet connectivity

Customers who are not in the Equinix family of data centers can leverage an extranet provider to connect to Gemini. If your firm wishes to leverage an extranet provider or third party to connect, please specify that in your email including the providers name.

Third Party Order Management System Provider

There are a number of Service providers that allow Gemini customers to leverage their trading platforms to connect to Gemini for trading. If you would like to cross-connect, please include the legal entity name that we should include in our LOA (letter of authorization). If your firm wishes to leverage an extranet provider or third party to connect, please specify that in your email including the providers name.

Sandbox and Testing

Gemini operates a Sandbox environment which acts as a replica of our production environment. Gemini strongly recommends that all FIX customers create a Sandbox account to test their workflows. Please follow these steps to get a FIX Sandbox environment setup:

Setup a Sandbox Account

Create a Sandbox account by going to: https://sandbox.gemini.com

Permission Your Test IP

E-mail connectivity@gemini.com and specify the email address used to setup your Sandbox account and the Source IP that you will be using to connect to the FIX Sandbox. We will respond back once the IP addresses have been enabled. We will also provide you with the Sender and Target CompId that should be used to connect to the test environment.

Test Your Workflow Thoroughly

Test all messaging workflows specified in our FIX API documentation. (Gemini currently only supports FIX 4.4)

Workflow

After connecting, logging on, and synchronizing sequence numbers, the client can submit orders.

Submitting an order

  1. Client sends server → New Order Single <D> message
  2. Does Gemini accept the order?
    • Yes, order is accepted for initial processing
      1. server sends client ← an Execution Report <8> for a new order with:
      2. Is the order marketable?
        • Yes, server executes one or more initial fills
          1. server sends client ← an Execution Report <8> for each fill or partial fill (see below for more details)
          2. Does the order have remaining quantity?
            • Yes, server puts the remaining quantity on the book
            • No, server closes the order
        • No, server puts the entire quantity of the order on the book
    • No, order is rejected

When trades occur

In the event of a partial fill, Gemini sends an Execution Report <8> with:

When the order is completely filled, Gemini sends an Execution Report <8> with:

Canceling an order

  1. Client sends an Order Cancel Request <F>
  2. If successful, Gemini responds with an Execution Report <8> with:
  3. If unsuccessful, Gemini responds with an Order Cancel Reject <9> explaining why the request to cancel the order could not be fulfilled.

Third Party Support

Gemini allows OMS/OEMS firms to send orders on behalf of existing Gemini accounts after signing a service bureau agreement.

Once the agreement is signed, Gemini will provide a unique comp ID for the account. The OMS/OEMS should use this comp ID in the OnBehalfOfCompID <115> field of the header:

These messages require both OnBehalfOfCompID <115> and SenderCompID <49>:

The Execution Report <8> sent in response to one of these messages will echo back these OnBehalfOfCompID <115> and SenderCompID <49> values in the header.

See Drop Copy: Third Party Support for details on Drop Copy third party support.

Supported securities

The following security symbols are valid values for a Symbol <55> field.

Symbols are formatted as CCY1CCY2 where prices are in CCY2 (price currency) and quantities are in CCY1 (quantity currency), as this table makes explicit:

Symbol Price currency Quantity currency Minimum order size Minimum order increment Minimum price increment
BTCUSD USD BTC 0.00001 BTC (1e-5) 0.00000001 BTC (1e-8) 0.01 USD
ETHUSD USD ETH 0.001 ETH (1e-3) 0.000001 ETH (1e-6) 0.01 USD
ETHBTC BTC ETH 0.001 ETH (1e-3) 0.000001 ETH (1e-6) 0.00001 BTC (1e-5)
ZECUSD USD ZEC 0.001 ZEC (1e-3) 0.000001 ZEC (1e-6) 0.01 USD
ZECBTC BTC ZEC 0.001 ZEC (1e-3) 0.000001 ZEC (1e-6) 0.00001 BTC (1e-5)
ZECETH ETH ZEC 0.001 ZEC (1e-3) 0.000001 ZEC (1e-6) 0.0001 ETH (1e-4)
ZECBCH BCH ZEC 0.001 ZEC (1e-3) 0.000001 ZEC (1e-6) 0.0001 BCH (1e-4)
ZECLTC LTC ZEC 0.001 ZEC (1e-3) 0.000001 ZEC (1e-6) 0.001 LTC (1e-3)
BCHUSD USD BCH 0.001 BCH (1e-3) 0.000001 BCH (1e-6) 0.01 USD
BCHBTC BTC BCH 0.001 BCH (1e-3) 0.000001 BCH (1e-6) 0.00001 BTC (1e-5)
BCHETH ETH BCH 0.001 BCH (1e-3) 0.000001 BCH (1e-6) 0.0001 ETH (1e-4)
LTCUSD USD LTC 0.01 LTC (1e-2) 0.00001 LTC (1e-5) 0.01 USD
LTCBTC BTC LTC 0.01 LTC (1e-2) 0.00001 LTC (1e-5) 0.00001 BTC (1e-5)
LTCETH ETH LTC 0.01 LTC (1e-2) 0.00001 LTC (1e-5) 0.0001 ETH (1e-4)
LTCBCH BCH LTC 0.01 LTC (1e-2) 0.00001 LTC (1e-5) 0.0001 BCH (1e-4)

On a market data channel, Gemini will respond to a Security List Request <x> with a Security List <y> containing all the supported symbols on the exchange.

Precision on the exchange

Quantity and price on incoming orders are strictly held to the minimums and increments on the table shown above.

However, once on the exchange, quantities and notional values may exhibit additional precision down to two decimal places past the "minimum order increment" listed above. For instance, it is possible that a btcusd trade could execute for a quantity of 0.0000000001 (1e-10) BTC. This is due to:

This additional precision is marketable once on the exchange.

Your account balances are maintained to full fractional precision in each currency.

Understanding price and quantity

In a New Order Single <D>, the OrderQty <38> field is denominated in BTC (the quantity currency) and the Price <44> field is denominated in USD (the price currency).

RAW
8=FIX.4.4|9=137|35=D|34=2237|49=CLIENT|52=20160218-22:25:24.277|56=GEMINI|11=SOME_ORDER|38=5|40=2|44=420.18|54=1|55=BTCUSD|59=1|60=20160218-17:24:14.453|10=066|

HEADER
        8         BeginString: FIX.4.4
        9          BodyLength: 137
       34           MsgSeqNum: 2237
       35             MsgType: NewOrderSingle (D)
       49        SenderCompID: CLIENT
       52         SendingTime: 20160218-22:25:24.277
       56        TargetCompID: GEMINI
BODY
       11             ClOrdID: SOME_ORDER
       38            OrderQty: 5
       40             OrdType: LIMIT (2)
       44               Price: 420.18
       54                Side: BUY (1)
       55              Symbol: BTCUSD
       59         TimeInForce: GOOD_TILL_CANCEL (1)
       60        TransactTime: 20160218-17:24:14.453
TRAILER
       10            CheckSum: 066

Currency-denominated fields

Message Fields denominated in price currency Fields denominated in quantity currency
New Order Single <D> Price <44> OrderQty <38>
MinQty <110>
Order Cancel Request <F> OrderQty <38>
Execution Report <8> Price <44>
AvgPx <6>
LastPx <31>
OrderQty <38>
CumQty <14>
LeavesQty <151>
LastQty <32>
IOI <6> StipulationValue <234> when StipulationType <233> is PRICE IOIQty <27>
StipulationValue <234> when StipulationType <233> is MINQTY

Fees

The amount in Commission <12> is denominated in the currency specified by the currency code value in CommCurrency <479>.

Identifiers

Client supplied FIX identifier field values must contain between at least one and up to one hundred allowed characters.

Any exchange-bound message containing an invalid identifier will be rejected.

Allowed characters

Client supplied identifier values should match against this PCRE regular expression: [:\-_\.#a-zA-Z0-9]{1,100}.

Characters Description ASCII Codes (Dec)
A-Z Uppercase A-Z 65 - 90
a-z Lowercase a-z 97 - 122
0-9 Digits 48 - 57
# Hash, octothorpe, number sign 35
- Hyphen 45
. Period 46
: Colon 58
_ Underscore 95

Client supplied identifiers

Identifiers assigned by Gemini

Standard header

The Standard Header is required on every message.

PossResend <97> is not supported. Gemini will report the last sequence number that the exchange received in the header of the Logon <A> message. The client should assume that any events that the server requests to be replayed have not been acted upon: see Beginning a session for details.

Standard Trailer

The Standard Trailer is required on every message.

Session-Level Messages

Establishing a connection

  1. Client sends server → Logon <A> message
  2. Is client ResetSeqNumFlag <141> to Y?
    • Yes, reset sequence numbers and proceed
      • server resets next expected client client sequence number
      • server resets its own sequence number
      • server responds with ← Logon <A> message with reset sequence number
      • client sends server → Heartbeat <0>
    • No, negotiate sequence numbers on both sides
      1. Is client MsgSeqNum <34> value what the server is expecting?
      2. Is server MsgSeqNum <34> value what the client is expecting?
        • No, value is greater than expected
        • No, value is less than expected
          • client disconnects or sends server → Logout <5>
          • Gemini coordinates with the client to triage so the FIX connection can be re-established
        • Otherwise
  3. Success! Your FIX connection is established.

When can sequence numbers be reset?

Gemini runs the server side of the FIX connection ("acceptor"). Gemini never resets sequence numbers on the server side during the logon workflow unless the client explicitly requests it.

The client ("initiator") can reset sequence numbers during Logon <A> by setting ResetSeqNumFlag <141> to Y.

Gemini recommends that client consider configuring the FIX initiator to automatically reset sequence numbers under the following conditions:

While synchronizing sequence numbers after a replay, the client may send a Sequence Reset <4> with GapFillFlag <123> = Y in lieu of a replay.

Ending a connection

When the client disconnects from an order entry channel, for whatever reason, the exchange will cancel all the orders associated with that FIX session.

The client may send the server an optional Logout <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 <5> message where the Text <58> field contains the reason, such as scheduled maintenance.

Logon <A>

The Logon <A> message must be the first message sent by the application requesting to initiate a FIX session. The Logon <A> message authenticates an institution establishing a connection to Gemini.

Upon receipt of a Logon <A> message, Gemini will authenticate the institution requesting connection by validating the source IP Address, SenderCompID <49>, and TargetCompID <56> identifying the institution. The server will then issue a Logon <A> message as acknowledgment that the connection request has been accepted. The acknowledgment Logon <A> can also be used by the institution to validate that the connection was established with the correct party. If validation fails, the connection will be dropped without a Reject <2>.

Heartbeat <0>

The Heartbeat <0> monitors the status of the communication link and identifies when the last of a string of messages was not received. The only supported heartbeat interval, as specified by the Logon <A> message, is 30 seconds.

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.

Note that a Test Request <1> 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.

Test Request <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).

Resend Request <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 <4> - Gap Fill 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.

Reject <3>

Gemini sends a Reject <3> message when a message is received but cannot be properly processed due to a session-level rule violation. A reject is typically a serious error in the trading application's session logic.

Sequence Reset <4>

The Sequence Reset <4> message is used in response to a Resend Request <2> message when one or more messages must be skipped over for the following reasons:

Gemini does not support Reset mode (GapFillFlag <123> not present or equal to N).

Logout <5>

The Logout <5> message initiates or confirms the termination of a FIX session.

Business Message Reject <j>

Gemini sends Business Message Reject <j> when the exchange receives a valid FIX message which cannot be processed.

Examples include:

Gemini does not use Business Message Reject <j> to handle invalid New Order Single <D> messages. Rejected orders are handled with an Execution Report <8> message with an OrdStatus <39> field with a value of 8 - Rejected.

Exchange-Bound Messages

New Order Single <D> (LIMIT)

To submit a new limit order to Gemini, send a New Order Single <D> message with OrdType Limit.

Gemini will respond to a New Order Single <D> message with an Execution Report <8>. See Execution Report <8> for examples.

If Gemini receives a New Order Single <D> message with the PossResend <97> flag set to Y in the header, that order will be rejected with Business Message Reject <j>.

New Order Single <D> (MARKET)

To submit a new market order to Gemini, send a New Order Single <D> message with OrdType Market.

Gemini will respond to a New Order Single <D> message with an Execution Report <8>. See Execution Report <8> for examples.

Order Cancel Request <F>

The Order Cancel Request <F> message requests the cancellation of all of the remaining quantity of an existing order.

Gemini cancels order on the basis of the value in the OrigClOrdID <41> field. All other fields are required in the FIX specs but will be disregarded.

Client-Bound Messages

IOI <6>

Gemini uses the IOI <6> message to advertise an indication of interest for block orders to block trade market makers. See Block Trading for more information.

Market makers have up until the ValidUntilTime <62> to respond with a New Order Single <D> containing the IOIID <23>, an OrderQty <38> greater than or equal to the specified MINQTY StipulationValue <234>, and a Side <54>. The Price <44> must be within five percent of the PRICE StipulationValue <234>.

Responses that fail these criteria will be rejected with a Reject <3> or an Execution Report <8> with ExecType <150> of 8 = Rejected and an OrdStatus <39> of 8 = Rejected.

Execution Report <8>

Gemini uses the Execution Report <8> message to:

Each execution report contains two fields which are used to communicate both the current state of the order as understood by the exchange (OrdStatus <39>) and the purpose of the message (ExecType <150>).

Order Cancel Reasons

Reasons orders are canceled include, but are not limited to:

Order Cancel Reject <9>

Gemini sends an Order Cancel Reject <9> message when the exchange receives an Order Cancel Request <F> message which cannot be honored because:

Examples

New Order Single

This is a New Order Single (D in MsgType <35>) request:

RAW
8=FIX.4.4|9=144|35=D|34=2|49=TRADEBOTOE002|52=20180425-17:56:41.000|56=GEMINI|11=iWM60sx3dreT9N9yEE|38=1|40=2|44=10000|54=1|55=BTCUSD|59=1|60=20180425-17:56:41|10=073|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 144
       34                     MsgSeqNum: 2
       35                       MsgType: NewOrderSingle (D)
       49                  SenderCompID: TRADEBOTOE002
       52                   SendingTime: 20180425-17:56:41.000
       56                  TargetCompID: GEMINI
BODY
       11                       ClOrdID: iWM60sx3dreT9N9yEE
       38                      OrderQty: 1
       40                       OrdType: LIMIT (2)
       44                         Price: 10000
       54                          Side: BUY (1)
       55                        Symbol: BTCUSD
       59                   TimeInForce: GOOD_TILL_CANCEL (1)
       60                  TransactTime: 20180425-17:56:41
TRAILER
       10                      CheckSum: 073

Execution Reports

The following section contains examples of execution reports.

Notes:

Execution report for a new order

This is an example of an Execution Report <8> in response to TRADEBOTOE002's New Order Single <D>:

RAW
8=FIX.4.4|9=195|35=8|34=2|49=GEMINI|52=20180425-17:56:42.071|56=TRADEBOTOE002|6=0|11=iWM60sx3dreT9N9yEE|14=0|17=335278099|37=335278098|38=1|39=0|44=10000|54=1|55=BTCUSD|59=1|60=20180425-17:56:42.071|150=0|151=1|10=163|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 195
       34                     MsgSeqNum: 2
       35                       MsgType: ExecutionReport (8)
       49                  SenderCompID: GEMINI
       52                   SendingTime: 20180425-17:56:42.071
       56                  TargetCompID: TRADEBOTOE002
BODY
        6                         AvgPx: 0
       11                       ClOrdID: iWM60sx3dreT9N9yEE
       14                        CumQty: 0
       17                        ExecID: 335278099
       37                       OrderID: 335278098
       38                      OrderQty: 1
       39                     OrdStatus: NEW (0)
       44                         Price: 10000
       54                          Side: BUY (1)
       55                        Symbol: BTCUSD
       59                   TimeInForce: GOOD_TILL_CANCEL (1)
       60                  TransactTime: 20180425-17:56:42.071
      150                      ExecType: NEW (0)
      151                     LeavesQty: 1
TRAILER
       10                      CheckSum: 163

Notes:

Execution report for a fill

In this scenario, TRADEBOTOE002's order fills at 8400.00. In this case, TRADEBOTOE002 is on the taker side and pays the base fee of 100bps (1.00%). This is an example of an associated execution report:

RAW
8=FIX.4.4|9=248|35=8|34=3|49=GEMINI|52=20180516-22:03:10.031|56=TRADEBOTOE002|6=8400.00|11=af9hLHqlLYAYb3ErKJ|12=8.400000|13=3|14=1|17=336157291|31=8400.00|32=1|37=336157289|38=1|39=2|44=10000|54=1|55=BTCUSD|59=1|60=20180516-22:03:10.030|150=F|151=0|479=USD|851=2|10=116|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 248
       34                     MsgSeqNum: 3
       35                       MsgType: ExecutionReport (8)
       49                  SenderCompID: GEMINI
       52                   SendingTime: 20180516-22:03:10.031
       56                  TargetCompID: TRADEBOTOE002
BODY
        6                         AvgPx: 8400.00
       11                       ClOrdID: af9hLHqlLYAYb3ErKJ
       12                    Commission: 8.400000
       13                      CommType: ABSOLUTE (3)
       14                        CumQty: 1
       17                        ExecID: 336157291
       31                        LastPx: 8400.00
       32                       LastQty: 1
       37                       OrderID: 336157289
       38                      OrderQty: 1
       39                     OrdStatus: FILLED (2)
       44                         Price: 10000
       54                          Side: BUY (1)
       55                        Symbol: BTCUSD
       59                   TimeInForce: GOOD_TILL_CANCEL (1)
       60                  TransactTime: 20180516-22:03:10.030
      150                      ExecType: TRADE (F)
      151                     LeavesQty: 0
      479                  CommCurrency: USD
      851              LastLiquidityInd: REMOVED_LIQUIDITY (2)
TRAILER
       10                      CheckSum: 116

Notes:

Execution report for a partial fill

In this example, TRADEBOTOE002 is on the maker side and receives an execution report for an order with an original quantity of 20 BTC that was partially filled for 10 BTC with 10 BTC remaining for a fee of 0.00%:

RAW
8=FIX.4.4|9=254|35=8|34=5|49=GEMINI|52=20180517-15:07:16.894|56=TRADEBOTOE002|6=8338.67|11=1tfX3IJi9HP87dkqlo|12=0.000000|13=3|14=10|17=336933409|31=8338.67|32=10|37=336933405|38=20|39=1|44=8338.67|54=1|55=BTCUSD|59=3|60=20180517-15:07:16.892|150=F|151=10|479=USD|851=1|10=001|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 254
       34                     MsgSeqNum: 5
       35                       MsgType: ExecutionReport (8)
       49                  SenderCompID: GEMINI
       52                   SendingTime: 20180517-15:07:16.894
       56                  TargetCompID: TRADEBOTOE002
BODY
        6                         AvgPx: 8338.67
       11                       ClOrdID: 1tfX3IJi9HP87dkqlo
       12                    Commission: 0.000000
       13                      CommType: ABSOLUTE (3)
       14                        CumQty: 10
       17                        ExecID: 336933409
       31                        LastPx: 8338.67
       32                       LastQty: 10
       37                       OrderID: 336933405
       38                      OrderQty: 20
       39                     OrdStatus: PARTIALLY_FILLED (1)
       44                         Price: 8338.67
       54                          Side: BUY (1)
       55                        Symbol: BTCUSD
       59                   TimeInForce: IMMEDIATE_OR_CANCEL (3)
       60                  TransactTime: 20180517-15:07:16.892
      150                      ExecType: TRADE (F)
      151                     LeavesQty: 10
      479                  CommCurrency: USD
      851              LastLiquidityInd: ADDED_LIQUIDITY (1)
TRAILER
       10                      CheckSum: 001

Notes:

Execution report for an order cancellation

In this example, TRADEBOTOE002 receives an execution report, in response to a previously sent Order Cancel Request <F>, indicating that the order with a ClOrdID <11> = GHDzdNUUXaMMDZdfwe was cancelled:

RAW
8=FIX.4.4|9=220|35=8|34=3|49=GEMINI|52=20180425-17:57:59.538|56=TRADEBOTOE002|6=0|11=GHDzdNUUXaMMDZdfwe|14=0|17=335278132|37=335278128|38=1|39=4|41=z35u64KR1gen7f2SpB|44=93392.64|54=2|55=BTCUSD|58=REQUESTED|59=1|60=20180425-17:57:59.537|150=4|151=0|10=254|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 220
       34                     MsgSeqNum: 3
       35                       MsgType: ExecutionReport (8)
       49                  SenderCompID: GEMINI
       52                   SendingTime: 20180425-17:57:59.538
       56                  TargetCompID: TRADEBOTOE002
BODY
        6                         AvgPx: 0
       11                       ClOrdID: GHDzdNUUXaMMDZdfwe
       14                        CumQty: 0
       17                        ExecID: 335278132
       37                       OrderID: 335278128
       38                      OrderQty: 1
       39                     OrdStatus: CANCELED (4)
       41                   OrigClOrdID: z35u64KR1gen7f2SpB
       44                         Price: 93392.64
       54                          Side: SELL (2)
       55                        Symbol: BTCUSD
       58                          Text: REQUESTED
       59                   TimeInForce: GOOD_TILL_CANCEL (1)
       60                  TransactTime: 20180425-17:57:59.537
      150                      ExecType: CANCELED (4)
      151                     LeavesQty: 0
TRAILER
       10                      CheckSum: 254

Notes:


In this next example, TRADEBOTOE002 first sent an Order Cancel Request <F> for order 1tfX3IJi9HP87dkqlo that was previously partially filled. This is an execution report for the cancellation of the remaining quantity:

RAW
8=FIX.4.4|9=238|35=8|34=7|49=GEMINI|52=20180517-15:07:16.896|56=TRADEBOTOE002|6=8338.67|11=1tfX3IJi9HP87dkqlo|14=10|17=336933412|37=336933405|38=20|39=4|44=8338.67|54=1|55=BTCUSD|58=BLOCK_TRADE_UNFILLED_QUANTITY|59=3|60=20180517-15:07:16.892|150=4|151=0|10=080|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 238
       34                     MsgSeqNum: 7
       35                       MsgType: ExecutionReport (8)
       49                  SenderCompID: GEMINI
       52                   SendingTime: 20180517-15:07:16.896
       56                  TargetCompID: TRADEBOTOE002
BODY
        6                         AvgPx: 8338.67
       11                       ClOrdID: 1tfX3IJi9HP87dkqlo
       14                        CumQty: 10
       17                        ExecID: 336933412
       37                       OrderID: 336933405
       38                      OrderQty: 20
       39                     OrdStatus: CANCELED (4)
       44                         Price: 8338.67
       54                          Side: BUY (1)
       55                        Symbol: BTCUSD
       58                          Text: BLOCK_TRADE_UNFILLED_QUANTITY
       59                   TimeInForce: IMMEDIATE_OR_CANCEL (3)
       60                  TransactTime: 20180517-15:07:16.892
      150                      ExecType: CANCELED (4)
      151                     LeavesQty: 0
TRAILER
       10                      CheckSum: 080

Notes:

Execution report for a reject

In this scenario, TRADEBOTOE002 sent another New Order Single <D> but this time there is an error: the Symbol <55> field value is invalid.

Because the symbol is invalid, the server rejects the order. This is an example of an associated execution report:

RAW
8=FIX.4.4|9=237|35=8|34=2|49=GEMINI|52=20180516-22:09:05.019|56=TRADEBOTOE002|6=0|11=7v1cs7HFCT2WehadcO|14=0|17=1526508545018|37=0|38=10.4|39=8|44=0.05|54=2|55=ABCDEF|58=Unsupported Symbol value 'ABCDEF'|59=1|60=20180516-22:09:05.018|103=99|150=8|151=0|10=090|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 237
       34                     MsgSeqNum: 2
       35                       MsgType: ExecutionReport (8)
       49                  SenderCompID: GEMINI
       52                   SendingTime: 20180516-22:09:05.019
       56                  TargetCompID: TRADEBOTOE002
BODY
        6                         AvgPx: 0
       11                       ClOrdID: 7v1cs7HFCT2WehadcO
       14                        CumQty: 0
       17                        ExecID: 1526508545018
       37                       OrderID: 0
       38                      OrderQty: 10.4
       39                     OrdStatus: REJECTED (8)
       44                         Price: 0.05
       54                          Side: SELL (2)
       55                        Symbol: ABCDEF
       58                          Text: Unsupported Symbol value 'ABCDEF'
       59                   TimeInForce: GOOD_TILL_CANCEL (1)
       60                  TransactTime: 20180516-22:09:05.018
      103                  OrdRejReason: OTHER (99)
      150                      ExecType: REJECTED (8)
      151                     LeavesQty: 0
TRAILER
       10                      CheckSum: 090

Notes:

Order Cancel Request

This is an Order Cancel Request that cancels an order of 1 BTC that was previously entered with an CLOrdID of z35u64KR1gen7f2SpB:

RAW
8=FIX.4.4|9=147|35=F|34=3|49=TRADEBOTOE002|52=20180425-17:57:59.000|56=GEMINI|11=GHDzdNUUXaMMDZdfwe|38=1|41=z35u64KR1gen7f2SpB|54=2|55=BTCUSD|60=20180425-17:57:59|10=185|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 147
       34                     MsgSeqNum: 3
       35                       MsgType: OrderCancelRequest (F)
       49                  SenderCompID: TRADEBOTOE002
       52                   SendingTime: 20180425-17:57:59.000
       56                  TargetCompID: GEMINI
BODY
       11                       ClOrdID: GHDzdNUUXaMMDZdfwe
       38                      OrderQty: 1
       41                   OrigClOrdID: z35u64KR1gen7f2SpB
       54                          Side: SELL (2)
       55                        Symbol: BTCUSD
       60                  TransactTime: 20180425-17:57:59
TRAILER
       10                      CheckSum: 185

and its associated Execution Report response:

RAW
8=FIX.4.4|9=220|35=8|34=3|49=GEMINI|52=20180425-17:57:59.538|56=TRADEBOTOE002|6=0|11=GHDzdNUUXaMMDZdfwe|14=0|17=335278132|37=335278128|38=1|39=4|41=z35u64KR1gen7f2SpB|44=93392.64|54=2|55=BTCUSD|58=REQUESTED|59=1|60=20180425-17:57:59.537|150=4|151=0|10=254|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 220
       34                     MsgSeqNum: 3
       35                       MsgType: ExecutionReport (8)
       49                  SenderCompID: GEMINI
       52                   SendingTime: 20180425-17:57:59.538
       56                  TargetCompID: TRADEBOTOE002
BODY
        6                         AvgPx: 0
       11                       ClOrdID: GHDzdNUUXaMMDZdfwe
       14                        CumQty: 0
       17                        ExecID: 335278132
       37                       OrderID: 335278128
       38                      OrderQty: 1
       39                     OrdStatus: CANCELED (4)
       41                   OrigClOrdID: z35u64KR1gen7f2SpB
       44                         Price: 93392.64
       54                          Side: SELL (2)
       55                        Symbol: BTCUSD
       58                          Text: REQUESTED
       59                   TimeInForce: GOOD_TILL_CANCEL (1)
       60                  TransactTime: 20180425-17:57:59.537
      150                      ExecType: CANCELED (4)
      151                     LeavesQty: 0
TRAILER
       10                      CheckSum: 254

Server Side Cancellations

This is an example of an Execution Report for an order that was canceled because part or all of the maker-or-cancel order would fill immediately:

8=FIX.4.4|9=207|35=8|34=6|49=GEMINI|52=20180530-15:25:13.110|56=DEV|6=0|11=GHDzdNUUXaMMDZdfwe|14=0|17=48|18=6|37=46|38=10|39=4|44=448.01|54=1|55=BTCUSD|58=MAKER_OR_CANCEL_WOULD_TAKE|59=1|60=20150218-18:45:02.030|150=4|151=0|10=031|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 207
       34                     MsgSeqNum: 6
       35                       MsgType: ExecutionReport (8)
       49                  SenderCompID: GEMINI
       52                   SendingTime: 20180530-15:25:13.110
       56                  TargetCompID: DEV
BODY
        6                         AvgPx: 0
       11                       ClOrdID: GHDzdNUUXaMMDZdfwe
       14                        CumQty: 0
       17                        ExecID: 48
       18                      ExecInst: PARTICIPATE_DONT_INITIATE (6)
       37                       OrderID: 46
       38                      OrderQty: 10
       39                     OrdStatus: CANCELED (4)
       44                         Price: 448.01
       54                          Side: BUY (1)
       55                        Symbol: BTCUSD
       58                          Text: MAKER_OR_CANCEL_WOULD_TAKE
       59                   TimeInForce: GOOD_TILL_CANCEL (1)
       60                  TransactTime: 20150218-18:45:02.030
      150                      ExecType: CANCELED (4)
      151                     LeavesQty: 0
TRAILER
       10                      CheckSum: 031

This is an example of an Execution Report for an order that was canceled because the immediate-or-cancel order would not fill immediately:

8=FIX.4.4|9=212|35=8|34=4|49=GEMINI|52=20180530-15:34:56.648|56=DEV|6=448.06|11=GHDzdNUUXaMMDZdfwe|14=1.2|17=35|37=31|38=5.0|39=4|44=448.06|54=2|55=BTCUSD|58=IMMEDIATE_OR_CANCEL_WOULD_POST|59=3|60=20150218-18:45:02.017|150=4|151=0|10=062|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 212
       34                     MsgSeqNum: 4
       35                       MsgType: ExecutionReport (8)
       49                  SenderCompID: GEMINI
       52                   SendingTime: 20180530-15:34:56.648
       56                  TargetCompID: DEV
BODY
        6                         AvgPx: 448.06
       11                       ClOrdID: GHDzdNUUXaMMDZdfwe
       14                        CumQty: 1.2
       17                        ExecID: 35
       37                       OrderID: 31
       38                      OrderQty: 5.0
       39                     OrdStatus: CANCELED (4)
       44                         Price: 448.06
       54                          Side: SELL (2)
       55                        Symbol: BTCUSD
       58                          Text: IMMEDIATE_OR_CANCEL_WOULD_POST
       59                   TimeInForce: IMMEDIATE_OR_CANCEL (3)
       60                  TransactTime: 20150218-18:45:02.017
      150                      ExecType: CANCELED (4)
      151                     LeavesQty: 0
TRAILER
       10                      CheckSum: 062

View the most common reasons here.

New Order Single on Behalf of Third Party

This is a New Order Single request on behalf of a third party. For more information, see Third Party Support

RAW
8=FIX.4.4|9=162|35=D|34=2|49=TRADEBOTOE001|52=20180425-17:58:11.000|56=GEMINI|115=AA1AA1AAA1|11=FLWC3iFc6ygIxFSKVY|38=10|40=2|44=8490.44|54=2|55=BTCUSD|59=1|60=20180425-17:58:11|10=024|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 162
       34                     MsgSeqNum: 2
       35                       MsgType: NewOrderSingle (D)
       49                  SenderCompID: TRADEBOTOE001
       52                   SendingTime: 20180425-17:58:11.000
       56                  TargetCompID: GEMINI
      115              OnBehalfOfCompID: AA1AA1AAA1
BODY
       11                       ClOrdID: FLWC3iFc6ygIxFSKVY
       38                      OrderQty: 10
       40                       OrdType: LIMIT (2)
       44                         Price: 8490.44
       54                          Side: SELL (2)
       55                        Symbol: BTCUSD
       59                   TimeInForce: GOOD_TILL_CANCEL (1)
       60                  TransactTime: 20180425-17:58:11
TRAILER
       10                      CheckSum: 024

and its associated Execution Report:

RAW
8=FIX.4.4|9=214|35=8|34=2|49=GEMINI|52=20180425-17:58:12.286|56=TRADEBOTOE001|115=AA1AA1AAA1|6=0|11=FLWC3iFc6ygIxFSKVY|14=0|17=335278137|37=335278136|38=10|39=0|44=8490.44|54=2|55=BTCUSD|59=1|60=20180425-17:58:12.285|150=0|151=10|10=155|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 214
       34                     MsgSeqNum: 2
       35                       MsgType: ExecutionReport (8)
       49                  SenderCompID: GEMINI
       52                   SendingTime: 20180425-17:58:12.286
       56                  TargetCompID: TRADEBOTOE001
      115              OnBehalfOfCompID: AA1AA1AAA1
BODY
        6                         AvgPx: 0
       11                       ClOrdID: FLWC3iFc6ygIxFSKVY
       14                        CumQty: 0
       17                        ExecID: 335278137
       37                       OrderID: 335278136
       38                      OrderQty: 10
       39                     OrdStatus: NEW (0)
       44                         Price: 8490.44
       54                          Side: SELL (2)
       55                        Symbol: BTCUSD
       59                   TimeInForce: GOOD_TILL_CANCEL (1)
       60                  TransactTime: 20180425-17:58:12.285
      150                      ExecType: NEW (0)
      151                     LeavesQty: 10
TRAILER
       10                      CheckSum: 155


New Market BUY Order

This is an example of a request for a market BUY order.

RAW
8=FIX.4.4|9=126|35=D|34=2|49=DEV|52=20181023-17:49:51.691|56=GEMINI|11=FLWC3iFi6ygIxFSKVY|40=1|54=1|55=BTCUSD|60=20150218-18:45:02.003|152=500.0|10=235|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 126
       34                     MsgSeqNum: 2
       35                       MsgType: NewOrderSingle (D)
       49                  SenderCompID: DEV
       52                   SendingTime: 20181023-17:49:51.691
       56                  TargetCompID: GEMINI
BODY
       11                       ClOrdID: FLWC3iFi6ygIxFSKVY
       40                       OrdType: MARKET (1)
       54                          Side: BUY (1)
       55                        Symbol: BTCUSD
       60                  TransactTime: 20150218-18:45:02.003
      152                  CashOrderQty: 500.0
TRAILER
       10                      CheckSum: 235

Notes:

and the associated Execution Report for a market BUY order.

RAW
8=FIX.4.4|9=163|35=8|34=2|49=GEMINI|52=20181023-17:49:51.943|56=DEV|6=0|11=FLWC3iFi6ygIxFSKVY|14=0|17=43|37=42|39=0|54=1|55=BTCUSD|60=20150218-18:45:02.042|150=0|151=500.0|152=500.0|10=069|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 163
       34                     MsgSeqNum: 2
       35                       MsgType: ExecutionReport (8)
       49                  SenderCompID: GEMINI
       52                   SendingTime: 20181023-17:49:51.943
       56                  TargetCompID: DEV
BODY
        6                         AvgPx: 0
       11                       ClOrdID: FLWC3iFi6ygIxFSKVY
       14                        CumQty: 0
       17                        ExecID: 43
       37                       OrderID: 42
       39                     OrdStatus: NEW (0)
       54                          Side: BUY (1)
       55                        Symbol: BTCUSD
       60                  TransactTime: 20150218-18:45:02.042
      150                      ExecType: NEW (0)
      151                     LeavesQty: 500.0
      152                  CashOrderQty: 500.0
TRAILER
       10                      CheckSum: 069

New Market SELL Order

This is an example of a request for a market SELL order.

RAW
8=FIX.4.4|9=126|35=D|34=2|49=DEV|52=20181023-17:49:51.691|56=GEMINI|11=YLWC3xFi6ygIxFSKVY|40=1|54=1|55=BTCUSD|60=20150218-18:45:02.003|152=500.0|10=112|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 126
       34                     MsgSeqNum: 2
       35                       MsgType: NewOrderSingle (D)
       49                  SenderCompID: DEV
       52                   SendingTime: 20181023-17:49:51.691
       56                  TargetCompID: GEMINI
BODY
       11                       ClOrdID: YLWC3xFi6ygIxFSKVY
       38                      OrderQty: 2.0
       40                       OrdType: MARKET (1)
       54                          Side: SELL (2)
       55                        Symbol: BTCUSD
       60                  TransactTime: 20150218-18:45:02.010
TRAILER
       10                      CheckSum: 112

Notes:

and the associated Execution Report for a market SELL order.

RAW
8=FIX.4.4|9=161|35=8|34=2|49=GEMINI|52=20181023-20:26:27.359|56=DEV|6=0|11=YLWC3xFi6ygIxFSKVY|14=0|17=43|37=42|38=2.0|39=0|54=2|55=BTCUSD|60=20150218-18:45:02.042|150=0|151=2.0|10=113|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 161
       34                     MsgSeqNum: 2
       35                       MsgType: ExecutionReport (8)
       49                  SenderCompID: GEMINI
       52                   SendingTime: 20181023-20:26:27.359
       56                  TargetCompID: DEV
BODY
        6                         AvgPx: 0
       11                       ClOrdID: YLWC3xFi6ygIxFSKVY
       14                        CumQty: 0
       17                        ExecID: 43
       37                       OrderID: 42
       38                      OrderQty: 2.0
       39                     OrdStatus: NEW (0)
       54                          Side: SELL (2)
       55                        Symbol: BTCUSD
       60                  TransactTime: 20150218-18:45:02.042
      150                      ExecType: NEW (0)
      151                     LeavesQty: 2.0
TRAILER
       10                      CheckSum: 113

Market Order Fill

This is an example of an Execution Report for a filled market BUY order

RAW
8=FIX.4.4|9=297|35=8|34=3|49=GEMINI|52=20181023-17:49:51.958|56=DEV|6=448.06|11=FLWC3iFi6ygIxFSKVY|12=9.80392156863|13=3|14=1.0940411517|17=44|31=448.06|32=1.0940411517|37=42|39=2|54=1|55=BTCUSD|60=20150218-18:45:02.043|150=F|151=0|152=500.0|479=USD|851=2|10=089|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 297
       34                     MsgSeqNum: 3
       35                       MsgType: ExecutionReport (8)
       49                  SenderCompID: GEMINI
       52                   SendingTime: 20181023-17:49:51.958
       56                  TargetCompID: DEV
BODY
        6                         AvgPx: 448.06
       11                       ClOrdID: FLWC3iFi6ygIxFSKVY
       12                    Commission: 9.8039215686
       13                      CommType: ABSOLUTE (3)
       14                        CumQty: 1.0940411517
       17                        ExecID: 44
       31                        LastPx: 448.06
       32                       LastQty: 1.0940411517
       37                       OrderID: 42
       39                     OrdStatus: FILLED (2)
       54                          Side: BUY (1)
       55                        Symbol: BTCUSD
       60                  TransactTime: 20150218-18:45:02.043
      150                      ExecType: TRADE (F)
      151                     LeavesQty: 0
      152                  CashOrderQty: 500.0
      479                  CommCurrency: USD
      851              LastLiquidityInd: REMOVED_LIQUIDITY (2)
TRAILER
       10                      CheckSum: 089

Market Order Partial Fill

In the rare case a market order sweeps the book and only partially fills, two Execution Reports will be generated: one describing the partial fill and another cancelling the market order as it was only partially filled.

Here is an example of the partial fill Execution Report.

RAW
8=FIX.4.4|9=237|35=8|34=3|49=GEMINI|52=20181023-18:05:07.978|56=DEV|6=448.06|11=CLWC3iFi6ygIyFSKVY|12=8.9612|13=3|14=1.0|17=44|31=448.06|32=1.0|37=42|39=1|54=1|55=BTCUSD|60=20150218-18:45:02.043|150=F|151=42.9788|152=500.0|479=USD|851=2|10=172|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 237
       34                     MsgSeqNum: 3
       35                       MsgType: ExecutionReport (8)
       49                  SenderCompID: GEMINI
       52                   SendingTime: 20181023-18:05:07.978
       56                  TargetCompID: DEV
BODY
        6                         AvgPx: 448.06
       11                       ClOrdID: CLWC3iFi6ygIyFSKVY
       12                    Commission: 8.9612
       13                      CommType: ABSOLUTE (3)
       14                        CumQty: 1.0
       17                        ExecID: 44
       31                        LastPx: 448.06
       32                       LastQty: 1.0
       37                       OrderID: 42
       39                     OrdStatus: PARTIALLY_FILLED (1)
       54                          Side: BUY (1)
       55                        Symbol: BTCUSD
       60                  TransactTime: 20150218-18:45:02.043
      150                      ExecType: TRADE (F)
      151                     LeavesQty: 42.9788
      152                  CashOrderQty: 500.0
      479                  CommCurrency: USD
      851              LastLiquidityInd: REMOVED_LIQUIDITY (2)
TRAILER
       10                      CheckSum: 172

Notes:

and the following Execution Report representing a cancellation of the order.

RAW
8=FIX.4.4|9=199|35=8|34=4|49=GEMINI|52=20181023-18:05:07.984|56=DEV|6=448.06|11=CLWC3iFi6ygIyFSKVY|14=1.0|17=46|37=42|39=4|54=1|55=BTCUSD|58=MARKET_ORDER_SWEPT_BOOK|60=20150218-18:45:02.045|150=4|151=0|152=500.0|10=TRAILER|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 199
       34                     MsgSeqNum: 4
       35                       MsgType: ExecutionReport (8)
       49                  SenderCompID: GEMINI
       52                   SendingTime: 20181023-18:05:07.984
       56                  TargetCompID: DEV
BODY
        6                         AvgPx: 448.06
       11                       ClOrdID: CLWC3iFi6ygIyFSKVY
       14                        CumQty: 1.0
       17                        ExecID: 46
       37                       OrderID: 42
       39                     OrdStatus: CANCELED (4)
       54                          Side: BUY (1)
       55                        Symbol: BTCUSD
       58                          Text: MARKET_ORDER_SWEPT_BOOK
       60                  TransactTime: 20150218-18:45:02.045
      150                      ExecType: CANCELED (4)
      151                     LeavesQty: 0
      152                  CashOrderQty: 500.0
TRAILER
       10                      CheckSum: 184

Notes:

Errors

When a message is received but cannot be properly processed due to some rule violation (like invalid field values or attributes), we will return back

Where possible, there will be an error message in Text <58> explaining the Rejection. Here is a list of some common error messages and reasons for Rejection.

Message Type Error Message Reason
Reject <3> Value is incorrect (out of range) for this tag Here are some reasons for why a field value may be invalid:
Reject <3> Tag not defined for this message type (TAG) Message contains an extra unsupported FIX tag.
Reject <3> Invalid tag value
Execution Report <8> (Rejected) InvalidPrice The message specified a price that was too low or had the incorrect precision.
Execution Report <8> (Rejected) Quantity X is less than the allowed minimum quantity Y Block Trade quantity is below the required minimum.
Execution Report <8> (Rejected) Invalid NewOrderSingle / IOIID <ID> TimeInForce <VALUE> should be TimeInForce.IMMEDIATE_OR_CANCEL Block Trades need to Immediate or Cancel.
Execution Report <8> (Rejected) Invalid NewOrderSingle / IOIID <ID> ExecInst 'j' should not be set When creating a new IOI order, you don't need to set the IOIID field. Placing a new IOI order. Conversely, IOI responses do not need to set ExecInst <18> with a value of j = Single Execution Requested For Block Trade.
Execution Report <8> (Rejected) Unsupported Symbol value 'ABCDEF' An invalid Symbol was provided (ex: 'ABCDEFGH' instead of 'BTCUSD' in Symbol <55>)
Business Message Reject <j> Unsupported message type Used to Reject a FIX message which is not unsupported by this specific FIX API, e.g. a Market Data Request <V> received on a FIX Order Entry Channel.
Business Message Reject <j> Conditionally Required Field Missing (TAG) A conditionally required field, identified by its tag, is missing. (ex: OrderQty <38> is missing)

Revision History

Date Notes
2016/03/23 Initial FIX Order Entry API documentation.
2017/11/17 Add ExecInst=6 for Maker-or-Cancel orders.
2018/02/22 New Feature: Document Third Party Support. Add OnBehalfOfCompID <115> field to Standard Header.
2018/04/06 New Feature: Document block trading support. Add IOI <6> for broadcast of IOI to block trade market makers and update New Order Single <D> with options for placing an IOI and respoding to an IOI.
2018/04/30 Document actual examples of Reject messages and Execution Report rejects in an errors section.
2018/05/18 Add additional examples of using the Order Entry API.
2018/06/18 Add examples for order cancel reason.
2018/09/14 Add Documentation for fill-or-kill orders.

© Copyright 2018 Gemini Trust Company, LLC.