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)
| Tag | Name | Type | Required | Description |
|---|---|---|---|---|
60 | TransactTime | UTCTimestamp | N | The 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. |
1 | Account | String | Y | The unique identifier of the account. |
37 | OrderID | String | Y | Bitvavo identifier of the order. Must be a valid UUID, for example 1be6d0df-d5dc-4b53-a250-3376f3b393e6. Empty if a new order is rejected. |
11 | ClOrdID | String | Y | Your identifier of the order. Must be a valid UUID, for example 1be6d0df-d5dc-4b53-a250-3376f3b393e6. |
41 | OrigClOrdID | String | C | Your identifier of the order. If the order was previously updated, this is the ClOrdID (11) of the most recent order. |
2422 | OrderRequestID | Int | C | Your unique identifier of the order request message. |
790 | OrdStatusReqID | String | C | Your unique identifier of a OrderStatusRequest message. |
584 | MassStatusReqID | Int | C | Your unique identifier of the OrderMassStatusRequest message. |
1003 | TradeID | String | C | Bitvavo 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). |
55 | Symbol | String | Y | The market in which the order was created, for example BTC-EUR. When there are no open orders, this is set to |
54 | Side | Char | Y | Indicates whether the order is to buy or sell the asset. Can be:
|
17 | ExecID | String | Y | Bitvavo identifier of the execution message. Will be 0 for ExecType = I (Order Status). |
150 | ExecType | Char | Y | The purpose of the execution report. Can be:
|
39 | OrdStatus | Char | Y | The current state of the order. Can be:
|
378 | ExecRestatementReason | Int | C | The reason why the status of the order was changed. You can find the possible values below. |
58 | Text | String | C | The description explaining the order status, execution type, or restatement reason. |
38 | OrderQty | Qty | C | The quantity of the base currency (for example BTC). |
152 | CashOrderQty | Qty | C | The quantity of the quote currency (for example EUR). Only applicable to market, stop, and stop limit orders. |
151 | LeavesQty | Qty | Y | The 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. |
14 | CumQty | Qty | Y | The total quantity that was filled. If CashOrderQty was specified in the original message, the quantity is in quote currency. |
32 | LastQty | Qty | C | The 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. |
84 | CxlQty | Qty | C | The quantity that was canceled. Required if OrdStatus is 4 Canceled. |
40 | OrdType | Char | N | The type of order. Can be:
|
44 | Price | Price | N | The price in quote currency. |
31 | LastPx | Price | C | The price of the last fill. Required for partial fills and fills. |
99 | StopPx | Price | C | The trigger price in quote currency for stop and stop-limit orders. |
1107 | TriggerPriceType | Char | C | The price which triggers the order to be filled. Can be:
|
59 | TimeInForce | Char | N | How long an order stays active for. Can be:
|
18 | ExecInst | MultipleChar | C | The execution instruction. If specified in the original request, usually set to 6 to mark the order as postOnly. |
2964 | SelfMatchPreventionInstruction | Char | C | Self-trading prevention strategy for conflicting orders. Can be:
|
851 | LastLiquidityInd | Char | C | Indicates whether the fill added or removed liquidity. Can be:
|
5003 | OnHold | Amt | C | Custom Bitvavo tag The amount of OnHoldCurrency reserved for an order that is being processed. Required for active orders. |
5004 | OnHoldCurrency | Currency | C | Custom 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. |
12 | Commission | Currency | C | Bitvavo fees for the order. |
2643 | CommissionCurrency | Currency | C | The currency in which the Bitvavo fee is paid. |
103 | OrdRejReason | Int | C | The reason why a new order, order cancel request, or order cancel replace request was rejected. You can find the possible values below. |
5002 | OperatorID | Int | N | Custom 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.
| Tag | Description |
|---|---|
1 | Unknown symbol The requested market does not exist or cannot be found internally. |
2 | Exchange closed Market is halted. |
3 | Order exceeds limit Account balance cannot cover the order. |
5 | Unknown order Order cannot be located. |
6 | Duplicate order Duplicate ClOrdID detected. |
13 | Incorrect quantity Base or quote quantity is malformed. |
15 | Unknown account The account cannot be found. |
16 | Price exceeds current price band Price falls outside the exchange protection bands. |
18 | Invalid price increment Price does not align with the market tick size. |
27 | Exceeded max notional order amount Order notional value exceeds the maximum allowed. |
99 | Other Reserved for unexpected issues (corrupted side, exponents, or internal identifiers). |
101 | Custom Bitvavo value Self-match prevention value is not supported. |
102 | Custom Bitvavo value Time in force value is not supported. |
103 | Custom Bitvavo value Order or quote quantity exceeds the maximum allowed size. |
104 | Custom Bitvavo value Price precision exceeds supported decimals. |
105 | Custom Bitvavo value Order or quote quantity is below the minimum allowed size. |
106 | Custom Bitvavo value Trigger order type is not supported. |
107 | Custom Bitvavo value Trigger price reference is not supported. |
108 | Custom Bitvavo value Trigger price precision exceeds supported decimals. |
109 | Custom Bitvavo valueClOrdID is invalid or duplicated. |
110 | Custom Bitvavo value Replace request does not change any order attributes. |
111 | Custom Bitvavo value Quantity fields in the replace request conflict with remaining quantity. |
112 | Custom Bitvavo value Order notional value is below the minimum allowed. |
113 | Custom Bitvavo value Maximum number of orders per market has been reached. |
114 | Custom Bitvavo value Price is invalid. |
115 | Custom Bitvavo value Bitvavo order identifier is invalid. |
116 | Custom Bitvavo value Stop price is invalid. |
117 | Custom Bitvavo value Stop price does not align with the market tick size. |
118 | Custom Bitvavo value Remaining quantity becomes invalid during processing. |
119 | Custom 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.
| Tag | Description |
|---|---|
6 | Cancel on Trading Halt |
12 | Cancel On Connection Loss |
15 | Cancelled, Trade Price Violation |
17 | Cancelled, self-match prevention |
101 | Custom Bitvavo value Decremented, self-match prevention |
102 | Custom Bitvavo value Cancelled, placement price protection violation |
103 | Custom Bitvavo value Cancelled, spread protection violation |
104 | Custom Bitvavo value Cancelled, reference price protection violation |
105 | Custom Bitvavo value Cancelled, post-only violation during the auction |
106 | Custom Bitvavo value Cancelled, market delisted |
107 | Custom Bitvavo value Cancelled, entity lock placed |
108 | Custom Bitvavo value Cancelled, admin request |
109 | Custom Bitvavo value Cancelled, post-only violation |