Skip to main content
The Coinbase Derivatives Exchange 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 Exchange 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 Coinbase Derivatives Exchange (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 CDE 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 Exchange 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 Exchange 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 Exchange 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: