> ## 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 Replace Request

> Amend the price, quantity or expiry of a working order

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

Amends a working order. Price, quantity and, on a good-till-date order, the expiry are the amendable terms; Side, OrdType and Symbol must match the original, and a change of TimeInForce is rejected because there is no field for it in the engine schema. Both OrderID (37) and OrigClOrdID (41) are required, and at least one of OrderQty (38) and Price (44) must be present. An amend that Kraken refuses is answered with a BusinessMessageReject (35=j) or, for a field-level error, a Reject (35=3). It is never answered with an OrderCancelReject (35=9).

<Note>
  **Amend: venue differences**

  | | US Perps | Spot | Futures |
  | :- | :- | :- | :- |
  | Rejected amend | `35=j` or `35=3`, never `35=9` | `35=j` | `35=j` |
  | Availability | Available | Available | Off in production; on in UAT with the same rules |
  | Order lookup | OrigClOrdID finds the order and OrderID must match it | Same rule | Same rule (UAT) |
</Note>

**Direction:** Client → Kraken

***

<ResponseField name="header" type="" required>35=`G`</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. Required on an amend, together with OrigClOrdID: OrigClOrdID finds the order and OrderID must match it.

  **Format:** Assigned by Kraken; quote it back on cancels, amends and status requests.
</ResponseField>

<ResponseField name="41 - OrigClOrdID" type="string" required>
  ClOrdID of the previous action on the order. On an amend it finds the order, and OrderID (37) must match that order. Unlike on a cancel, OrderID does not take precedence over OrigClOrdID.
</ResponseField>

<ResponseField name="11 - ClOrdID" type="string" required>
  Client-assigned identifier of the amend request. 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="1 - Account" type="string">
  Numeric end-client id of the end client the order belongs to. Optional on this message and not used: the end client is taken from the original order.

  **Format:** Non-zero numeric end-client id.
</ResponseField>

<ResponseField name="18 - ExecInst" type="MultipleStringValue">
  Execution instructions. The only value accepted on an amend is `P` (post-only). An amend restates post-only: leaving ExecInst out removes post-only from the resting order, so send `18=P` on every amend of an order that should stay post-only. `E` or `s` is rejected with a Reject (`35=3`) and `SessionRejectReason (373)` = `5`. Reduce-only is not supported on US Perps.

  **Possible values:**

  * `P` : Post-only. Limit orders only. An amend restates it: leaving `18=P` out removes post-only from the resting order.
</ResponseField>

<Note>
  **Amend ExecInst: venue differences**

  | | US Perps | Spot | Futures |
  | :- | :- | :- | :- |
  | Values accepted on an amend | Only `P` | Only `P` | Only `P` (amend is off in production) |
  | `P` left out | Post-only is cleared | No flags are sent on the ACG route, so post-only is probably kept; post-only is cleared on DirectTE (effect in the engine unconfirmed) | Same rule (UAT) |
  | Reduce-only (`E`) | Not supported | Not accepted on amend | Not accepted on amend |
</Note>

<ResponseField name="55 - Symbol" type="string">
  Perpetual futures contract, in the venue symbol form. Ten contracts are listed at launch. Either Symbol or InstrumentID must be sent. Ignored when InstrumentID is also sent: the instrument is then recognised from InstrumentID.

  **Format:** Venue symbol.

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

<ResponseField name="48 - InstrumentID" type="string">
  Identifier of the instrument within the identification scheme named by InstrumentIDSource. Either Symbol or InstrumentID must be sent.\
  Where both Symbol and InstrumentID are sent, InstrumentID is what the instrument is recognised from and Symbol is ignored.

  **Format:** Venue instrument identifier. Takes precedence over Symbol when both are sent.

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

<ResponseField name="22 - InstrumentIDSource" type="string">
  Identification scheme that InstrumentID is expressed in.

  **Possible values:**

  * `8` : Exchange symbol.
</ResponseField>

<ResponseField name="54 - Side" type="char" required>
  Side of the order.

  **Possible values:**

  * `1` : Buy.
  * `2` : Sell.
</ResponseField>

<ResponseField name="60 - TransactTime" type="UTCTimestamp" required>
  Time of the business event in UTC, formatted YYYYMMDD-HH:MM:SS.uuu.

  **Format:** UTC timestamp, YYYYMMDD-HH:MM:SS.uuu
</ResponseField>

<ResponseField name="38 - OrderQty" type="Qty">
  New order quantity in contracts. Optional: if left out the resting quantity stands. At least one of OrderQty and Price must be present.

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

<ResponseField name="40 - OrdType" type="char" required>
  Execution model of the order.

  **Possible values:**

  * `1` : Market - fill the whole quantity immediately at the best available prices.
  * `2` : Limit - rest in the book, trading only at the limit price or better.
</ResponseField>

<ResponseField name="44 - Price" type="Price">
  New limit price of the order, denominated in the quote currency. Optional: if left out the resting price stands. At least one of OrderQty and Price must be present. Not permitted on a market order.

  **Format:** Limit price, denominated in the quote currency.

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

<ResponseField name="1138 - DisplayQty" type="Qty">
  Not supported on US Perps. NewOrderSingle rejects iceberg orders ("Order type iceberg is not supported on this venue"), so there is no display quantity to amend.
</ResponseField>

<Note>
  **DisplayQty: venue differences**

  | | US Perps | Spot | Futures |
  | :- | :- | :- | :- |
  | DisplayQty (1138) | Not supported | Supported (iceberg orders) | Not read as a size; its presence turns the order into an iceberg order with no display size (back-end outcome unconfirmed) |
</Note>

<ResponseField name="126 - ExpireTime" type="UTCTimestamp">
  New expiry of a good-till-date order, in UTC. Only accepted on an order resting as GTD (TimeInForce 6). If left out the expiry is unchanged.

  **Format:** UTC timestamp, YYYYMMDD-HH:MM:SS.uuu
</ResponseField>

<ResponseField name="59 - TimeInForce" type="char">
  Optional. If sent it must equal the order's resting TimeInForce: a change of TimeInForce on an amend is rejected.

  **Possible values:**

  * `1` : GTC - good till cancelled. Rests indefinitely.
  * `3` : IOC - fill what you can immediately, cancel the rest.
  * `4` : FOK - fill the entire quantity immediately or cancel the whole order.
  * `6` : GTD - good till date. The expiry is amended with ExpireTime (126).
</ResponseField>

<ResponseField name="62 - ValidUntilTime" type="UTCTimestamp">
  Not accepted on an amend: an amend that carries ValidUntilTime is rejected.

  **Format:** UTC timestamp, YYYYMMDD-HH:MM:SS.uuu
</ResponseField>

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