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 Limit<D> message or a New Order Single Market<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

Submitting a stop limit order

  1. Client sends server → New Order Single Stop Limit <D> message with OrdType <40> 4 = Stop Limit, and either a StopPx <99> value less than or equal to Price <44> on a Side <54> 1 = Buy, or a StopPx <99> value greater than or equal to Price <44> on a Side <54> 2 = Sell.
  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. Has a trade occurred that would trigger your stop order?
        • Yes, the stop order triggers and sends client ← an Execution Report <8> message with the child limit order details.
        • No, the stop order stays hidden and resting until a qualifying trade triggers it, or until the order is cancelled.
      3. Is the limit 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 symbols

The following 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 Symbol List Request <x> with a Symbol 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.

New Order Single <D> (STOP LIMIT)

To submit a new stop limit order to Gemini, send a New Order Single <D> message with OrdType Stop 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>.

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:

Gemini Clearing

Gemini Clearing allows two parties to settle a trade off the order book. The initiator enters the trade details for any supported symbol and generates a trade_id. If a counterparty_id is supplied, only the specified counterparty can confirm the order. If a counterparty_id is not supplied, the ticket will generate a trade_id that can filled by any counterparty.

Gemini Clearing Workflow

Bilateral Trade

  1. Initiator places a New Order Cross <s> message with the order details
  2. Did the initiator use a counterparty_id?
    • Yes, only the Gemini account associated with the counterparty_id will be able to complete the order.
    • No, anybody with the clearing_id will be able to confirm the order.
  3. The counterparty will be able to confirm the order on the web interface, via FIX, or via REST
    • The order initiator can cancel the order if the counterparty has not yet confirmed. Cancellation can be performed on the web interface, via FIX, and REST.
  4. Once confirmed, Gemini will attempt settlement. Settlement can only occur when both parties have the funds required in their account to fill the trade.
    • If any party does not post the funds required to settle the trade before the expiration time, then the order will expire.

Broker Trade

  1. The broker submits a New Order Cross <s> message with the order details and both counterparty_ids of the buyer and seller.
  2. The buy and seller can both review the trade details and confirm the order on the web interface, via FIX, or via REST
    • Either side can cancel the trade if both the buyer and seller have yet to confirm the order. Cancellation can be done via the web interface, FIX, and REST
    • The broker will be able to see the the status of the order on the web interface and over the /v1/clearing/status endpoint on the REST API
  3. Once confirmed, Gemini will attempt settlement. Settlement can only occur when both parties have the funds required in their account to fill the trade.
    • If any party does not post the funds required to settle the trade before the expiration time, then the order will expire.

Initiate a Clearing Order

New Order Cross <s>

To submit a new Gemini Clearing order, send a New Order Cross <s> message with OrdType Limit.

Gemini will respond to a New Order Cross <s> with an Execution Report <8>. The Execution Report <8> will have [tag 37] populated with the clearing_id which the counterparty will need to confirm the order.

RAW
8=FIX.4.4|9=204|35=s|34=2|49=TESTOE001|52=20190807-19:28:38.078|56=GEMINI|40=2|44=12000|55=BTCUSD|60=20190807-19:28:38.078|126=20190807-21:28:38.078|548=26990504|549=1|550=0|552=1|54=1|11=87749738|38=2.22222|10=023|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 204
        35                      MsgType: NewOrderCross (s)
        34                    MsgSeqNum: 2
        49                 SenderCompID: TESTOE001
        52                  SendingTime: 20190807-19:28:38.078
        56                 TargetCompID: GEMINI
BODY
        40                      OrdType: LIMIT (2)
        44                        Price: 12000
        55                       Symbol: BTCUSD
        60                 TransactTime: 20190807-19:28:38.078
        126                  ExpireTime: 20190807-21:28:38.078
        548                     CrossID: 26990504
        549                   CrossType: Cross trade which is either completely executed or not executed at all (1)
        550         CrossPrioritization: No priority (0)
        552                     NoSides: One Side (1)
        54                         Side: BUY (1)
        11                      ClOrdID: 87749738
        38                       OrderQty: 2.22222
TRAILER
        10                     CheckSum: 023

New Order Cross Execution Report <8>

RAW
8=FIX.4.4|9=197|35=8|34=2|49=GEMINI|52=20190807-19:28:38.251|56=TESTOE001|6=12000|11=87749738|14=2.22222|17=1565206118250|37=2DZ4MPQM|39=0|44=12000|54=1|55=BTCUSD|60=20190807-19:28:38.250|150=0|151=2.22222|10=009|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 197
        35                      MsgType: ExecutionReport (8)
        34                    MsgSeqNum: 2
        49                 SenderCompID: GEMINI
        52                  SendingTime: 20190807-19:28:38.251
        56                 TargetCompID: TESTOE001
BODY
        6                         AvgPx: 12000
        11                      ClOrdID: 87749738
        14                       CumQty: 2.22222
        17                       ExecID: 1565206118250
        37                      OrderID: 2DZ4MPQM
        39                    OrdStatus: NEW (0)
        44                        Price: 12000
        54                         Side: BUY (1)
        55                       Symbol: BTCUSD
        60                 TransactTime: 20190807-19:28:38.250
        150                    ExecType: NEW (0)
        151                   LeavesQty: 2.22222
TRAILER
        10                     CheckSum: 009

Clearing Order Confirmation

New Order Cross Confirmation

To confirm a Gemini Clearing order, the counterparty must login and confirm the order. The order must be confirmed with the same details provided in the initial order.

Gemini will respond to a New Order Cross <s> with an Execution Report <8>.

RAW
8=FIX.4.4|9=191|35=s|34=2|49=TESTOE002|52=20190806-18:49:03.689|56=GEMINI|40=2|44=12000|55=btcusd|60=20190806-18:49:03.689|117=4KZ306ZG|548=86478800|549=1|550=0|552=1|54=2|11=46081666|38=2.22222|10=103|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 191
        35                      MsgType: NewOrderCross (s)
        34                    MsgSeqNum: 2
        49                 SenderCompID: TESTOE002
        52                  SendingTime: 20190806-18:49:03.689
        56                 TargetCompID: GEMINI
BODY
        40                      OrdType: LIMIT (2)
        44                        Price: 12000
        55                       Symbol: BTCUSD
        60                 TransactTime: 20190806-18:49:03.689
        117                     QuoteID: 2DZ4MPQM
        548                     CrossID: 86478800
        549                   CrossType: 1
        550         CrossPrioritization: 0
        552             Number of sides: 1
        54                         Side: SELL (2)
        11                      ClOrdID: 46081666
        38                       OrderQty: 2.22222
TRAILER
        10                     CheckSum: 103

New Order Cross Confirmation Execution Report <8>

See Execution Report <8> for more details on execution report tags.

RAW
8=FIX.4.4|9=205|35=8|34=2|49=GEMINI|52=20190806-18:49:03.839|56=TESTOE002|6=12000|11=46081666|14=2.22222|17=1565117343839|37=4KZ306ZG|39=0|44=12000|54=2|55=BTCUSD|58=ORDER_CONFIRMED|60=20190806-18:49:03.839|150=0|151=2.22222|10=057|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 205
        35                      MsgType: ExecutionReport (8)
        34                    MsgSeqNum: 2
        49                 SenderCompID: GEMINI
        52                  SendingTime: 20190806-18:49:03.839
        56                 TargetCompID: TESTOE002
BODY
        6                         AvgPx: 12000
        11                      ClOrdID: 46081666
        14                       CumQty: 2.22222
        17                       ExecID: 1565117343839
        37                      OrderID: 4KZ306ZG
        39                    OrdStatus: New (0)
        44                        Price: 12000
        54                         Side: SELL (2)
        55                       Symbol: BTCUSD
        58                         Text: ORDER_CONFIRMED
        60                 TransactTime: 20190806-18:49:03.839
        150                    ExecType: NEW (0)
        151                 LeavesQty: 2.22222
TRAILER
        10 CheckSum: 057

Clearing Order Cancellation

Cross Order Cancel Request

