Skip to main content

ExecutionReport (35=8)

Returns information about the status of orders, order changes, fills, and rejections. Sent by Bitvavo during the order lifecycle to communicate updates and execution details.

Structure

Requires:

Message body

Required column values:

  • Y = Required
  • N = Not required
  • C = Conditionally required (depends on another parameter)
TagNameTypeRequiredDescription
60TransactTimeUTCTimestampNThe UTC timestamp in nanoseconds when the message was created. Must be in the format YYYYMMDD-HH:MM:SS.sssssssss, for example 20260115-10:05:54.794327000.
1AccountStringYThe unique identifier of the account.
37OrderIDStringYBitvavo identifier of the order. Must be a valid UUID, for example 1be6d0df-d5dc-4b53-a250-3376f3b393e6. Empty if a new order is rejected.
11ClOrdIDStringYYour identifier of the order. Must be a valid UUID, for example 1be6d0df-d5dc-4b53-a250-3376f3b393e6.
41OrigClOrdIDStringCYour identifier of the order. If the order was previously updated, this is the ClOrdID (11) of the most recent order.
2422OrderRequestIDIntCYour unique identifier of the order request message.
790OrdStatusReqIDStringCYour unique identifier of a OrderStatusRequest message.
584MassStatusReqIDIntCYour unique identifier of the OrderMassStatusRequest message.
1003TradeIDStringCBitvavo identifier of the trade. Must be a valid UUID, for example 1be6d0df-d5dc-4b53-a250-3376f3b393e6. Required if ExecType = F Trade (partial fill or fill).
55SymbolStringYThe market in which the order was created, for example BTC-EUR.
When there are no open orders, this is set to 0 in the response to OrderMassStatusRequest.
54SideCharYIndicates whether the order is to buy or sell the asset.
Can be:
  • 1: Buy
  • 2: Sell
  • 7: Undisclosed
17ExecIDStringYBitvavo identifier of the execution message. Will be 0 for ExecType = I (Order Status).
150ExecTypeCharYThe purpose of the execution report.
Can be:
  • 0: New
  • F: Trade
  • 4: Canceled
  • C: Expired
  • 5: Replaced
  • L: Triggered
  • D: Restated
  • 8: Rejected
  • I: Order status
39OrdStatusCharYThe current state of the order.
Can be:
  • 0: New
  • 1: Partially filled
  • 2: Filled
  • 4: Canceled
  • 8: Rejected
  • C: Expired
  • T: Awaiting trigger
  • U: Unknown
378ExecRestatementReasonIntCThe reason why the status of the order was changed.
You can find the possible values below.
58TextStringCThe description explaining the order status, execution type, or restatement reason.
38OrderQtyQtyCThe quantity of the base currency (for example BTC).
152CashOrderQtyQtyCThe quantity of the quote currency (for example EUR). Only applicable to market, stop, and stop limit orders.
151LeavesQtyQtyYThe quantity of the part of the order that is still open. If CashOrderQty was specified in the original message, the quantity is in quote currency.
14CumQtyQtyYThe total quantity that was filled. If CashOrderQty was specified in the original message, the quantity is in quote currency.
32LastQtyQtyCThe quantity bought or sold on the last fill. Required for partial fills and fills. If CashOrderQty was specified in the original message, the quantity is in quote currency.
84CxlQtyQtyCThe quantity that was canceled. Required if OrdStatus is 4 Canceled.
40OrdTypeCharNThe type of order.
Can be:
  • 1: Market
  • 2: Limit
  • 3: Stop
  • 4: Stop limit
44PricePriceNThe price in quote currency.
31LastPxPriceCThe price of the last fill. Required for partial fills and fills.
99StopPxPriceCThe trigger price in quote currency for stop and stop-limit orders.
1107TriggerPriceTypeCharCThe price which triggers the order to be filled.
Can be:
  • 1: Best Offer
  • 2: Last Trade
  • 3: Best Bid
  • 6: Best Mid
59TimeInForceCharNHow long an order stays active for.
Can be:
  • 1: Good Till Cancel (GTC)
  • 3: Immediate Or Cancel (IOC)
  • 4: Fill Or Kill (FOK)
