FIXOrders FIX

POST

The client sends OrderCancelRequest (35=F) to the server over TLS/TCP. This is not an HTTP request.

Cancel an open order on the order-entry session.

Provide OrderID (37) and/or OrigClOrdID (41); at least one is required. Tag 37 takes precedence when both are supplied.

On success: server sends PendingCancel ExecutionReport (150=6, 39=6) then Canceled ExecutionReport (150=4, 39=4). LeavesQty (151) on the Canceled report is the open quantity at cancel time, not 0. Detect completion via OrdStatus (39) or ExecType (150), not 151=0.

On failure: server sends OrderCancelReject (35=9). Check CxlRejReason (102) and Text (58).

Examples (pipe-delimited FIX):

Cancel by OrigClOrdID:

8=FIX.4.4|9=132|35=F|49=0123456789abcdef0123456789abcdef|56=BITGO|34=91|52=20260618-12:46:28.424|11=cxl-ord-006|41=ord-006|60=20260618-12:46:28.424|10=XXX

Cancel by OrderID:

8=FIX.4.4|9=161|35=F|49=0123456789abcdef0123456789abcdef|56=BITGO|34=92|52=20260618-12:46:29.000|11=cxl-ord-007|37=80115a50-1542-48b7-92f9-03d99194ade3|60=20260618-12:46:29.000|10=XXX

Body Params

object

OrderCancelRequest (35=F) body fields. At least one of OrderID (37) or OrigClOrdID (41) is required to identify the order; tag 37 takes precedence when both are present. TransactTime (60) is the only unconditionally required field.
  • clOrdID string
    Optional. Unique ID for this cancel request. This ID is not echoed back in the cancel ExecutionReports.
  • origClOrdID string
    Conditional. ClOrdID of the order to cancel; must match the ClOrdID sent in the NewOrderSingle. Required if OrderID (37) is absent.
  • orderID string
    Conditional. BitGo order UUID from ExecutionReport. When present, takes precedence over OrigClOrdID (41) for order resolution.
  • transactTime string required
    Required. UTC timestamp. Format YYYYMMDD-HH:MM:SS[.sss].
  • account string
    Optional. Must match the session account. Rejected if present and mismatched.

Responses

200
Cancel accepted. PendingCancel then Canceled ExecutionReports follow.

Response Body

object

ExecutionReport (35=8). Server → client. Lifecycle events for NewOrderSingle, cancels, fills, rejects, and OrderStatusRequest (150=I).

Correlate with ClOrdID (11) and OrderID (37). ExecType=F is used for all fills. Use OrdStatus (39) and LeavesQty (151) for working vs terminal state — not 150=F alone. Terminal Filled (39=2, typically 151=0) is usually on the following Order Status report (150=I), not on the last fill.

  • account string
    Optional Trading account ID (Go account ID)
  • avgPx string required
    Required. Average fill price (0 if unfilled).
  • clOrdID string required
    Required. Client order id. NONE on cancel reports (PendingCancel / Canceled) and when the order has no client id.
  • cumQty string required
    Required. Total quantity filled so far.
  • currency string
    Optional. Quantity currency for tag 38.
  • execID string required
    Required. Unique id for this ExecutionReport.
  • lastPx string
    Conditional. This fill's price. Present only when ExecType = F (Trade). Omitted otherwise.
  • lastQty string
    Conditional. This fill's quantity. Present only when ExecType = F (Trade). Omitted otherwise.
  • orderID string required
    Required. BitGo order UUID. NONE on some reject reports.
  • orderQty string
    Optional. Original order quantity echoed from the NewOrderSingle.
  • ordStatus string enum required
    Required. Current order state: A Pending New, 0 New, 1 Partially Filled, 2 Filled, 4 Canceled, 6 Pending Cancel, 8 Rejected.
    012468A
  • ordType string enum
    Optional. Echoed from the original NewOrderSingle.
    1234
  • origClOrdID string
    Optional / Conditional. Set on cancel-related ERs to the original NOS ClOrdID.
  • price string
    Optional. Limit price echoed from the original NewOrderSingle.
  • side string enum required
    Required. 1 Buy, 2 Sell. 7 Undisclosed may appear on some reject reports.
    127
  • symbol string required
    Required. Product echoed from the NewOrderSingle. N/A on some reject reports.
  • text string
    Optional / Conditional. Human-readable reject detail. Present on rejects (150=8).
  • timeInForce string enum
    Optional. Echoed from the original NewOrderSingle.
    1346
  • transactTime string required
    Required. UTC business timestamp for this report.
  • stopPx string
    Optional. Stop/trigger price echoed from the original NewOrderSingle.
  • ordRejReason integer enum
    Conditional. Present only when ExecType = 8 (Rejected). 1 Unknown symbol, 2 Market unavailable, 3 OrderExceedsLimit, 6 Duplicate ClOrdID, 15 UnknownAccount, 99 Other (see Text).
    12361599
  • execType string enum required
    Required. Event type: A PendingNew, 0 New, F Trade (partial or full), 6 PendingCancel, 4 Canceled, 8 Rejected, I Order Status (response to 35=H, and terminal status summary after a full fill).
    0468AFI
  • leavesQty string required
    Required. Quantity still open. Use together with OrdStatus (39) for working vs terminal state. On terminal Canceled reports (150=4 / 39=4) this stays at the open quantity at cancel time; it is not reset to 0 (39=4 is canceled even when 151 > 0). On fills, 151=0 with 39=1 is not yet terminal Filled — wait for 39=2 (typically on 150=I).
  • effectiveTime string
    Optional. Scheduled activation time echoed from NOS.
  • grossTradeAmt string
    Optional. Cumulative filled quote quantity (equivalent to REST filledQuoteQuantity).
  • targetStrategy string enum
    Optional. Algo strategy echoed from the original order (T TWAP, S SteadyPace).
    TS
  • noStrategyParameters integer
    Optional. Strategy param group count echoed from NOS for algo orders.
  • strategyParameterName string
    Optional. Parameter name within group 957.
  • strategyParameterType string enum
    Optional. Populated by the server on echoed strategy parameters: 1 = Int, 6 = Float, 14 = String, based on the parameter's inferred type.
    1614
  • strategyParameterValue string
    Optional. Parameter value within group 957.
  • fundingType string enum
    Optional. 1 Funded, 2 Margin. Echoed from the original order.
    12
default
Cancel refused. The server responds with OrderCancelReject (35=9).

Response Body

object

OrderCancelReject (35=9). Server → client when OrderCancelRequest cannot be fulfilled. CxlRejResponseTo (434) is always 1 (OrderCancelRequest).
  • account string
    Optional. Echoed when available (inbound cancel Account or session Go Account ID). Omitted when empty.
  • orderID string required
    Required. Echoed from the cancel request, or NONE when absent.
  • clOrdID string
    Optional. Echoed from the cancel request.
  • origClOrdID string
    Optional. Echoed from the cancel request (NONE when empty).
  • ordStatus string enum required
    Required. Current order status. Often 8 on rejects; real status when 102=0 (too late).
    012468A
  • text string required
    Required. Human-readable rejection reason.
  • transactTime string required
    Required. Echoed from the cancel request when present.
  • cxlRejReason integer enum required
    Required. 0 Too late to cancel (already filled/canceled/pending cancel). 1 Unknown order. 99 Other (system error, account mismatch, non-cancelable state; see Text).
    0199
  • cxlRejResponseTo string enum required
    Required. Always 1 (OrderCancelRequest).
    1