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.
↺ 447PartyIDSourcestringN

Identifies class or source of PartyID <448> Valid value:

D - Proprietary/Custom code

↺ 452PartyRoleintN

Identifies 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.
150ExecTypestringY

Describes 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

39OrdStatusstringY

Identifies 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.
378ExecRestatementintN

Code 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.
660AcctIDSourceintY

Uses to identify the source of the Account <1> code. Valid value:

99 - Other (custom or proprietary).

63SettleTypeintY

Indicates order settlement period. Valid value:

0 - Regular

55SymbolstringYCurrency-pair.
54SideintY

Side 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)
38OrderQtyfloatCQuantity to trade. Not required if OrdStatus = REJECTED (39=8)
40OrdTypeintY

Order type. Valid values:

1 = Market
2 = Limit

59TimeInForceintN

Specifies how long the order remains in effect. Valid values:
0 - Day
1 - Good Till Cancel (GTC)
3 - Immediate or Cancel (IOC)
4 - Fill or Kill (FOK)
6 - Good Till Day (GTD)

NOTES:
  • Exchange will convert to Day automatically if invalid value detected. For market orders, TimeInForce will be ignored.
  • A Day order will expire after 23:59:59 UTC of the same day it was posted on.
18ExecInststringN

The execution instruction flags for the order. Multiple values should be space delimited. Valid value:

6 - PostOnly

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).
successfully placed orders:Required if present on the order request.
rejected orders: not required
1057AggressorIndicatorbooleanN

Used to identify whether the order initiator is an aggressor or not in the trade. Valid values:

Y - Order initiator is aggressor (taker)
N - Order initiator is passive (maker)

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.
120SettlCurrencystringY

Currency code of settlement denomination. Valid values:

USD
USDT

155SettlCurrFxRatefloatNForeign exchange rate used to compute SettlCurrAmt <119> from Currency <15> to SettlCurrency <120>
156SettlCurrFxRateCalccharN

Specifies 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.
↺ 138MiscFeeCurrstringN

Currency of miscellaneous fee. Valid values:

USD
USDT

↺ 139MiscFeeTypeintN

Indicates 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 = Replaced

0 = 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 = RejectedOrder rejected
9 = Suspended9 = SuspendedWhen market moved from AUCTION to CONTINUOUS, the Exchange sends out the 2nd Ack for orders placed during AUCTION
C = ExpiredC = ExpiredOrder expired
D = Restated

0 = 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 = Trade

1 = Partially filled

2 = Filled

Execution received and order is partially filled

Execution received and order is fully filled