18ExecInstMultipleCharCThe execution instruction. If specified in the original request, usually set to 6 to mark the order as postOnly.
2964SelfMatchPreventionInstructionCharCSelf-trading prevention strategy for conflicting orders.
Can be:
  • 1: Cancel aggressive (newest)
  • 2: Cancel passive (oldest)
  • 3:Cancel both
  • 4: Decrement and cancel (Custom Bitvavo value)
851LastLiquidityIndCharCIndicates whether the fill added or removed liquidity.
Can be:
  • 1: Added liquidity (maker)
  • 2: Removed liquidity (taker)
Required for partial fills and fills.
5003OnHoldAmtCCustom Bitvavo tag
The amount of OnHoldCurrency reserved for an order that is being processed. Required for active orders.
5004OnHoldCurrencyCurrencyCCustom Bitvavo tag
The currency reserved for an order that is being processed. This is the quote currency for sell orders and the base currency for buy orders.
12CommissionCurrencyCBitvavo fees for the order.
2643CommissionCurrencyCurrencyCThe currency in which the Bitvavo fee is paid.
103OrdRejReasonIntCThe reason why a new order, order cancel request, or order cancel replace request was rejected.
You can find the possible values below.
5002OperatorIDIntNCustom Bitvavo tag
Your identifier for the trader or the bot within your account that made the request.

OrderRejReason values

We use the standard FIX codes when available. Custom Bitvavo codes start at 101.

TagDescription
1Unknown symbol
The requested market does not exist or cannot be found internally.
2Exchange closed
Market is halted.
3Order exceeds limit
Account balance cannot cover the order.
5Unknown order
Order cannot be located.
6Duplicate order
Duplicate ClOrdID detected.
13Incorrect quantity
Base or quote quantity is malformed.
15Unknown account
The account cannot be found.
16Price exceeds current price band
Price falls outside the exchange protection bands.
18Invalid price increment
Price does not align with the market tick size.
27Exceeded max notional order amount
Order notional value exceeds the maximum allowed.
99Other
Reserved for unexpected issues (corrupted side, exponents, or internal identifiers).
101Custom Bitvavo value
Self-match prevention value is not supported.
102Custom Bitvavo value
Time in force value is not supported.
103Custom Bitvavo value
Order or quote quantity exceeds the maximum allowed size.
104Custom Bitvavo value
Price precision exceeds supported decimals.
105Custom Bitvavo value
Order or quote quantity is below the minimum allowed size.
106Custom Bitvavo value
Trigger order type is not supported.
107Custom Bitvavo value
Trigger price reference is not supported.
108Custom Bitvavo value
Trigger price precision exceeds supported decimals.
109Custom Bitvavo value
ClOrdID is invalid or duplicated.
110Custom Bitvavo value
Replace request does not change any order attributes.
111Custom Bitvavo value
Quantity fields in the replace request conflict with remaining quantity.
112Custom Bitvavo value
Order notional value is below the minimum allowed.
113Custom Bitvavo value
Maximum number of orders per market has been reached.
114Custom Bitvavo value
Price is invalid.
115Custom Bitvavo value
Bitvavo order identifier is invalid.
116Custom Bitvavo value
Stop price is invalid.
117Custom Bitvavo value
Stop price does not align with the market tick size.
118Custom Bitvavo value
Remaining quantity becomes invalid during processing.
119Custom Bitvavo value
Market is cancel-only or in auction (collection or matching) mode.

ExecRestatementReason values

We use the standard FIX codes when available. Custom Bitvavo codes start at 101.

TagDescription
6Cancel on Trading Halt
12Cancel On Connection Loss
15Cancelled, Trade Price Violation
17Cancelled, self-match prevention
101Custom Bitvavo value
Decremented, self-match prevention
102Custom Bitvavo value
Cancelled, placement price protection violation
103Custom Bitvavo value
Cancelled, spread protection violation
104Custom Bitvavo value
Cancelled, reference price protection violation
105Custom Bitvavo value
Cancelled, post-only violation during the auction
106Custom Bitvavo value
Cancelled, market delisted
107Custom Bitvavo value
Cancelled, entity lock placed
108Custom Bitvavo value
Cancelled, admin request
109Custom Bitvavo value
Cancelled, post-only violation

See also