Order Entry Message Types
The Coinbase Derivatives Exchange Order Entry FIX API supports the following message and execution types:Client Message Types
Client Message Types
- NewOrderSingle (35=D): Request to submit new single-legged order.
- OrderCancelRequest (35=F): Request to cancel submitted single or multi-leg order.
- OrderCancel/ReplaceRequest (35=G): Request to replace single order.
System Message and Execution Types
System Message and Execution Types
- Execution Report (35=8): System reports in response to client requests. Execution types are:
- New/Canceled/Replaced Order (150=0/4/5): Confirms new, canceled, or replaced order:
- New Order (150=0): Confirms
NewOrderSinglemessage. - Canceled Order (150=4): Confirms
OrderCancelRequestmessage or unsolicited cancel. - Replaced Order (150=5): Confirms
OrderCancel/ReplaceRequestmessage.
- New Order (150=0): Confirms
- Rejected Order (150=8): Relays status that
OrderCancel/ReplaceRequestis rejected. - Trade (150=F): Relays information that order is filled completely or partially.
- Stop Triggered (150=L): Relays status of stop order.
- Done for Day (150=3): Sent for all currently open orders after the trading day closes.
- Expired Order (150=C): Confirms day order is expired.
- New/Canceled/Replaced Order (150=0/4/5): Confirms new, canceled, or replaced order:
- OrderCancelReject (35=9): Rejection of client-originated cancel request.
- BusinessReject (35=j): Rejection not reportable with well-formed Execution Report.
Admin Message Types
Admin Message Types
- LastExecIdRequest (35=F1): Client request for
ExecIdof the last (most recent) event. - LastExecId (35=F2): System response to F1.
- EventResendRequest (35=F3): Client request to resend order events in a specified range.
- EventResendComplete (35=F4): System response to successful F3 request.
- EventResendReject (35=F5): System response to unsuccessful F3 request.
New Order Single (35=D)
Used to send new single-legged orders for execution.Parties Repeating Group (453)
LIMIT order example
LIMIT order example
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:452=1 (Executing Firm)with447=99and448=<sub-firm code>452=3 (Client ID)with447=99and448=<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
PartyIDSourceresults in rejection. - SelfMatch Prevention fields (
7928ID and8000mode) 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.
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
- DAY, GTC and GTD are supported for TimeInForce
- The Post-Only tag is not supported. It cannot be populated or must be false.
Order Cancel Request (35=F)
A firm may use this message to cancel the remaining quantity of any working single or multi-leg order.CANCEL order example
CANCEL order example
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.
Partiesrows that attempt to override the executing firm (452=1) or ITM (452=3) are not allowed on replaces and will be rejected.
Cancel/Replace LIMIT order example
Cancel/Replace LIMIT order example
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 toNewOrderSinglemessage. Sent for every new order, even those matched immediately. - Canceled (
150=4): Confirms order is canceled in response toOrderCancelRequest, 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 toOrderCancel/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: