The baseline specification for this API is FIX 4.2. Below, we’ve noted the places in which the FIX API for Coinbase Prime extends (or clarifies) the FIX spec. For example, there are custom tags with a four-digit number range, as allowed by the standard, which are unique to Prime.
For standard header configuration requirements, see Administrative Messages.
New Order Single (D)
Sent by the client to enter an order. Not every tag is required for every order — it depends on the target strategy used. See the table below for more information.
TargetStrategy Values
Requires ExpireTime and EffectiveTime for TWAP/VWAP orders. Must be “SL” and requires StopPx for Stop Limit orders. Must be “P” and requires PegOffsetType and PegOffsetValue for PEG orders.
OrdType Values
TimeInForce Values
Must match TargetStrategy
RFQ
Quote Request (R)
A Quote Request (R) is the start of the RFQ process. Coinbase Prime sends a Quote Request to Liquidity Providers (LPs) on behalf of a customer looking to participate in an RFQ trade. LPs respond to a Quote Request (R) with a Quote (S).
Quote (S)
Quote (S) messages are submitted by Liquidity Providers (LP) in response to a Quote Request (R) in order to participate in the competitive RFQ auction.
Accept quote - New Order Single (D)
Sent by the client in order to accept a Quote (S). Must be accepted before expiration time indicated on Tag 62 of Quote (S). Refer to New Order Single (D) for standard fields of submitting an order.
Quote Acknowledgment (b)
Sent by the server in case the Quote Requests (R) fails.
QuoteRejectReason
Possible values for QuoteRejectReason (see Quote Acknowledgment (b)).
Order Cancel Request (F)
Sent by the client to cancel an order.
Order Cancel/Replace Request (G)
This message type is in beta, please reach out to your Technical Account Manager for early access to this functionality.
The Order Cancel/Replace Request message (MsgType=G) (a.k.a. Order Modification Request) is used to amend replaceable fields on open LIMIT, STOP-LIMIT, TWAP, VWAP, and PEG orders. Orders are modified with “in-flight mitigation” meaning any partially filled quantity on the original order is carried over to the edited order and is reflected in the edited order’s remaining quantity LeavesQty (151).
Usage Notes
-
Identifiers: Used for sequencing edits.
OrigClOrdID (41) – The identifier of the current active order you intend to modify. This must match the existing order’s ClOrdID (11).
ClOrdID (11) – The new identifier representing the edited order’s state. This value must be unique and cannot match OrigClOrdID (41).
-
Execution Reports: Each modification triggers
Execution Report (MsgType=8) messages with the following ExecType (150) values:
E – Pending Replace (acknowledgment that the modification is being processed)
5 – Replaced (confirmation that the modification has been applied)
-
Editing TWAP orders: We strongly recommend against aggressively increasing the order amount or significantly shortening the duration of active TWAP orders. The TWAP algorithm will adopt the new instructions and may execute more aggressively to catch up to the revised parameters.
-
Editing PEG orders:
PegOffsetValue (211) and WigLevel (8007) may be modified. A PegOffsetValue of 0 pegs to the best bid/offer. PegOffsetType (836) is immutable and cannot be changed on edit (the stored offset type is reused to interpret the new offset).
-
Edit limit: A single order may be edited up to 25 times.
Order Status Request (H)
Sent by the client to obtain information about pending and completed orders.
Python Example
FIX Message Request: (35=H)
FIX Message Response:
Execution Report (8)
Sent by the server when an order is accepted, rejected, filled, or canceled. Also sent when the user sends an OrderStatusRequest.
OrdRejReason Values
MiscFeeType Values
ExecType Values
Order Cancel Reject (9)
Sent by the server when an Order Cancel Request cannot be satisfied, e.g., because the order is already canceled or completely filled.
OrdStatus Values
CxlRejResponseTo Values