> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kraken.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Order Cancel Reject

> Rejection of a single-order cancel request

<div className="api-banner">
  <span className="api-protocol fix">FIX</span>
  <span className="api-detail">session: trading</span>
  <span className="api-tag">35=9</span>
</div>

Rejects a single-order cancel that Kraken will not act on. The FIX gateway sends it itself in some cases, for example for an unknown order, so it is not only a rejection by the matching engine. It is sent only where it is enabled (UAT today; the production setting is to be confirmed); otherwise a cancel business reject arrives as a BusinessMessageReject (35=j), so handle both.

Amend rejections never arrive as 35=9. They arrive as a BusinessMessageReject (35=j) or, for a field-level error, a Reject (35=3), so CxlRejResponseTo (434) is always `1`. Field-level errors on a cancel are also answered with 35=3.

<Note>
  **Cancel rejects: venue differences**

  | | US Perps | Spot | Futures |
  | :- | :- | :- | :- |
  | OrderCancelReject (`35=9`) | Sent for cancels (UAT; production to be confirmed) | Not sent | Not sent |
  | Cancel business reject | `35=9`, or `35=j` where `35=9` is not enabled | `35=j` | `35=j` |
  | Amend reject | `35=j` or `35=3` | `35=j` | `35=j` (amend is off in production, on in UAT) |
  | Unknown order on a cancel | `35=9` with CxlRejReason (102) `1` | `35=j` with BusinessRejectReason (380) `1` | Same as Spot |
</Note>

**Direction:** Kraken → client

***

<ResponseField name="header" type="" required>35=`9`</ResponseField>

<ResponseField name="37 - OrderID" type="string" required>
  Exchange-assigned order identifier generated by Kraken; the value to quote back on cancels, amends and status requests. `NONE` when the order is unknown.

  **Format:** Assigned by Kraken; quote it back on cancels, amends and status requests. `NONE` for an unknown order.
</ResponseField>

<ResponseField name="11 - ClOrdID" type="string" required>
  Client-assigned identifier of the cancel request this rejection answers. On US Perps it must be a positive integer of at most 19 digits: use an ever-increasing number, for example a microsecond timestamp. See [New Order Single](/exchange/api-reference/unified-fix-v2/nos) for how invalid values are rejected.

  **Format:** Positive integer, up to 19 digits, e.g. a microsecond timestamp.
</ResponseField>

<ResponseField name="41 - OrigClOrdID" type="string">
  ClOrdID of the order that was being cancelled. Optional on this message: FIX 4.4 requires it, but because a cancel may quote OrderID alone, a reject for an order Kraken never knew has no ClOrdID to echo.

  <span className="field-attr">Required:</span> Conditional
</ResponseField>

<ResponseField name="39 - OrdStatus" type="char" required>
  Current state of the order. `8` accompanies OrderID `NONE`: the order is unknown.

  **Possible values:**

  * `0` : New - live, nothing filled.
  * `1` : Partially filled - live with fills against it.
  * `2` : Filled - fully filled and closed.
  * `4` : Canceled - cancelled and closed.
  * `8` : Rejected - used with OrderID `NONE` when the order is unknown.
  * `C` : Expired - expired and closed.

  Pending New (`A`), Replaced (`5`) and Pending Replace (`E`) are defined by FIX but are never sent on US Perps.
</ResponseField>

<ResponseField name="434 - CxlRejResponseTo" type="char" required>
  Whether the rejection answers a cancel request or a cancel/replace request. Always `1` on US Perps: an amend is never rejected with OrderCancelReject.

  **Possible values:**

  * `1` : This rejects an OrderCancelRequest.
  * `2` : This rejects an OrderCancelReplaceRequest. Defined by FIX but never sent on US Perps: amend rejects arrive as `35=j` or `35=3`.
</ResponseField>

<ResponseField name="102 - CxlRejReason" type="integer">
  Why the cancel was refused. Only `1` and `99` are sent on US Perps.

  **Possible values:**

  * `1` : Unknown order.
  * `99` : Other.

  The other FIX values (`0`, `2`, `3`, `4`, `5`, `6`) are not sent. For example `3` (order already pending cancel) would need an empty error, which the engine route never produces.
</ResponseField>

<ResponseField name="58 - Text" type="string">
  Free-text description: the cancellation reason, reject reason, or order status detail.

  **Format:** Free text set by Kraken; carries the reject or cancellation reason.
</ResponseField>

<ResponseField name="trailer" type="" required />
