Execution Report <8>

The Execution Report <8> message is used to

  • Acknowledge the receipt of an order
  • Confirm changes to an existing order (i.e. cancelled or replaced)
  • Reject order
TagField NameData TypeReq’dComments
Standard header - OutgoingYMsgType 35=8
37OrderIDstringNUnique identifier for Order as assigned by the Exchange.
198SecondaryOrderIDstringNUnique identifier for Order as assigned by the Exchange(in a different format).
11ClOrdIDstringYUnique identifier of the order as assigned by client.
41OrigClOrdIDstringCClOrdID <11> of the existing order that the amend/cancel request want to execute.
453NoPartyIDsintNA repeating group (↺) which should contain unique combinations of below tags: PartyID <448> PartyIDSource <447> PartyRole <452>
↺ 448PartyIDstringCParty identifier/code. It can be an Exchange firm name or user unique identifier that is the same as tag 1. e.g. XXXX_GROUP.
↺ 447PartyIDSourcestringNIdentifies class or source of PartyID <448> Valid value:

D - Proprietary/Custom code
↺ 452PartyRoleintNIdentifies the type of PartyID <448> Valid values:

1 - Executing Firm
12 - Executing Trader
17ExecIDstringYUnique identifier of execution message as assigned by the Exchange.
527SecondaryExecIDstringNUnique identifier for executed fill as assigned by the Exchange(in a different format), an alphanumeric string of no more than 20 characters.
150ExecTypestringYDescribes the specific Execution Report while OrdStatus <39> will always identify the current order status. Valid values:

0 - New
4 - Canceled
5 - Replaced
8 - Rejected
9 - Suspended
C - Expired
D - Restated (new or partial fill)
F - Trade (partial fill or fill)

The supported combination of ExecType <150> and OrdStatus <39> is listed in the reference table below
39OrdStatusstringYIdentifies current status of order. Valid values:

0 - New
1 - Partially filled
2 - Filled
4 - Cancelled
5 - Replaced
8 - Rejected
9 - Suspended
C - Expired

The supported combination of ExecType <150> and OrdStatus <39> is listed in the reference table below
103OrdRejReasonintNCode to identify the reason for order rejection.
378ExecRestatementintNCode to identify reason for an ExecutionRpt <8> message sent with ExecType <150> is Restated <D>.

Valid values:
8 - Market (Exchange) Option
99 - Other
382NoContraBrokersintNNumber of repeating groups of contra brokers
> > 375ContraBrokerstringNCan be used to provide additional trade into by executing system. Required if NoContraBroker <382> is > 0.
1AccountstringYThe Exchange user uuid which is the same as the one specify in Logon <A> message Username <553> field.
660AcctIDSourceintYUses to identify the source of the Account <1> code. Valid value:

99 - Other (custom or proprietary).
63SettleTypeintYIndicates order settlement period. Valid value:

0 - Regular
55SymbolstringYCurrency-pair.
54SideintYSide of order. Valid values:

1 - Buy
2 - Sell
31LastPxfloatCThe price of this trade. Required if ExecType = TRADE (150=F)
32LastQtyfloatCThe quantity bought / sold on this trade. Required if ExecType = TRADE (150=F)
854QtyTypeintYType of quantity. Valid values:
0 - Units (currency)
38OrderQtyfloatYQuantity to trade.
40OrdTypeintYOrder type. Valid values:

1 = Market
2 = Limit
59TimeInForceintNSpecifies how long the order remains in effect. Valid values:

1 - Good Till Cancel (GTC)
3 - Immediate or Cancel (IOC)
4 - Fill or Kill (FOK)
6 - Good Till Day (GTD)

NOTE: Exchange will convert to Day automatically if invalid value detected. For market orders TimeInForce will be ignored.
126ExpireTimetimestampCThe time of order expiration (UTC). Required if TimeInForce is GTD (59=6) and ExpireDate <432> is not present in the message. The order will expire on ExpireTime of the same day the order is entered.
432ExpireDatetimestampCThe date of order expiration (local market date, in UTC time). Required if TimeInForce is GTD (59=6) and ExpireTime <126> is not present in the message. The order will expire after 23:59:59 UTC on ExpireDate .
423PriceTypeintCCode to represent the price type. Valid values:
2 = Per unit Populated if at least one of the price fields is present.
44PricefloatCPrice per unit of quantity (e.g. per 1 BTC coin). Required if present on the order.
1057AggressorIndicatorbooleanNUsed to identify whether the order initiator is an aggressor or not in the trade. Valid values:

Y - Order initiator is aggressor
N - Order initiator is passive
151LeavesQtyfloatYOutstanding quantity for further execution.
14CumQtyfloatYTotal quantity filled.
6AvgPxfloatYCalculated average price of all fills on this order.
75TradeDatestringNIndicates date of trade (UTC) referenced in YYYYMMDD format.
60TransactTimetimestampYTime of execution/order creation in UTC i.e. yyyyMMdd-hh:mm:ss:xxx
381GrossTradeAmtfloatNTotal amount traded (e.g. CumQty <14> x AvgPx <6>) expressed in units of currency.
119SettlCurrAmtfloatYTotal amount due expressed in settlement currency.
120SettlCurrencystringYCurrency code of settlement denomination. Valid values:

USD
USDT
155SettlCurrFxRatefloatNForeign exchange rate used to compute SettlCurrAmt <119> from Currency <15> to SettlCurrency <120>
156SettlCurrFxRateCalccharNSpecifies whether or not SettlCurrFxRate (155) should be multiplied or divided. Valid values:

M - Multiply
D - Divide
110MinQtyfloatNMinimum quantity of the order to be executed.
111MaxFloorfloatNMaximum quantity within the order to be shown on the exchange at any given time.
136NoMiscFeeintNNumber of repeating groups of miscellaneous fees.
137MiscFeeAmtfloatCMiscellaneous fee value. Required if NoMiscFees > 0 and must be the first field in this group.
138MiscFeeCurrstringNCurrency of miscellaneous fee. Valid values:

USD
USDT
139MiscFeeTypeintNIndicates type of miscellaneous fee. Valid value:

7 = Other
797CopyMsgIndicatorbooleanNIndicates whether or not this message is a drop copy of another message.
58TextstringYproviding supplemental information on the order.
Standard trailerY

Tag 150 & 39 tag combinations

Below is a table of the supported combination of ExecType <150> and OrdStatus <39>

ExecType <150>OrdStatus <39>Comments
0 = New0 = NewNew order placed
4 = Cancelled4 = CancelledOrder cancelled
5 = Replaced0 = New

1 = Partially filled

9 = Suspended

C = Expired
Order that had not received any fills is now replaced

Order was partially filled and then replaced

Order was amended to be suspended (e.g. at the beginning of cycle, GTC orders get suspended by the Exchange)

Order was amended to be expired (e.g. due to self trade)
8 = Rejected8 = Rejected Order rejected
9 = Suspended9 = Suspended When market moved from AUCTION to CONTINUOUS, the Exchange sends out the 2nd Ack for orders placed during AUCTION
C = ExpiredC = ExpiredOrder expired
D = Restated0 = New

1 = Partially filled
When market moved from AUCTION to CONTINUOUS, the Exchange sends out the 3rd Ack for orders placed during AUCTION to move it into active state

Order restated and was partially filled
F = Trade1 = Partially filled

2 = Filled
Execution received and order is partially filled

Execution received and order is fully filled