Skip to main content
FIXsession: trading35=8
Reports every state change on an order once the engine has accepted it. ExecType says what happened — new, replaced, cancelled, expired, traded, restated, or an answer to a status request — and OrdStatus says what state the order is now in. Fills carry LastPx, LastQty, the running CumQty and AvgPx, the trade identifier, and the maker/taker flag in LastLiquidityInd. Direction: Kraken → client
required
35=8
string
Exchange-assigned order identifier generated by Kraken; the value to quote back on cancels, amends and status requests.Format: Assigned by Kraken; quote it back on cancels, amends and status requests.
string
required
Client-assigned order identifier, as sent by the client. On US Perps it is a positive integer of at most 19 digits.Format: Positive integer, up to 19 digits, e.g. a microsecond timestamp.
string
ClOrdID of the previous action on the order. Sent on cancel and amend reports.Required: Conditional
string
required
Unique identifier of this execution report. Treat it as opaque: do not parse it or derive it from ClOrdID. On US Perps the New (150=0) acknowledgement uses a ClOrdID-based form, reports driven by the engine carry an engine-generated identifier, and an Order Status answer (150=I) repeats the ExecID of the cached report.
ExecID: venue differences
char
required
Nature of the event this execution report describes.Possible values:
  • 0 : New - the order is live in the engine.
  • 4 : Canceled - the order was cancelled.
  • 5 : Replace - the amend was applied.
  • 8 : Rejected - the matching engine refused an order it had already acknowledged, for example a post-only order that would cross, a fill-or-kill order that cannot be filled in full or an order stopped by market price protection. The report carries OrdRejReason (103) and Text (58). A request refused before it is acknowledged (an unsupported feature, an invalid field, a risk limit) arrives as a BusinessMessageReject (35=j) instead. Engine limit checks (quantity cap, price bounds and bands) map to OrdRejReason 3, so they may arrive as 150=8 rather than 35=j; this is to be confirmed in UAT.
  • C : Expired - the order reached its expiry.
  • D : Restated - the engine changed the order itself, for example by re-displaying an iceberg slice.
  • F : Trade - the order got a fill. LastPx/LastQty carry that fill.
  • I : Order Status - this report answers an OrderStatusRequest rather than reporting an event.
char
required
Current state of the order.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 - the matching engine refused the order after acknowledging it. See OrdRejReason (103) and Text (58) for the reason.
  • C : Expired - expired and closed.
integer
Code identifying the reason why an order was rejected by the matching engine. Present only on Execution Reports with ExecType (150) = 8 and OrdStatus (39) = 8. The gateway maps only the values below; match-time rejects use 3, 11 and 99. Which engine rejections reach 150=8 is decided by the engine.Possible values:
  • 1 : Unknown symbol.
  • 2 : Exchange closed.
  • 3 : Order exceeds a limit (quantity cap, price bounds and bands).
  • 5 : Unknown order.
  • 6 : Duplicate order.
  • 11 : Unsupported order characteristic.
  • 13 : Incorrect quantity.
  • 99 : Other.
The other FIX 4.4 values are not sent.Required: Conditional
Engine rejects: venue differences
string
Numeric end-client id of the end client the order was placed for, as sent in Account (1) on the order.Format: Non-zero numeric end-client id.
string
Perpetual futures contract, in the venue symbol form. Ten contracts are listed at launch.Format: Venue symbol.
string
Identifier of the instrument within the Kraken instrument scheme. Present when it is cached for the order.Format: Venue instrument identifier.
InstrumentID: venue differences
char
required
Side of the order.Possible values:
  • 1 : Buy.
  • 2 : Sell.
Qty
Order quantity in contracts.
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.
Price
Limit price of the order, denominated in the quote currency. Required for limit orders.Format: Limit price, denominated in the quote currency.Required: Conditional
char
How long the order stays in effect. GTC, IOC, FOK and GTD are the supported durations; 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 in ExpireTime (126).
Qty
Quantity bought or sold on this fill.Required: Conditional
Price
Price of this fill.Required: Conditional
Qty
required
Quantity still working in the book.
Qty
required
Total quantity filled on the order so far.
Amt
Gross amount traded on the order. The New (150=0) acknowledgement carries 0.
Qty
May be present on reports. Display quantity cannot be set on US Perps orders: NewOrderSingle rejects iceberg orders.
Price
required
Average price across all fills on the order.
UTCTimestamp
Time of the business event in UTC, formatted YYYYMMDD-HH:MM:SS.uuu.Format: UTC timestamp, YYYYMMDD-HH:MM:SS.uuu
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.
integer
Code indicating whether this fill added liquidity to or removed liquidity from the market. Only 1 and 2 are sent.Possible values:
  • 1 : The fill added liquidity to the order book.
  • 2 : The fill took liquidity from the order book.
Required: Conditional
Liquidity indicator: venue differences
string
Exchange-assigned identifier of the trade.Required: Conditional
required