Once an initiator places a [new order cross][#initiate-a-clearing-order], a cross order cancellation request can be placed to cancel the order before it is confirmed by the counterparty. Once the order is confirmed by the counterparty, it cannot be cancelled.

RAW
8=FIX.4.4|9=201|34=3|35=u|49=TESTOE001|52=20190806-20:30:28.898|56=GEMINI|37=2DZ4MPQM|55=BTCUSD|60=20190806-20:30:28.898|548=73180000|549=1|550=0|551=26990504|552=1|54=2|41=87749738|11=76494933|38=2.22222|10=128|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 201
        34                    MsgSeqNum: 3
        35                      MsgType: Cross Order Cancel Request
        49                 SenderCompID: TESTOE001
        52                  SendingTime: 20190806-20:30:28.898
        56                 TargetCompID: GEMINI
BODY
        37                      OrderID: 2DZ4MPQM
        55                       Symbol: BTCUSD
        60                 TransactTime: 20190806-20:30:28.898
        548                     CrossID: 73180000
        549                   CrossType: 1
        550         CrossPrioritization: 0
        551                 OrigCrossID: 26990504
        552                     NoSides: 1
        54                         Side: SELL (2)
        41                  OrigClOrdID: 87749738
        11                      ClOrdID: 76494933
        38                       OrderQty: 2.22222
TRAILER
        10                     CheckSum: 066

Cross Order Cancel Request Execution Report

RAW
8=FIX.4.4|9=202|35=8|34=3|49=GEMINI|52=20190806-20:30:28.947|56=TESTOE001|6=0|11=76494933|14=2.22222|17=1565123428947|37=2DZ4MPQM|39=4|54=2|55=BTCUSD|58=ORDER_CANCELED|60=20190806-20:30:28.947|150=4|151=2.22222|10=127|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 202
        35                      MsgType: ExecutionReport (8)
        34                    MsgSeqNum: 3
        49                 SenderCompId: GEMINI
        52                  SendingTime: 20190806-20:30:28.947
        56                 TargetCompID: TESTOE001
BODY
        6                         AvgPx: 0
        11                      ClOrdID: 76494933
        14                       CumQty: 2.22222
        17                       ExecID: 1565123428947
        37                      OrderID: 2DZ4MPQM
        39                    OrdStatus: CANCELED (4)
        54                         Side: SELL (2)
        55                       Symbol: BTCUSD
        58                         Text: ORDER_CANCELLED
        60                 TransactTime: 20190806-20:30:28.947
        150                    ExecType: CANCELED (4)
        151                   LeavesQty: 2.22222
TRAILER
        10                     CheckSum: 127

FIX Broker Support

Gemini Clearing also allows for brokers to facilitate trades between two Gemini customers. A broker can submit a new Gemini Clearing order that must then be confirmed by each counterparty before settlement.

Broker New Order Cross

RAW
8=FIX.4.4|9=247|35=s|34=2|49=TESTOE001|52=20190905-13:29:45.762|56=GEMINI|40=2|44=10000|55=btcusd|60=20190905-13:29:45.762|548=49382061|549=1|550=0|552=2|54=1|11=63216195|583=R485E04Q|38=25.01|54=2|11=44996792|583=7467JVXP|38=25.01|126=20190905-15:29:45.762|10=236|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 247
        35                      MsgType: NewOrderCross (s)
        34                    MsgSeqNum: 2
        49                 SenderCompID: TESTOE001
        52                  SendingTime: 20190905-13:29:45.762
        56                 TargetCompID: GEMINI
BODY
        40                      OrdType: LIMIT (2)
        44                        Price: 10000
        55                       Symbol: BTCUSD
        60                 TransactTime: 20190905-13:29:45.762
        548                     CrossID: 49382061
        549                   CrossType: Cross trade which is either completely executed or not executed at all (1)
        550         CrossPrioritization: No priority (0)
        552                     NoSides: Two Sides (2)
        126                  ExpireTime: 20190905-15:29:45.762
REPEATING GROUPS
        54                         Side: BUY (1)
        11                      ClOrdID: 63216195
        583                 ClOrdLinkID: R485E04Q
        38                     OrderQty: 25.01
        54                         Side: SELL (2)
        11                      ClOrdID: 44996792
        583                 ClOrdLinkID: 7467JVXP
        38                     OrderQty: 25.01
TRAILER
        10                     CheckSum: 236

Broker New Order Cross Execution Report

After submitting a new order cross as a broker, 2 execution reports will be sent (one for each side of the trade).

RAW
8=FIX.4.4|9=211|35=8|34=2|49=GEMINI|52=20190905-13:29:45.928|56=TESTOE001|6=10000|11=63216195|14=25.01|17=1567690185928|37=G9LVQOX5|39=0|44=10000|54=1|55=btcusd|60=20190905-13:29:45.928|150=0|151=25.01|583=R485E04Q|10=239|
8=FIX.4.4|9=211|35=8|34=3|49=GEMINI|52=20190905-13:29:45.929|56=TESTOE001|6=10000|11=44996792|14=25.01|17=1567690185928|37=G9LVQOX5|39=0|44=10000|54=2|55=btcusd|60=20190905-13:29:45.928|150=0|151=25.01|583=7467JVXP|10=054|

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 211
        35                      MsgType: ExecutionReport (8)
        34                    MsgSeqNum: 2
        49                 SenderCompID: GEMINI
        52                  SendingTime: 20190905-13:29:45.928
        56                 TargetCompID: TESTOE001
BODY
        6                         AvgPx: 10000
        11                      ClOrdID: 63216195
        14                       CumQty: 25.01
        17                       ExecID: 1567690185928
        37                      OrderID: G9LVQOX5
        39                    OrdStatus: NEW (0)
        44                        Price: 10000
        54                         Side: BUY (1)
        55                       Symbol: BTCUSD
        60                 TransactTime: 20190905-13:29:45.928
        150                    ExecType: NEW (0)
        151                   LeavesQty: 25.01
        583                 ClOrdLinkID: Clearing ID for corresponding Gemini account (R485E04Q)
Trailer
        10                     CheckSum: 239

HEADER
        8                   BeginString: FIX.4.4
        9                    BodyLength: 211
        35                      MsgType: ExecutionReport (8)
        34                    MsgSeqNum: 3
        49                 SenderCompID: GEMINI
        52                  SendingTime: 20190905-13:29:45.929
        56                 TargetCompID: TESTOE001
BODY
        6                         AvgPx: 10000
        11                      ClOrdID: 44996792
        14                       CumQty: 25.01
        17                       ExecID: 1567690185928
        37                      OrderID: G9LVQOX5
        39                    OrdStatus: NEW (0)
        44                        Price: 10000
        54                         Side: SELL (2)
        55                       Symbol: BTCUSD
        60                 TransactTime: 20190905-13:29:45.928
        150                    ExecType: NEW (0)
        151                   LeavesQty: 25.01
        583                 ClOrdLinkID: Clearing ID for corresponding Gemini account (7467JVXP)
Trailer
        10                     CheckSum: 054

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 stop trigger

This is an example of an Execution Report <8> for a stop trigger message. This will only show up for a OrdType <40> is 4 = Stop Limit order once a trigger event occurs, and doubles as an order ack for the newly created child limit order.

RAW
8=FIX.4.4|9=190|35=8|34=5|49=GEMINI|52=20191105-21:16:55.970|56=TRADEBOTOE003|6=0|11=qCBPcHUu8w1|14=0|17=366449739|37=366449738|38=3|39=0|44=6409.65|54=1|55=BTCUSD|59=1|60=20191105-21:16:55.930|150=0|151=3|10=223|

HEADER
        8                                       BeginString: FIX.4.4
        9                                        BodyLength: 190
       34                                         MsgSeqNum: 5
       35                                           MsgType: ExecutionReport (8)
       49                                      SenderCompID: GEMINI
       52                                       SendingTime: 20191105-21:16:55.970
       56                                      TargetCompID: TRADEBOTOE003
BODY
        6                                             AvgPx: 0
       11                                           ClOrdID: qCBPcHUu8w1
       14                                            CumQty: 0
       17                                            ExecID: 366449739
       37                                           OrderID: 366449738
       38                                          OrderQty: 3
       39                                         OrdStatus: NEW (0)
       44                                             Price: 6409.65
       54                                              Side: BUY (1)
       55                                            Symbol: BTCUSD
       59                                       TimeInForce: GOOD_TILL_CANCEL (1)
       60                                      TransactTime: 20191105-21:16:55.930
      150                                          ExecType: NEW (0)
      151                                         LeavesQty: 3
TRAILER
       10                                          CheckSum: 223


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>)
Execution Report <8> (Rejected) StopPx is required for OrdType: 4 New Stop Limit orders require a valid stop price in StopPx <99>.
Execution Report <8> (Rejected) Price must be within 50% of StopPx for OrdType: 4 New Stop Limit orders require the Limit Price <44> be within 50% of the StopPx <99>.
Execution Report <8> (Rejected) Stop limit orders only support standard order behavior If provided, 1 = Good Till Cancel (GTC) is the only TimeInForce <59> value allowed in conjunction with stop limit orders. All other values will trigger this rejection.
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.
2019/08/08 Add documentation for Gemini Clearing
2019/11/12 Add documentation for Stop Order flow

© Copyright 2019 Gemini Trust Company, LLC.