Skip to main content
The Coinbase Derivatives: Futures Order Entry FIX API for brokers and market makers allows connected firms to send, modify and cancel orders.

Order Entry Message Types

The Coinbase Derivatives: Futures Order Entry FIX API supports the following message and execution types:

New Order Single (35=D)

Used to send new single-legged orders for execution.
Messages are comprised of required (Y), optional (N) and conditionally required (C). Conditional fields are “pass-through,” or required based on the presence or value of other fields.

Parties Repeating Group (453)

Firm and ITM overrides

Contact CDE Support to enable the firm/ITM override feature for a FIX session.
  • This feature is optional and only open to FCM.
  • Overrides apply only to NewOrderSingle; cancel, cancel/replace, and other messages must omit these Parties rows.
  • Each override request must include exactly two party rows in the Parties (453) group:
    1. 452=1 (Executing Firm) with 447=99 and 448=<sub-firm code>
    2. 452=3 (Client ID) with 447=99 and 448=<ITM name>
  • The supplied firm and ITM must reside under the same FCM as the trading user; cross-FCM overrides are rejected.
  • Both rows are mandatory; an incomplete pair, unknown identifiers, or an alternate PartyIDSource results in rejection.
  • SelfMatch Prevention fields (7928 ID and 8000 mode) follow the normal SMP configuration for the session
  • If the firm/ITM override feature is disabled for the FIX session, any order containing the override Parties group is rejected, and the system does not fall back to the user’s default firm/ITM.
Example override block (placed after the standard 35=D fields):

OCO Orders

OCO (One Cancels the Other) orders combine the features of limit and stop orders (and Coinbase Derivatives: Futures treats them as a single order, not two linked ones). OCO orders let users set predefined limit and stop levels simultaneously depending on their view of the market. Initially, an OCO order acts like a regular limit order, contributing to market data. When its stop price condition is met, it shifts and behaves like a stop limit order. Price Rules
  • Sell OCO: Limit Price must be > StopPx
  • Buy OCO: Limit Price must be < StopPx
Caveats​
  • DAY, GTC and GTD are supported for TimeInForce
  • The Post-Only tag is not supported. It cannot be populated or must be false.
Parameters

Order Cancel Request (35=F)

A firm may use this message to cancel the remaining quantity of any working single or multi-leg order.

Order Cancel/Replace Request (35=G)

A firm may use this message to replace an order. The following restrictions exist:
  • Triggered Stop, Stop-Limit, and OCO orders cannot be replaced, only canceled.
  • Time in Force cannot be changed.
  • If a field cannot be changed, the replacing order gets rejected.
  • If the replaced-OrderQty is less than or equal to Total Fill Qty, then the Order is canceled.
  • Parties rows that attempt to override the executing firm (452=1) or ITM (452=3) are not allowed on replaces and will be rejected.

Execution Report (35=8)

New/Canceled/Replaced Order (35=8, 150=0/4/5)

New (150=0), Canceled (150=4), and Replaced (150=5) reports share the same subset of Execution Report tags.
  • New (150=0): Confirms new order in response to NewOrderSingle message. Sent for every new order, even those matched immediately.
  • Canceled (150=4): Confirms order is canceled in response to OrderCancelRequest, or is an unsolicited cancel. A separate message is not sent for the canceled order itself.
  • Replaced (150=5): Confirms order is replaced in response to OrderCancel/ReplaceRequest. A separate message is not sent for the replaced order itself.
These reports were formerly grouped as “Accepted” in the PDF docs.

Rejected Order (35=8, 150=8)

Message notifies client system of a rejected order.

Trade (35=8, 150=F)

Sent by the Coinbase Derivatives: Futures system to report a trade.
A new order rests on the order book, unmatched. A trade is a matched order, and if totally filled, no longer rests on the order book.

Stop Triggered (35=8, 150=L)

Sent when a stop order is triggered.

Done for Day (35=8, 150=3)

Reports with execution type Done for Day (150=3) are sent by the exchange to the firms that need the status of their open orders after the trading session is closed.

Expired Order (35=8, 150=C)

Reports with execution type Expired (150=C) are sent by the exchange to the firms that need the track the expiration of their time-limited orders (such as DAY).

Order Cancel Reject (35=9)

Sent by the Coinbase Derivatives: Futures system to notify the client on rejection of an Order Cancel Request OR Order Cancel/Replace.

Business Reject (35=j)

Sent by the Coinbase Derivatives: Futures system to notify the client of application-level rejection of client request which passed session-level validation but has business validation issues and cannot be reported with a well-formed Execution Report with Rejected status.

Last ExecId Request (35=F1)

Send this message to request the ExecId of the last (most recent) event sent by the trading system to this user/session. Can be used to determine if the client missed any events while disconnected. Also serves as a means of validating that the trading system is available and accepting requests.

Last ExecId (35=F2)

Sent in response to LastExecIdRequest.

Event Resend Request (35=F3)

Send this message to request order events in the specified range be resent. Since this is an application-level request, resent messages will have new sequence numbers and PossDupFlag (43) will not be set; rather, PossResend (97) will be set. Rejects (and any other message that does not contain an ExecId) will not be resent.

Event Resend Complete (35=F4)

Sent in response to a successful Event Resend Request following all resent events.

Event Resend Reject (35=F5)

Sent in response to an Event Resend Request if the request cannot be fulfilled. See Also: