Overview

Welcome to Abaxx Exchange and Clearing API documentation page.

This document will provide you technical guidance in integrating your application to Abaxx Exchange and Clearing platform.

Version History

Version Date Comment
1.4 18 Apr 2024 Additional Contracts
1.3 22 Feb 2024 Update endpoints, Exchange timings
1.2 13 Dec 2023 Update Contract timings, FIX flow behavior
1.1 31 Oct 2023 Update Contract Specification
1.0 1 May 2023 First Version

Abaxx Exchange

Abaxx Exchange facilitates an efficient execution experience for members across the lifecycle of a trade. Market participants can expect:

Trading members can access Abaxx Exchange through our order management system (OMS), or via API through proprietary or ISV OMS solutions.

Order types based on price (i.e. Limit, Market) or time (i.e. Day, Good Till Cancel, Good Till Date) are matched by the trading system on a price-time priority basis, standardising and ensuring transparency to members on the matching criteria utilised.

Abaxx Clearing

Abaxx Clearing performs post-trade clearing, risk management and settlement services for Abaxx Exchange. By acting as the buyer to every seller and the seller to every buyer, the clearinghouse stands to mitigate counterparty credit risk and completes the full-service offering of Abaxx Exchange.

Contract Specifications

Following are the list of contracts for trading and its specfications.

For full list of tradable contracts, please refer to InstrumentStatus on orderBookDepth's qualifier for WebSocket or SecurityListRequest message type for FIX.

Product Name Gulf of Mexico (LNG) North Pacific Asia (LNG) North West Europe (LNG) JREDD+ Carbon Offset Unit Futures
Product Code GOM NPA NWE RD1
Product Type(s) Futures
(Outright, Spread & Strip)
Futures
(Outright, Spread & Strip)
Futures
(Outright, Spread & Strip)
Futures
(Outright, Spread & Strip)
Trading Hours (SGT) Pre-Open: 9:30
Open: 10:00
Close: 00:00 (Midnight)
Pre-Open: 9:30
Open: 10:00
Close: 00:00 (Midnight)
Pre-Open: 9:30
Open: 10:00
Close: 00:00 (Midnight)
Pre-Open: 9:30
Open: 10:00
Close: 00:00 (Midnight)
Contract Unit 10000 MMBtu 10000 MMBtu 10000 MMBtu 100 Ton
Quote Price USD & Cents / MMBtu USD & Cents / MMBtu USD & Cents / MMBtu USD & Cents / MMBtu
Quote Currency USD USD USD USD
Tick Size 0.01 0.01 0.01 0.01
Contract Months Monthly for 12 consecutive months Monthly for 12 consecutive months Monthly for 12 consecutive months Monthly for 12 consecutive months
Product Name Nickel Sulphate Singapore CORSIA Phase One
Product Code NSS CP1
Product Type(s) Futures
(Outright, Spread & Strip)
Futures
(Outright, Spread & Strip)
Trading Hours (SGT) Pre-Open: 9:30
Open: 10:00
Close: 00:00 (Midnight)
Pre-Open: 9:30
Open: 10:00
Close: 00:00 (Midnight)
Contract Unit 5 MT 100 tCO2e
Quote Price USD / MT USD / tCO2e
Quote Currency USD USD
Tick Size 1 0.01
Contract Months Monthly for 12 consecutive months Monthly for 12 consecutive months
Product Name Lithium Carbonate Singapore Lithium Carbonate Rotterdam Lithium Carbonate Baltimore
Product Code LCS LCR LCB
Product Type(s) Futures
(Outright, Spread & Strip)
Futures
(Outright, Spread & Strip)
Futures
(Outright, Spread & Strip)
Trading Hours (SGT) Pre-Open: 9:30
Open: 10:00
Close: 00:00 (Midnight)
Pre-Open: 9:30
Open: 10:00
Close: 00:00 (Midnight)
Pre-Open: 9:30
Open: 10:00
Close: 00:00 (Midnight)
Contract Unit 1 MT 1 MT 1 MT
Quote Price USD / MT USD / MT USD / MT
Quote Currency USD USD USD
Tick Size 1 1 1
Contract Months Monthly for 12 consecutive months Monthly for 12 consecutive months Monthly for 12 consecutive months

Exchange Timings

1. Trading Timings

All timings are on Singapore Timezone (SGT).
We encourage members to start connecting to our API by 8:30 SGT

Time Activity
09:30 Pre-open session
10:00 Market open
00:00 Market Close

2. Clearing and Settlement Timings

Time Activity
09:00 Clearing starts
09:00 Position management window starts
09:00 Collateral deposit window starts
10:30 Deadline to fulfill end of day margin call
11:30 Position reporting deadline
13:00 Collateral withdrawal window starts
16:00 Intraday clearing cycle
16:00 Collateral withdrawal window ends
17:00 Collateral deposit window ends
18:00 Deadline to fulfill intraday margin call
00:30 Position management window ends
02:30 Completion of end of day clearing cycle

Symbology

Outright

ProductCode + MaturityMonthCode + MaturityYear

i.e. RD1M23 for REDD+ 16-20 Carbon Future (Jun 2023)

Spread

ProductCode + MaturityMonthCodenear + MaturityYearnear + "/" + MaturityMonthCodefar + MaturityYearfar

i.e. GOMV23/X23 for Gulf of Mexico LNG Spread (Oct 2023 / Nov 2023)

Buy 1 GOMV23/X23 means:

Strip

ProductCode + MaturityMonthCodenear + MaturityYearnear + "-" + MaturityMonthCodefar + MaturityYearfar

i.e. NWEX23-H24 for NortWest Europe LNG Strip (Nov 2023 - Mar 2024)

Buy 1 NWEX23-H24 means:


MaturityYear should be in format YY (i.e. 23 for year 2023).

Futures Maturity Month Codes

Month MaturityMonthCode
January F
February G
March H
April J
May K
June M
July N
August Q
September U
October V
November X
December Z

OrderTypes and Validity

OrderType/TimeInForce Matrix

Type DAY GTC GTD FOK IOC GAA
Limit
Market
Stop
Stop Limit


Supported Order Types

OrderType Description
Limit Order is being sent with a specific price. A buy order will be executed with the requested price or lower price a sell order will be executed with the requested price or higher price.
Market Order is attempted filled at the best price in the market. Partial filled is allowed. In case not all the amount can be filled, the residual amount will be cancelled.
Stop A Stop Order is a Market Order that will remain Suspended (will not be entered into order book) until the stop price is reached. Once triggered, it will be treated similar to a regular Market Order.
Stop Limit A Stop Limit Order is a Limit Order that will remain Suspended (will not be entered into order book) until the stop price is reached. Once triggered, a Stop Limit Order will be treated as a regular Limit Order.


Supported Order Validity

TimeInForce Description
DAY Order will be automatically cancelled when trading day is closed.
GTC Good Till Cancel (resting on book till cancellation)
GTD Good Till Date (at given time (expiryDate) order will be automatically cancelled).
FOK Fill Or Kill (all or nothing)
IOC Immediate Or Cancelled (allows partial fills)
GAA Good At Auction can be captured only during auctions and will expire after auction in case it was not filled

API Availability Matrix

Type Trading Clearing
WebSocket
FIX
FIXML via AMQ
Secure File Transfer

Exchange

FIX Trading

The FIX API meant to serve clients with FIX integration knowledge and experience, if this is not the case, it is recommended you use which is easier to integrate.

Abaxx Exchange FIX gateway enables participants:

The interface is a point-to-point service based on the technology and industry standards TCP/IP, FIXT and FIX. The session and application event models and messages are based on versions FIXT1.1 and FIX5.0 (SP 2) respectively.

FIX Connection Details

Environment SocketConnectHost SocketConnectPort Description
UAT fix.uat.service.xabx.net 8443 Trading, Market Data & Reporting
PROD fix.service.abaxx.exchange 8443 Trading, Market Data & Reporting

FIX Onboarding

Step Env Action Responsible
1.a UAT Provide FIX session credentials assigned to member Abaxx
1.b Prod Provide public IP's CIDR range for IP whitelisting Member
1.c Prod Provide FIX session credentials (including SocketConnectHost and SocketConnectPort) assigned to member Abaxx
2 UAT Test credentials and start development and inform Abaxx when ready for conformance testing Member
3 UAT FIX conformance testing and sign-off Member / Abaxx
4 Prod Proceed on Step 1.b Member
5 Prod Test and conclude FIX connectivity is LIVE Member / Abaxx

Contact Us

For technical exchange related queries: [email protected]

For functional exchange related queries: [email protected]

Standard Headers and Trailers

Standard Headers Structure

Tag Name Required Description
8 BeginString Y FIXT.1.1 (Must be the 1st field in the message)
9 BodyLength Y (Must be the 2nd field in the message)
35 MsgType Y (Must be the 3rd field in the message)
49 SenderCompID Y Participant's CompID
56 TargetCompID Y Exchange' CompID
34 MsgSeqNum Y Sequence number
43 PossDupFlag N Indicates possible retransmission of message with this sequence number.

Supported values:
  • N = Original transmission
  • Y = Possible duplicate
52 SendingTime Y Time in UTC (microseconds)

Format: YYYYMMDD-hh:mm:ss.uuuuuu
122 OrigSendingTime N Required if PossDupFlag(43) is set to Y

Time the message was originally transmitted in UTC (microseconds)

Format: YYYYMMDD-hh:mm:ss.uuuuuu

Standard Trailer Structure

Tag Name Required Description
10 CheckSum Y FIX checksum calculated

Session Messages

Logon (A)

// Sample Logon Request

8=FIXT.1.1|9=199|35=A|34=1|49=FIRM|52=20230413-07:04:45.549606|56=ABAXX|553=USERNAME|554=PASSWORD|20037=Y|98=0|108=30|141=Y|1137=9|10=130|
// Sample Logon Response

8=FIXT.1.1|9=89|35=A|34=1|49=ABAXX|52=20230413-07:04:45.823352|56=FIRM|98=0|108=30|141=Y|1137=9|10=245|
Tag Name Required Description
98 EncryptMethod Y Supported values:
  • 0 = None / Other
  • 99 = Custom
108 HeartBtInt Y Always 108 = 30
553 Username Y Market participant's apiKey
554 Password Y
  • EncryptMethod(98) = 0 - use market participant's apiKey
  • EncryptMethod(98) = 99 - use digital signature
141 ResetSeqNumFlag N Supported values:
  • Y = Reset MsgSeqNum to 1
  • N = Do not reset MsgSeqNum
1137 DefaultApplVerID Y Always 1137 = 9 _(FIX50SP2)
20037 Custom field N Supported values:
  • Y = sending in the ER the information about the legs and the parent trades
  • N = sending in the ER the information only about the parent trades
  • If not sent, system will use N as default

Heartbeat (0)

// Sample Heartbeat message

8=FIXT.1.1|9=64|35=0|34=2|49=FIRM|52=20230413-08:08:17.710123|56=ABAXX|10=080|
Tag Name Required Description
112 TestReqID N Required when the heartbeat is the result of a TestRequest message.
ID of the TestRequest

TestRequest (1)

// Sample TestRequest message

8=FIXT.1.1|9=73|35=1|34=6|49=FIRM|52=20230413-08:09:52.868580|56=ABAXX|112=TEST|10=124|
// Sample response for TestRequest message

8=FIXT.1.1|9=73|35=0|34=6|49=ABAXX|52=20230413-08:09:52.899403|56=FIRM|112=TEST|10=121|
Tag Name Required Description
112 TestReqID N ID of the TestRequest

ResendRequest (2)

// Sample ResendRequest message

8=FIXT.1.1|9=75|35=2|34=33|49=FIRM|52=20230413-08:23:03.597499|56=ABAXX|7=20|16=0|10=073|
Tag Name Required Description
7 BeginSeqNo Y MsgSeqNum of first message in range to be resent
16 EndSeqNo Y MsgSeqNum of last message in range to be resent.

  • If the request is for partial resends it will contain the last missed message sequence number.
  • If request is for all messages subsequent to a particular message, EndSeqNo = 0 (representing infinity).

Reject (3)

// Sample Reject message

8=FIXT.1.1|9=113|35=5|34=3|49=FIRM|52=20230414-02:19:18.649517|56=ABAXX|58=MsgSeqNum too low, expecting 2 but received 1|10=040|
Tag Name Required Description
98 RefSeqNum Y MsgSeqNum of rejected message
58 Text N Error message
373 SessionRejectReason N Error Code as per FIX specifications
371 RefTagID N Reference TagId caused the rejection
372 RefMsgType N Reference MsgType of rejected message

SequenceReset (4)

// Sample SequenceReset message

8=FIXT.1.1|9=72|35=4|49=FIRM|56=ABAXX|34=448|52=20230414-02:21:20.868575|36=445|123=Y|10=097|
Tag Name Required Description
123 GapFillFlag N

Indicates that the SequenceReset message is replacing administrative or application messages which will not be resent.


Supported values:
  • N = SequenceReset - Ignore MsgSeqNum(34)
  • Y = Gap Fill Message - MsgSeqNum(34) is valid

Exchange sends out only Y as part of the ResendRequest flow.

In case client application will send message with N, Exchange will ignore the MsgSeqNum(34) and apply the NewSeqNo(36) as the new inbound sequence

Logout (5)

// Sample Logout Request

8=FIXT.1.1|9=91|35=5|34=6|49=ABAXX|52=20230414-02:22:16.569898|56=FIRM|58=Client initiated logout|10=013|
// Sample Logout Response

8=FIXT.1.1|9=64|35=5|34=7|49=FIRM|52=20230414-02:22:16.520312|56=ABAXX|10=079|
Tag Name Required Description
58 Text N Free text

Trading Messages


Supported Client Intitiated Messages

Message MsgType Usage
NewOrderSingle D Allows the MP to submit a new order
OrderCancelRequest F Allows the MP to cancel an active order
OrderCancelReplaceRequest G Allows the MP to modify an active order
OrderMassCancelRequest q Allows the MP to mass cancel all active orders for a specific instrument


Supported Exchange Intitiated Messages

Message MsgType Usage
ExecutionReport 8 Indicates the result of order command.
OrderMassCancelReport r Indicates the result of the mass cancel command.
OrderCancelReject 9 Indicates that an order cancel request or order cancel/replace request has been rejected.
BusinessMessageReject j Indicates that an application message could not be processed


Order Lifecycle Scenarios

Below scenarios summarize the trading actions that are support with the corresponded ExecutionReport.

Scenario ExecType(150) OrdStatus(39)
Order Rejected 8 (Rejected) 8 (Rejected)
Order accepted and order is fully resting on the book 0 (New) 0 (New)
Order accepted and order is fully executed immediately F (Trade) 2 (Filled)
Order accepted and order is partially executed immediately and the residual is resting on the book F (Trade) 1 (Partially filled)
Order accepted and order is partially executed immediately and the residual is cancelled (IOC) F (Trade) &
4 (Cancelled)
1 (Partially filled) &
4 (Canceled)
Order with immediate TIF (IOC, FOK) that failed to be executed 4 (Canceled) 4 (Canceled)
GTD order that has expired 4 (Canceled) 4 (Canceled)
Order cancelled 4 (Canceled) 4 (Canceled)
Order modified 5 (Replaced) 0 (New) or
1 (Partially filled)
Order replaced 4 (Canceled) & 5 (Replaced) 4 (Canceled) & 0 (New)
Order suspended (STP/STPLMT) 0 (New) 0 (New)
Order injected (STP/STPLMT) L (Triggered or activated by System) 0 (New)

NewOrderSingle (D)

// Sample NewOrderSingle message

8=FIXT.1.1|9=157|35=D|34=6|49=FIRM|52=20230417-06:35:50.551725|56=ABAXX|11=1681713329128057|38=5|40=2|44=3.6|54=1|55=GOMF24|59=1|453=1|448=CL00001|447=D|452=38|581=1|10=007|
Tag Name Required Description
11 ClOrdID Y Unique identifier for order
  • Unique per instrument
  • Growing integer value, MAX: 9223372036854775807
  • i.e., use epoch timestamp in nanoseconds to guarantee uniqueness over time
  • 55 Symbol Y Contract Code
    54 Side Y Supported values:
    • 1 = Buy
    • 2 = Sell
    38 OrderQty Y Quantity
    40 OrdType Y Supported values:
    • 1 = Market
    • 2 = Limit
    • 3 = Stop
    • 4 = Stop Limit
    44 Price N Order price. Required for limit orders
    99 StopPx N Stop price. Required for Stop & Stop Limit orders
    59 TimeInForce Y Supported values:
    • 0 = DAY
    • 1 = GTC
    • 3 = IOC
    • 4 = FOK
    • 6 = GTD
    • B = GFA(GAA)
    432 ExpireDate N Expiry time in seconds in UTC, required if TimeInForce = GTD and ExpireTime(126) is not specified.

    Format: YYYYMMDD
    126 ExpireTime N Expiry time in seconds in UTC, required if TimeInForce = GTD and ExpireDate(432) is not specified.

    Format: YYYYMMDD-hh:mm:ss
    581 AccountType Y Supported values:
    • 1 = Client
    • 3 = House
    Parties Component Block Y Party information related to the submitter of the request.
    110 MinQty N Minimum quantity of an IOC order to be executed.


    Parties Component Block

    Tag Name Required Description
    453 NoPartyIDs Y Number of parties.
    → 448 PartyID Y Identification of the party.
    → 447 PartyIDSource Y Used to identify the classification source.
    Supported values:
  • D = Proprietary/Custom code
  • → 452 PartyRole Y Identifies the type of PartyID(448).
    Mandatory values:
  • 38 = Position account
    Optional values:
  • Other = Value will be store and forward, only Position account(38) is required for booking trades

  • Account/Parties block example mapping

    Client Account House Account
    AccountType[581] = 1 (Client)
    NoPartyIDs[453] = 1
    PartyID[448] = < Client Account >
    PartyIDSource[447] = D (Proprietary)
    PartyRole[452] = 38 (Position account)
    AccountType[581] = 3 (House)
    NoPartyIDs[453] = 1
    PartyID[448] = < House Account >
    PartyIDSource[447] = D (Proprietary)
    PartyRole[452] = 38 (Position account)

    OrderCancelRequest (F)

    // Sample OrderCancelRequest message
    
    8=FIXT.1.1|9=114|35=F|34=7|49=FIRM|52=20230417-06:40:02.668041|56=ABAXX|11=1681713593666681|41=1681713552808524|55=GOMF24|10=163|
    
    Tag Name Required Description
    37 OrderID N Order Id to be cancelled

    Mandatory if OrigClOrdID was not specified
    41 OrigClOrdID N Original ClOrdID to be cancelled

    Mandatory if ClOrdID was not specified
    11 ClOrdID Y Unique ID of cancel request, numbers only
    55 Symbol Y Contract Code

    OrderCancelReplaceRequest (G)

    // Sample OrderCancelReplaceRequest message
    
    8=FIXT.1.1|9=105|35=G|34=3|49=FIRM|52=20230417-06:54:41.810225|56=ABAXX|11=1681714468232072|37=18|38=5|55=GOMF24|10=156|
    
    Tag Name Required Description
    37 OrderID Y Order Id to be cancelled
    Mandatory if OrigClOrdID was not specified
    11 ClOrdID Y Unique ID of cancel request, numbers only
    110 MinQty N Allowed only when 59(TIF)= 3(IOC)
    55 Symbol Y Contract Code
    54 Side Y Side must be equal to the side of original order.
    60 TransactTime Y Time this request was initiated/released by the trader or trading system.
    38 OrderQty Y New OrderQty must be less than the original OrderQty
    40 OrdType Y OrdType must be equal to the OrdType of original order.
    44 Price N New order Price
    Required If OrderQty >= LeavesQty of original order
    99 StopPx N New order Stop price
    Required for stop orders and stop limit orders
    59 TimeInForce N New order Time In Force
    Values same as New Order Single
    432 ExpireDate N Expiry Date
    Format: YYYYMMDD
    Required if TimeInForce = GTD and ExpireTime(126) is not specified.
    126 ExpireTime N New order Expiry time in seconds(UTC Time).
    Format: YYYYMMDD-hh:mm:ss
    Required if TimeInForce = GTD and ExpireDate(432) is not specified.

    OrderMassCancelRequest (q)

    // Sample OrderMassCancelRequest message
    
    8=FIXT.1.1|9=101|35=q|34=10|49=FIRM|52=20230417-06:57:45.588953|56=ABAXX|11=1681714584168715|55=GOMF24|530=1|10=046|
    
    Tag Name Required Description
    11 ClOrdID Y Unique ID of cancel request, numbers only
    55 Symbol Y Contract Code
    530 MassCancelRequestType Y 1 = Cancel orders for a security
    1461 NoTargetPartyIDs N Identifies the number of target parties identified in a mass action.
    → 1462 TargetPartyID N Required if NoTargetPartyIDs(1461) > 0.
    Used to identify the party targeted for the action specified in the message.
    → 1463 TargetPartyIDSource N Required if NoTargetPartyIDs(1461) > 0.
    Used to identify source of target party identifier.
    → 1464 TargetPartyRole N Required if NoTargetPartyIDs(1461) > 0.
    Used to identify the role of source party identifier.

    ExecutionReport (8)

    // Sample ExecutionReport (New) message
    
    8=FIXT.1.1|9=259|35=8|34=27|49=ABAXX|52=20230417-07:02:36.984844|56=FIRM|11=1681714928236006|14=0|17=27490|37=21|38=5|39=0|40=2|44=3.60|54=1|55=GOMF24|59=1|60=20230417-07:02:36.977804|150=0|151=5|453=2|448=CL00001|447=D|452=7|448=CL00001|447=D|452=7|581=1|10=000|
    
    // Sample ExecutionReport (Rejected) message
    
    8=FIXT.1.1|9=152|35=8|49=ABAXX|56=MP1|34=4|52=20230417-07:18:08.839269|17=27520|150=8|37=-1|11=1681715386652710|39=8|103=1011|54=1|14=0|151=0|58=Permission denied for this instrument|10=037|
    
    // Sample ExecutionReport (Trade) message*
    
    8=FIXT.1.1|9=280|35=8|34=6|49=ABAXX|52=20230417-07:10:10.115812|56=FIRM|11=1681715386652704|14=2|17=27509|31=4.50|32=2|37=2|38=2|39=2|40=1|54=2|55=RD1Z24|59=4|60=20230417-07:10:10.107444|75=20230417|150=F|151=0|453=2|448=CL00001|447=D|452=7|448=CL00001|447=D|452=7|581=1|880=1|10=147|
    
    // Sample ExecutionReport (Cancelled) message
    
    8=FIXT.1.1|9=279|35=8|34=18|49=ABAXX|52=20230417-07:14:44.047668|56=FIRM|11=1681715678264620|14=0|17=27518|37=4|38=10|39=4|40=2|41=1681715603111519|44=3.50|54=1|55=RD1Z24|59=1|60=20230417-07:14:44.042350|150=4|151=0|453=2|448=CL00001|447=D|452=7|448=CL00001|447=D|452=7|581=1|10=196|
    
    // Sample ExecutionReport (Replaced) message
    
    8=FIXT.1.1|9=280|35=8|34=21|49=ABAXX|52=20230417-07:16:11.384506|56=FIRM|11=1681715762541856|14=0|17=27520|37=5|38=10|39=0|40=2|41=1681715712522661|44=10.00|54=2|55=RD1Z24|59=1|60=20230417-07:16:11.376005|150=5|151=5|453=2|448=CL00001|447=D|452=7|448=CL00001|447=D|452=7|581=1|10=222|
    
    // Sample ExecutionReport (Order Status) message
    
    8=FIXT.1.1|9=292|35=8|34=2|49=ABAXX|52=20230417-07:44:01.110660|56=FIRM|11=1681715712522661|14=0|17=0|31=0|32=0|37=5|38=10|39=0|40=2|44=10.00|54=2|55=RD1Z24|59=1|60=20230417-07:16:11.376005|150=I|151=5|453=2|448=CL00001|447=D|452=7|448=CL00001|447=D|452=7|581=1|584=1681717439131833|912=Y|10=245|
    
    Tag Name Required Description
    37 OrderID Y Order Id. In case of rejection message will be -1
    41 OrigClOrdID N ClOrdID of the cancelled/modified order in case ExecType(150) is:
    • 4 = Canceled
    • 5 = Replaced
    11 ClOrdID N ClOrdID of the request message in case ExecType(150) is:
    • 4 = Canceled
    • 5 = Replaced
    • 8 = Rejected

    (In case request is done not from FIX GW it will not be returned)

    ClOrdID of the order in case ExecType(150) is:
    • 0 = New
    • F = Trade
    • I = Order Status
    17 ExecID Y Unique identifier of execution report
    • 0 = Case of OrderMassStatusRequest(AF) response
    880 TrdMatchID N Match Id - only in case ExecType = Trade
    150 ExecType Y Describes the purpose of the execution report:
    • 0 = New - When order added to the book
    • 4 = Canceled - When order canceled from book (also in case of GTD expired)
    • 5 = Replaced - when order was modified
    • 8 = Rejected - When request is rejected
    • F = Trade - When order was executed (Fully or partially)
    • C = Expired - When order is expired
    • L = Triggered or Activated by System - When a Stop/StopLimit order is triggered(injected) only in case order is fully being resting on the book
    • I = Order Status - When mass status requested
    39 OrdStatus Y Current order status (after this message):
    • 0 = New - For success new/ modified order that is fully resting on the book
    • 1 = PartiallyFilled - For partially executed order
    • 2 = Filled - For fully executed order
    • 4 = Canceled - For success cancel order , also in case of GTD expired
    • 8 = Rejected - For failure to place order
    636 WorkingIndicator N Applicable only when OrdStatus=0(New) and 1 of the below:
    • Order is suspended or
    • Order is triggered.(i.e. Stop/Stop Limit order) and and fully resting on the book
    Y = Order is triggered
    N = Order is suspended
    58 Text N In case of rejection, specifies the error message
    103 OrdRejReason N In case of rejection, specifies the exchange error code
    38 OrderQty N Order original quantity
    14 CumQty N Order total filled quantity
    151 LeavesQty N Remaining open quantity
    32 LastQty N Executed amount on current fill only
    31 LastPx N Executed price on current fill only
    55 Symbol N Contract code
    54 Side N Supported values:
    • 1 = Buy
    • 2 = Sell
    Note : On Rejected message will always be 1 (Buy)
    40 OrdType N Supported values:
    • 1 = Market
    • 2 = Limit
    • 3 = Stop
    • 4 = StopLimit
    44 Price N Order price
    59 TimeInForce N Supported values:
    • 1 = GTC
    • 3 = IOC
    • 4 = FOK
    • 6 = GTD
    • B = GFA(GAA)
    432 ExpireDate N Expiry Date
    Format: YYYYMMDD
    126 ExpireTime N Expiry time in UTC

    Format: YYYYMMDD-hh:mm:ss
    581 AccountType N Supported values:
    • 1 = Client
    • 3 = House
    Parties Component Block N Party information related to the submitter of the request.
    912 LastRptRequested N Will be included only in case ExecType(150) = I (Order Status)
    Identify if this is the last record
    • Y = for the last record
    • N = for all the rest
    584 MassStatusReqID N Will be included only in case ExecType(150) = I (Order Status), from request
    110 MinQty N Minimum quantity of an order to be executed.
    442 MultiLegReportingType N Will be shown for strategy trades only if in LOGON(A) → 20037 = Y
    1 - Single security - not strategy trade
    2 - Individual leg of a multi-leg security
    3 - Multi-leg security - the parent trade of multi-leg security
    820 TradeLinkID N Only if in LOGON(A) → 20037 = Y
    Only when MultiLegReportingType(442) = 2, will show
    Parent trade ID (multiLegStrategyTradeId in WS API)
    (this can be associated with strategy ExecutionReport TrdMatchID (880) of the parent)
    1647 NoRelatedInstruments N Only if in LOGON(A) → 20037 = Y
    Only when MultiLegReportingType(442) = 2, shows number of related instruments
    Will always be 1
    1648 RelatedInstrumentType N Required if NoRelatedInstruments > 0
    The type of instrument relationship
    99 (Custom: Multi-leg security)
    1649 RelatedSymbol N Required if NoRelatedInstruments > 0
    Parent Symbol (This is required in order to know explicitly which strategy trade is the parent trade).
    1650 RelatedSecurityID N Required if NoRelatedInstruments > 0 Parent instrumentId
    1651 RelatedSecurityIDSource N Required if NoRelatedInstruments > 0
    Identifies class or source of the RelatedSecurityID (1650) value.
    99 (Custom)

    OrderMassCancelReport (r)

    // Sample OrderMassCancelReport (Accepted) message
    
    8=FIXT.1.1|9=105|35=r|49=ABAXX|56=FIRM|34=26|52=20230208-12:59:24.189454|11=1675861165216|530=1|531=1|533=1|1369=41489|10=221|
    
    // Sample OrderMassCancelReport (Rejected) message
    
    8=FIXT.1.1|9=136|35=r|49=ABAXX|56=FIRM|34=19|52=20230208-12:56:07.210122|11=1675860968239|530=1|531=0|532=1010|58=Instrument FIX not found|1369=41488|10=255|
    
    Tag Name Required Description
    11 ClOrdID Y Unique ID of mass cancel request
    530 MassCancelRequestType Y 1 = Cancel orders for a security
    531 MassCancelResponse Y Supported values:
    • 0 = Cancel request rejected
    • 1 = Cancel request succeeded
    532 MassCancelRejectReason N In case of reject, specify the exchange error code
    533 TotalAffectedOrders N In case of success, number of orders affected from the mass cancel request
    1369 MassActionReportID Y Unique ID of mass cancel request
    1461 NoTargetPartyIDs N Should be populated with the values provided on the associated OrderMassCancelRequest(MsgType=Q). Repeating group below should contain unique combinations of
  • TargetPartyID
  • TargetPartyIDSource
  • TargetPartyRole.
  • → 1462 TargetPartyID N Should be populated with the values provided on the associated OrderMassCancelRequest(MsgType=Q).
    → 1463 TargetPartyIDSource N Should be populated with the values provided on the associated OrderMassCancelRequest(MsgType=Q).
    → 1464 TargetPartyRole N Should be populated with the values provided on the associated OrderMassCancelRequest(MsgType=Q).
    58 Text N In case of reject, specify the error message

    OrderCancelReject (9)

    // Sample OrderCancelReject message
    
    8=FIXT.1.1|9=139|35=3|34=6|49=FIRM|52=20230417-07:06:02.144455|56=ABAXX|45=4|58=Value is incorrect (out of range) for this tag|371=102|372=9|373=5|10=011|
    
    Tag Name Required Description
    11 ClOrdID Y Unique ID of cancel request
    37 OrderID Y orderId that was sent to be cancelled/modified. Always NONE
    39 OrdStatus Y 8 = Rejected
    102 CxlRejReason Y Specify the error code
    434 CxlRejResponseTo Y Original request is:
    • 1 = Order cancel request
    • 2 = Order cancel/replace request
    58 Text Y In case of reject, specify the error message

    BusinessMessageReject (j)

    // Sample BusinessMessageReject message
    
    8=FIXT.1.1|9=280|35=j|49=ABAXX|56=FIRM|34=2|52=20230417-06:57:45.642669|45=2|372=x|380=6|58=This apiKey doesn't have the right permission|10=127|
    
    Tag Name Required Description
    380 BusinessRejectReason Y Specify the error code per FIX specifications
    58 Text Y Specify the error message
    45 BusinessRejectReason Y Reference msgSeqNum
    372 RefMsgType Y The MsgType(35) of the FIX message being referenced

    Market Data Messages

    Supported Client Intitiated Messages

    Message MsgType Usage
    MarketDataRequest V Allows the client to request or manage subscriptions for market data for multiple instruments
    SecurityListRequest x Allows to request a list of instruments details that match the criteria provided
    SecurityStatusRequest e Allows to request the trading status of an instrument

    Supported Exchange Intitiated Messages

    Message MsgType Usage
    MarketDataSnapshotFullRefresh W Used to return a snapshot of market data
    MarketDataIncrementalRefresh X Used to return incremental market data updates
    MarketDataRequestReject Y Indicates that a Market Data Request has been rejected
    SecurityList y Used to return a list of instruments and their details
    SecurityStatus f Used to return trading status of an instrument
    // Sample MarketDataRequest (Ticker) message
    
    8=FIXT.1.1|9=131|35=V|34=49|49=FIRM|52=20230428-01:33:08.515829|56=ABAXX|262=54590554105700|263=1|264=1|265=0|267=2|269=0|269=1|146=1|55=GOMV23|10=236|
    
    // Sample MarketDataRequest (MBP) message
    
    8=FIXT.1.1|9=141|35=V|34=74|49=FIRM|52=20230428-01:45:15.168096|56=ABAXX|262=55317199903900|263=1|264=0|265=1|267=2|269=0|269=1|146=2|55=GOMV23|55=GOMX23|10=064|
    
    // Sample MarketDataRequest (MBOFD) message
    
    8=FIXT.1.1|9=141|35=V|34=96|49=FIRM|52=20230428-01:54:08.334367|56=ABAXX|262=55850356979400|263=1|264=0|265=1|267=2|269=0|269=1|146=2|55=GOMV23|55=GOMX23|10=071|
    
    // Sample MarketDataRequest (Time & Sales) message
    
    8=FIXT.1.1|9=126|35=V|34=114|49=FIRM|52=20230428-02:01:39.799175|56=ABAXX|262=56301814346100|263=1|264=5|265=1|267=1|269=2|146=1|55=GOMV23|10=015|
    
    // Sample MarketDataRequest (Imbalance) message
    
    8=FIXT.1.1|9=126|35=V|34=120|49=FIRM|52=20230428-02:04:20.178086|56=ABAXX|262=56462188023400|263=1|264=5|265=1|267=1|269=A|146=1|55=GOMV23|10=019|
    

    MarketDataRequest(V) / Response Messages

    Request Success Message Failure Message
    For Ticker subscription, use below parameters:
    • SubscriptionRequestType(263) = 0/1/2
    • MDUpdateType(265) = 0 (Full refresh)
    • MarketDepth(264) = 1 (Top of book)
    • MDEntryType(269) = 0 (bid), 1 (ask) Both bid and ask should be subscribed together.
    • Symbol(55)
    • Market Data Snapshot Full Refresh (W)
    • Market Data Request Reject (Y)
    • Business Message Reject (j)
    For Market by Price (MBP) subscription, use below parameters:
    • SubscriptionRequestType(263) = 0/1/2
    • MDUpdateType(265) = 0 (Full refresh)
    • MarketDepth(264) = 5/10/20/100
    • MDEntryType(269) = 0 (bid), 1 (ask) Both bid and ask should be subscribed together.
      Note: any other value can be sent and will be handled as a ticker
    • Symbol(55)
    • Market Data Snapshot Full Refresh (W)
    • Market Data Request Reject (Y)
    • Business Message Reject (j)
    For Market by Order Full Depth (MBOFD) subscription, use below parameters:
    • SubscriptionRequestType(263) = 0/1/2
    • MDUpdateType(265) = 1 (Incremental)
    • MarketDepth(264) = 0 (full book depth)
    • NoMDEntryTypes(267) = 2
    • MDEntryType(269) = 0 (bid), 1 (ask) Both bid and ask should be subscribed together.
    • Symbol(55)
    • Market Data Snapshot Full Refresh (W)
    • Market Data Incremental Refresh (X)
    • Market Data Request Reject (Y)
    • Business Message Reject (j)
    For Time & Sales subscription, use below parameters:
    • SubscriptionRequestType(263) = 1
    • MDUpdateType(265) = 1 (Incremental)
    • MarketDepth(264) = 0/1/5/10/20/100 (this field is ignored)
    • NoMDEntryTypes(267) = 1
    • MDEntryType(269) = 2 (Trade)
    • Symbol(55)
    • Market Data Incremental Refresh (X)
    • Market Data Request Reject (Y)
    • Business Message Reject (j)
    For Auction Indicative Equilibrium Price (Imbalance) subscription, use below parameters:
    • SubscriptionRequestType(263) = 1
    • MDUpdateType(265) = 1 (Incremental)
    • MarketDepth(264) = 0/1/5/10/20/100 (this field is ignored)
    • NoMDEntryTypes(267) = 1
    • MDEntryType(269) = A (Imbalance)
    • Symbol(55)
    • Market Data Incremental Refresh (X)
    • Market Data Request Reject (Y)
    • Business Message Reject (j)

    Messages related to auctions

    Market Data updates related to the auction are disseminated using MarketDataIncrementalRefresh(X) messages. A single update can have multiple entries with different MDEntryTypes as below. Check AuctionIndicativeEP to see more details explanation about auction indicative price.

    Condition MDEntryType entry
    when the book is empty MDEntryType(269)=J (Empty book)
    Best bid exist without IndicativePrice MDEntryType(269)=0 (Bid)
    Best offer exist without IndicativePrice MDEntryType(269)=1 (Offer)
    Best bid & offer exist without IndicativePrice MDEntryType(269)=0 (Bid)
    MDEntryType(269)=1 (Offer)
    When IndicativePrice exist MDEntryType(269)=Q (Auction clearing price)
    When imbalanceQuantity exist MDEntryType(269)=A (Imbalance)
    When IndicativePrice & imbalanceQuantity exist MDEntryType(269)=Q (Auction clearing price)
    MDEntryType(269)=A (Imbalance)

    MarketDataRequest (V)

    Tag Name Required Description
    262 MDReqID Y Unique ID for this request.
    263 SubscriptionRequestType Y Supported values:
    • 0 = Snapshot
    • 1 = Snapshot + Updates (Subscribe)
    • 2 = Disable previous Snapshot + Update Request (Unsubscribe)
    264 MarketDepth N Mandatory for SubscriptionRequestType(263) = 0 or 1

    Supported values:
    • 1 = Top of book
    • 5 = 5 levels
    • 10 = 10 levels
    • 20 = 20 levels
    • 100 = 100 levels
    265 MDUpdateType N Mandatory for SubscriptionRequestType(263) = 1

    Supported values:
    • 0 = Full refresh
    267 NoMDEntryTypes Y Mandatory for SubscriptionRequestType(263) = 0 or 1

    Number of MDEntryType(269) fields in the request.
    269 MDEntryType Y Mandatory for SubscriptionRequestType(263) = 0 or 1
    Type of market data to request.

    Supported values:
    • 0 = Bid
    • 1 = Ask
    • 2 = Trade
    • B = Trade volume
    • 4 = Opening price
    • 5 = Closing price
    • 6 = Settlement price
    • 7 = Trading session high price
    • 8 = Trading session Low price
    • A = Imbalance
    146 NoRelatedSym Y Specifies the number of repeating instruments
    55 Symbol Y Contract Code. Mandatory for SubscriptionRequestType(263) = 0 or 1

    MarketDataRequestReject (Y)

    // Sample MarketDataRequestReject message
    
    8=FIXT.1.1|9=106|35=Y|49=ABAXX|56=FIRM|34=120|52=20230428-02:05:41.047380|262=56542915163100|281=0|58=Wrong Symbol(55)|10=126|
    
    Tag Name Required Description
    262 MDReqID Y Unique ID for this request.
    58 text N Reason for the rejection
    281 MDReqRejReason N Reason for the rejection of a Market Data request.

    Supported values:
    • 0 = Unknown symbol
    • 1 = Duplicate MDReqID
    • 4 = Unsupported SubscriptionRequestType
    • 5 = Unsupported MarketDepth
    • 6 = Unsupported MDUpdateType
    • 8 = Unsupported MDEntryType

    MarketDataSnapshotFullRefresh (W)

    // Sample MarketDataSnapshotFullRefresh (Ticker) message
    
    8=FIXT.1.1|9=180|35=W|49=ABAXX|56=FIRM|34=949|52=20230428-07:03:33.435774|262=74414813390500|55=GOMV23|48=375|22=99|779=20230428-07:03:00.090000|268=2|269=0|270=2.9|271=5|269=1|270=2.91|271=10|10=081|
    
    // Sample MarketDataSnapshotFullRefresh (MBOFD) message
    
    8=FIXT.1.1|9=166|35=W|49=ABAXX|56=FIRM|34=957|52=20230428-07:06:22.874120|262=74584355985700|55=GOMV23|48=375|22=99|779=20230428-07:03:00.090438|268=1|269=1|270=2.91|271=10|37=60|10=242|
    8=FIXT.1.1|9=165|35=W|49=ABAXX|56=FIRM|34=958|52=20230428-07:06:22.874120|262=74584355985700|55=GOMV23|48=375|22=99|779=20230428-07:02:07.521267|268=1|269=0|270=2.90|271=5|37=59|10=209|
    
    // Sample MarketDataSnapshotFullRefresh (MBP) message
    
    8=FIXT.1.1|9=166|35=W|49=ABAXX|56=FIRM|34=962|52=20230428-07:08:16.986575|262=74698459716900|55=GOMV23|48=375|22=99|779=20230428-07:03:00.090438|268=1|269=1|270=2.91|271=10|37=60|10=010|
    8=FIXT.1.1|9=165|35=W|49=ABAXX|56=FIRM|34=963|52=20230428-07:08:16.986575|262=74698459716900|55=GOMV23|48=375|22=99|779=20230428-07:02:07.521267|268=1|269=0|270=2.90|271=5|37=59|10=|
    
    Tag Name Required Description
    262 MDReqID Y Unique ID for this request.
    55 Symbol Y Instrument symbol
    779 LastUpdateTime Y Timestamp of last update to data item

    Format : YYYYmmDD-hh:mm:ss.000000
    268 NoMDEntries Y Repeating group.
    Number of market data entries in the message
    → 269 MDEntryType Y Type of market data to request.

    Supported values:
    • 0 = Bid
    • 1 = Ask
    • 2 = Trade
    • B = Trade volume
    • 4 = Opening price
    • 5 = Closing price
    • 6 = Settlement price
    • 7 = Trading session high price
    • 8 = Trading session Low price
    • A = Imbalance
    → 270 MDEntryPx N Price of the instrument associated with this entry.
    → 271 MDEntrySize N Quantity associated with the related entry.

    Supported values:
    • 0 = Bid
    • 1 = Ask
    • 2 = Trade
    • B = Trade volume
    → 1023 MDPriceLevel N Relevant only for bid and ask (MBP)
    Integer to convey the level of a bid or offer at a given price level.
    → 48 SecurityID Y In case the symbol is changed after subscription, the permanent instrument identifier can be identified using this field.
    →22 SecurityIDSource Y Identifies the class or source of the SecurityID(48)

    Always 99 = Custom
    → 278 MDEntryID N Relevant only for bid and ask - MBOFD
    Market data entry id
    → 346 NumberOfOrders N Relevant only for bid and ask - MBP
    In an Aggregated Book, used to show how many individual orders make up an MDEntry
    20029 XXX N If the MDEntryType(269) = 0 (bid) & 1 (ask) for MBOFD & NEW for Ticker :
    Indicates whether this message is the last in a sequence of messages on the current snapshot
  • N = Not Last Message
  • Y = Last Message (of the snapshot)
  • MarketDataIncrementalRefresh (X)

    // Sample MarketDataIncrementalRefresh (MBOFD) message
    
    8=FIXT.1.1|9=175|35=X|49=ABAXX|56=FIRM|34=987|52=20230428-07:14:06.603222|262=74985101307200|268=1|279=0|55=GOMV23|48=375|22=99|37=61|269=0|270=2.85|271=5|272=20230428|273=07:14:06.592104|10=102|
    
    // Sample MarketDataIncrementalRefresh (Time & Sales) message
    
    8=FIXT.1.1|9=177|35=X|49=ABAXX|56=FIRM|34=1000|52=20230428-07:16:53.088518|262=74988467297000|268=1|279=0|269=2|55=GOMV23|48=375|22=99|270=2.91|271=5|272=20230428|273=07:16:53.075459|2446=1|10=232|
    
    Tag Name Required Description
    262 MDReqID Y Unique ID from the incoming request ID.
    268 NoMDEntries Y Repeating group.

    Number of market data entries in the message
    →279 MDUpdateAction Y Specifies the type of market data update.

    MBOFD : MDEntryType(269) = 0 (bid) & 1 (ask):

    Supported values:
    • 0 = New: When order is added
    • 1 = Change: When order is modified or resting order partially executed
    • 2 = Delete: When order is canceled or resting order fully executed
    i.e.
    • OrderID 1 Buy 100 @1.3 Placed → 0 (New) event sent for OrderID 1
    • OrderID 2 Sell 70 @1.3 Placed → 1 (Change) event sent for OrderID 1 (amount = 30)

    Time & Sales : MDEntryType(269) = 2 (trade):
    Supported values:
    • 0 = New: When trade happen
    Auction Imbalance : MDEntryType(269) = A (Imbalance):
    Supported values:
    • 0 = New: When an auction imbalance is sent
    Auction Indicative Equilibrium Price : MDEntryType(269) = Q (AuctionClearingPrice):
    Supported values:
    • 0 = New: When an equilibrium price is sent
    Best Bid/Ask during an auction when there is no Equilibrium Price : MDEntryType(269) = 0 (bid)/1 (ask) AND QuoteCondition(276)=Z(Order Imbalance)** :
    Supported values:
    • 0 = New: When a best bid/ask is available
    Empty Order Book : MDEntryType(269) = J (Empty Book) :
    Supported values:
    • 0 = New: When the order book is empty
    →55 Symbol Y Instrument symbol
    →48 SecurityID Y Permanent instrument identifier, in case symbol is changed after subscription, you can identify the instrument using this field.
    →22 SecurityIDSource Y Identifies the class or source of the SecurityID(48)

    Always 99 = Custom
    →278 MDEntryID N If the MDEntryType(269) = 0 (bid) or 1 (ask)
    →269 MDEntryType Y Type of market data to request. Mandatory for SubscriptionRequestType(263) = 0 or 1
    Supported values:
    • 0 = Bid
    • 1 = Ask
    • 2 = Trade
    • A = Imbalance
    • Q = Auction Equilibrium Price (=Clearing Price)
    • J = Empty Book
    →270 MDEntryPx Y If MDEntryType(269) = 0 (bid) & 1 (ask) →
    Price of the order associated with this entry. Interpret the value based on the entry type.
    If MDEntryType(269) = 2 (Trade) → Price of the trade associated with this entry.
    If MDEntryType(269) = Q (AuctionClearingPrice) →
    AuctionIndicativeEP.IndicativePrice
    →271 MDEntrySize Y If MDEntryType(269) = 0 (bid) & 1 (ask) →
    Quantity of the order associated with this entry.
    If MDEntryType(269) = 2 (Trade) → Quantity of the trade associated with this entry.
    If MDEntryType(269) = A (Imbalance) → AuctionIndicativeEP.imbalanceQuantity
    If MDEntryType(269) = Q (AuctionClearingPrice) → AuctionIndicativeEP.pairedQuantity
    →272 MDEntryDate Y Date of Market Data Entry in UTC

    Format : YYYYMMDD
    →273 MDEntryTime Y Time of Market Data Entry in UTC (microseconds)

    Format : HH:MM:SS.ssssss
    →276 QuoteCondition N If the message is sent as a reply for an imbalance request AND [MDEntryType(269)= 0(Bid) OR 1(Ask)]:
    Supported values:
    • Z = Order Imbalance
    →277 TradeCondition N If the MDEntryType(269) = A (Imbalance):
    Supported values:
    • P = Imbalance More Buyers
    • Q = Imbalance More Sellers
    This field is not populated when AuctionIndicativeEP.imbalanceSide=None or NA
    →1023 MDPriceLevel N If the message is sent as a reply for an imbalance request AND [MDEntryType(269)= 0(Bid) OR 1(Ask)]:
    Value =1
    →1070 MDQuoteType N If MDEntryType(269) = A (Imbalance) OR Q (AuctionClearingPrice):
    Supported values:
    • 0 = Indicative
    →2446 AggressorSide N If MDEntryType(269) = 2 (Trade) → Indicates which side is the aggressor or if there is no aggressor

    Supported values:
    • 1 = Buy
    • 2 = Sell

    SecurityListRequest (x)

    // Sample SecurityListRequest message
    
    8=FIXT.1.1|9=98|35=x|34=35|49=FIRM|52=20230417-07:23:06.198497|56=ABAXX|263=1|320=1681716182728279|559=4|10=041|
    
    Tag Name Required Description
    320 SecurityReqID Y Unique ID for this request
    559 SecurityListRequestType Y
    Supported values:
    • 4 = All Securities (return all active contracts)
    263 SubscriptionRequestType N Supported values:
    • 0 = Snapshot (Default)
    • 1 = Snapshot + Updates (Subscribe)
    • 2 = Disable previous Snapshot + Update Request (Unsubscribe)

    SecurityList (y)

    // Sample SecurityList (SPOT Instrument) message
    
    8=FIXT.1.1|9=260|35=y|49=ABAXX|56=FIRM|34=40|52=20230417-07:23:06.276102|320=1681716182728279|560=0|893=N|146=1|55=GOM|48=344|22=99|965=1|2576=2|1148=0.01|1786=0|562=1|1140=10000|107=Market Level Instrument|167=SPOT|762=Commodities (T)|15=USD|207=XABX|20011=0|20026=J|10=018|
    
    // Sample SecurityList (OUTRIGHT Instrument) message
    
    8=FIXT.1.1|9=324|35=y|49=ABAXX|56=FIRM|34=47|52=20230417-07:23:06.277711|320=1681716182728279|560=0|893=N|146=1|55=RD1Z23|48=351|22=99|965=1|2576=2|1786=0|562=1|1140=10000|107=REDD+ 16-20 Dec 2023|167=FUT|762=Commodities futures (C)|15=USD|225=20230412|20010=03:00:00Z|541=20231129|1079=22:30:00Z|231=10000|1193=C|20011=0|20027=341|10=171|
    
    // Sample SecurityList (SPREAD Instrument) message
    
    8=FIXT.1.1|9=330|35=y|49=ABAXX|56=FIRM|34=267|52=20230417-07:23:06.339553|320=1681716182728279|560=0|893=N|146=1|55=NWEJ25/K25|48=572|22=99|965=1|2576=2|1786=0|562=1|1140=10000|107=NWE SPREAD J25 K25|167=MLEG|15=USD|225=20230412|20010=03:00:00Z|541=20250303|1079=22:30:00Z|231=10000|1193=C|20011=0|20027=342|555=2|602=414|566=3.5|602=416|10=045|
    
    // Sample SecurityList (STRIP Instrument) message
    
    8=FIXT.1.1|9=345|35=y|49=ABAXX|56=FIRM|34=179|52=20230417-07:23:06.315726|320=1681716182728279|560=0|893=N|146=1|55=NPAZ23-H24|48=484|22=99|965=1|2576=2|1786=0|562=1|1140=10000|107=NPA STRIPS Z23-H24|167=MLEG|15=USD|225=20230412|20010=03:00:00Z|541=20231101|1079=22:30:00Z|231=10000|1193=C|20011=0|20027=343|555=4|602=422|566=15|602=425|602=423|602=427|10=017|
    
    Tag Name Required Description
    320 SecurityReqID Y Unique Id for the Security Definition Request.
    560 SecurityRequestResult Y The results returned to a Security Request message

    Supported values:
    • 0 = Valid request
    • 1 = Invalid or unsupported request
    1607 SecurityRejectReason N Identifies the reason a security definition request is being rejected.

    Note: will be sent only when SecurityRequestResult(560) = 1
    893 LastFragment N Indicates whether this message is the last in a sequence of messages on the current snapshot

    Supported values:
    • N = Not Last Message
    • Y = Last Message (of the snapshot)

    Note: this field will return only from the snapshot (not for updates)
    146 NoRelatedSym Y Specifies the number of repeating symbols specified

    Note: In case there is no data and the request was valid, this field won't be returned
    → 55 Symbol Y Instrument Symbol
    → 48 SecurityID Y Permanent instrument identifier, in case symbol is changed after subscription, you can identify the instrument using this field.
    → 22 SecurityIDSource Y Identifies the class or source of the SecurityID(48)

    Always 99 = Custom
    → 107 SecurityDesc Y Description
    → 167 SecurityType N Instrument category

    Supported values:
    • FUT = Future
    • SPOT = Spot
    • MLEG = Multileg
    • (Other)
    → 762 SecuritySubType N The Sub-Catagory of the instrument

    Supported values:
    • Commodities (T)
    • Commodities futures (C)
    • Other (miscellaneous) (M)
    → 15 Currency Y Quote currency
    → 2576 InstrumentPricePrecision Y Price precision, number of decimals allowed in price field
    → 965 SecurityStatus Y Indicates the current state of the instrument.

    Supported values:
    • 1 = Active
    • 2 = Inactive (applicable only in case instrument was disabled after subscription)
    → 207 SecurityExchange N Market Identifier Code (MIC)

    Supported values:
    • XABX = Abaxx Exchange
    → 461 CFICode N Classification of Financial Instruments codes (CFI)
    → 541 MaturityDate N Trading is allowed up to this date.

    Format : YYYYMMDD
    → 1079 MaturityTime N Trading is allowed up to this time.

    Format : HH:MM:SSZ
    225 IssueDate N Trading is allowed from this time.

    Format : YYYYMMDD
    → 20010 Custom Tag N Trading is allowed from this time.

    Format : HH:MM:SSZ
    → 201 PutOrCall N In case SecurityType(167) = OPT
    Case subCategory :
  • 0 = Put options (P)
  • 1 = Call options (C)
  • 2 = Other (miscellaneous) (M)
  • → 231 ContractMultiplier N Contract size
    → 1193 SettlMethod N Settlement method for a contract or instrument.

    Supported values:
    • C = Cash settlement required
    • P = Physical settlement required
    • E = Election at exercise
    → 1194 ExerciseStyle N Type of exercise of a derivatives security.

    Supported values:
    • 0 = European
    • 1 = American
    • 2 = Bermuda
    • 99 = Other
    → 202 StrikePrice N Strike
    → 1148 LowLimitPrice N Min price
    → 1149 HighLimitPrice N Max price
    → 562 MinTradeVol Y The minimum order quantity
    → 1140 MaxTradeVol Y The maximum order quantity
    → 1786 TradeVolType Y Define the type of trade volume applicable for the MinTradeVol(562) and MaxTradeVol(1140)

    Supported values:
    • 0 = Number of units
    → 20011 Custom tag N Quantity Precision
    → 20012 Custom tag N Quantity Increment
    → 20013 Custom tag N Tick Min Price Percentage
    → 20014 Custom tag N Tick Max Price Percentage
    → 20015 Custom tag N Daily Min Price Percentage
    → 20016 Custom tag N Daily Max Price Percentage
    → 20017 Custom tag N Expiry Date Format is YYYY-MM-DD
    → 20018 Custom tag N Max Order Value
    → 20026 Custom tag N Underlying Assets
    The value will be the same as the value in UnderlyingAssets List
    Example: Category (Spot) & Sub Category (Commodities) → Agriculture (A)
    → 20027 Custom tag N Underlying Instrument Id
    → 555 NoLegs N Number of legs that make up the Security
    →→ 600 LegSymbol N The symbol of the leg
    →→ 602 LegSecurityID N Legs Instrument Id
    →→ 566 LegPrice N Leg 1 Reference Price
    → 20030 Custom tag N Number of tick size items in one entry in the tick table repeating group
    →→ 20031 Custom tag N Price range
    →→ 20032 Custom tag N Tick size
    → 40019 NoAdditionalTerms N Number of additional terms in the repeating group.
    →→ 40000 NoAdditionalTermBondRefs N Optional Number of bonds in the repeating group.
    →→→ 40013 AdditionalTermBondMaturityDate N MaturityDate
    format: YYYYMMDD
    →→→ 40012 AdditionalTermBondCouponRate N Coupon (NOTE: 0.05 represents 5% and 0.9525 represents 95.25%)
    →→→ 40016 AdditionalTermBondCouponFrequencyPeriod N Period of coupon
    →→→ 40017 AdditionalTermBondCouponFrequencyUnit N Time unit associated with the frequency of the bond's coupon payment.
    Mo = Month
    58 Text N In case of rejection, specifies the error message

    SecurityStatusRequest (e)

    // Sample SecurityStatusRequest message
    
    8=FIXT.1.1|9=101|35=e|34=2|49=FIRM|52=20230417-07:37:54.246186|56=ABAXX|55=GOMX23|263=0|324=1681717066260899|10=053|
    
    Tag Name Required Description
    324 SecurityStatusReqID Y Unique ID for this security request.
    55 Symbol Y Instrument symbol
    263 SubscriptionRequestType Y Subscription Request Type.

    Supported values:
    • 0 = Snapshot (Default)
    • 1 = Snapshot + Updates (Subscribe)
    • 2 = Disable previous Snapshot + Update Request (Unsubscribe)

    SecurityStatus (f)

    // Sample SecurityStatus message
    
    8=FIXT.1.1|9=103|35=f|34=2|49=ABAXX|52=20230417-07:37:54.318765|56=FIRM|55=GOMX23|324=1681717066260899|326=100|10=156|
    
    Tag Name Required Description
    324 SecurityStatusReqID Y Unique ID for this security request.
    55 Symbol Y Instrument symbol
    326 SubscriptionRequestType Y Represents a specific market status for security.

    Supported values:
    • 100 = Trading
    • 101 = Closed
    • 102 = Auction call
    • 103 = Auction crossing
    • 104 = Halted

    Drop Copy Messages

    There are 2 drop copy services provided by exchange:

    Execution Reports : To receive a real-time copy of each eligible Execution Report immediately after it is published.

    Trade Capture Reports : To receive information on the order book trades as well as trade entries along with notifications of any trade cancel. Trades are availble for the last day only, details of trades on previous trading days are not available here.

    Data Eligibility

    Drop copy can be published for single market participant (MP) or for group of MPs that are pre-configured by exchange operations team.

    MP name will always be added as additional party with the below parameters:

    Subscription

    Execution Reports : No need to subscribe, assuming the credentials provided by operations team include the right permission, the Execution Reports will start to be published once sessions is properly initiated.

    Trade Capture Reports : Explicit subscription is required, see below for more details, successful subscription will occur only if the appropriate permission was granted to connection credentials.

    Strategies / Multi Legs Handling

    There are 2 options for strategies trade reporting:

    On ExecutionReport(8) system sends only the fill of the strategy summary, while on TradeCaptureReport(AE) system allows subscriber to determine how to get the trades.

    For example: GOMV23/X23 for Gulf of Mexico LNG Spread (October 2023 / November 2023)

    ExecutionReport will include only GOMV23/X23 (without any value tag 442)

    On TradeCaptureReport subscriber has 2 options how to get the data:

    Option 1

    Using MultiLegReportingType(442) = 3 (Multi-leg security) on the TradeCaptureReportRequest(AD) Single trade report will be sent:

    Option 2

    Using MultiLegReportingType(442) = 2 (Individual leg of a multi-leg security) on the TradeCaptureReportRequest(AD) tow trade reports will be sent:

    Trade Report 1:

    Trade Report 2:

    Trade cancellation trade reports works exactly the same as trade report.

    Supported Client Intitiated Messages

    Message MsgType Usage
    Trade Capture Report Request AD Allows to request Trade Capture Reports from the server
    Order Mass Status Request AF Request the list of active orders, will response with ExecutionReports(MsgType=8)

    Supported Exchange Intitiated Messages

    Message MsgType Usage
    Trade Capture Report Request Ack AQ Acknowledges the receipt of a Trade Capture Report Request message from the client.
    Can indicates successful subscription or rejected one.
    Trade Capture Report AE Indicates one of the following:
    • Trade
    • Trade Cancellation
    Execution Report 8 Indicates one of the following:
    • Order added to the book
    • Order was executed (Fully or partially)
    • Order canceled from book (also in case of GTD expired)
    • Order was modified

    Trade Capture Report Request (AD) / Response Messages

    Success Message Failure Message No Result
    • Trade Capture Report Request Ack (AQ) (Accepted)
    • Trade Capture Report (AE)
    • Trade Capture Report Request Ack (AQ) (Rejected)
    • Trade Capture Report Request Ack (AQ) (Success)
    • Trade Capture Report Request Ack (AQ) (Rejected)

    Order Mass Status Request (AF) / Response Messages

    Success Message Failure Message No Result
    • Execution Reports (8)
    • Business Message Reject (j)
    • Reject (3)
    • Execution Reports (8) (Rejected status)

    OrderMassStatusRequest (AF)

    // Sample OrderMassStatusRequest message
    
    8=FIXT.1.1|9=92|35=AF|34=2|49=FIRM|52=20230417-07:44:00.883742|56=ABAXX|584=1681717439131833|585=7|10=237|
    
    Tag Name Required Description
    584 MassStatusReqID Y Order Mass Status Request ID
    585 MassStatusReqType Y Supported values:
    • 7 = Status for all orders (will return active orders only)

    TradeCaptureReportRequest (AD)

    // Sample TradeCaptureReportRequest message
    
    8=FIXT.1.1|9=104|35=AD|34=3|49=FIRM|52=20230417-08:08:18.905268|56=ABAXX|263=1|442=2|568=1681718890045931|569=0|10=051|
    
    Tag Name Required Description
    568 TradeRequestID Y Trade Capture Report Request ID
    569 TradeRequestType Y Supported values:
    • 0 = All Trades
    263 SubscriptionRequestType Y Supported values:
    • 0 = Snapshot
    • 1 = Snapshot + Updates (Subscribe)
    • 2 = Disable previous Snapshot + Update Request (Unsubscribe)
    442 MultiLegReportingType Y Determines how to publish strategy trades:

    Supported values:
  • 2 = Individual leg of a multi-leg security (default if not specified): Request outright trades and Individual legs of strategy trades
  • 3 = Multi-leg security: Request outright trades and strategy trades

  • TradeCaptureReportRequestAck (AQ)

    // Sample TradeCaptureReportRequestAck (Accepted) message
    
    8=FIXT.1.1|9=104|35=AQ|34=3|49=ABAXX|52=20230417-08:08:19.013092|56=FIRM|568=1681718890045931|569=0|749=0|750=0|10=059|
    
    // Sample TradeCaptureReportRequestAck (Rejected) message
    
    8=FIXT.1.1|9=95|35=AQ|49=ABAXX|56=FIRM|34=5|52=20230417-08:08:19.134739|568=1681718890045935|569=0|749=99|750=2|10=065|
    
    Tag Name Required Description
    568 TradeRequestID Y From request
    569 TradeRequestType Y From request
    749 TradeRequestResult Y Supported values:
    • 0 = Successful
    • 8 = TradeRequestType not supported
    • 9 = Not authorized (in case credentials doesn’t have the right permission)
    • 99 = Other (any other case)
    750 TradeRequestStatus Y Supported values:
    • 0 = Accepted (in case validations passed)
    • 2 = Rejected (in case of issue on the request or no results were found or problem was found during results publication)
    58 Text N Will be populated in case TradeRequestStatus = 2 (Rejected)


    TradeCaptureReport (AE)

    // Sample TradeCaptureReport - Single Leg (Order Book Trade) message
    
    20230417-08:08:19.129606000 : 8=FIXT.1.1|9=294|35=AE|49=ABAXX|56=FIRM|34=14|52=20230417-08:08:19.065011|568=1681718890045931|912=N|487=0|828=0|55=RD1Z24|32=2|31=4.50|75=20230417|60=20230417-07:10:10.107444|552=1|54=1|581=1|453=2|448=CL00001|447=D|452=7|448=CL00001|447=D|452=7|797=Y|570=N|1003=1|37=1|11=1681715342884328|10=027|
    
    // Sample TradeCaptureReport - Single Leg (Trade Cancellation) message
    
    8=FIXT.1.1|9=297|35=AE|49=ABAXX|56=MP1|34=216|52=20230209-08:18:51.753707|568=1675930324481|912=N|487=1|55=INS1|32=0.88|31=1.0|75=20230209|60=20230209-08:18:51.733963|552=1|54=1|453=3|448=123456|447=D|452=38|448=ABCD|447=D|452=12|448=FIRM|447=D|452=7|797=Y|570=N|1003=7|37=13|11=1675930396980|41=1675930396980|10=227|
    
    // Sample TradeCaptureReport - Single Leg (Trade Entry) message
    
    8=FIXT.1.1|9=245|35=AE|49=ABAXX|56=MP1|34=222|52=20230209-08:20:59.193384|568=1675930324481|912=N|487=0|828=2|55=INS1|32=10.00|31=100.0|75=20230209|60=20230209-08:20:59.169972|552=1|54=2|581=3|453=2|448=2|447=D|452=38|448=FIRM|447=D|452=7|797=Y|570=N|1003=8|10=132|
    
    // Sample TradeCaptureReport - Multi Leg (Single Security) message
    8=FIXT.1.1|9=303|35=AE|49=ABAXX|56=MP1|34=204|52=20230209-08:13:17.022751|568=1675930324481|912=N|487=0|828=0|55=INS1|32=0.88|31=1.0|75=20230209|60=20230209-08:13:16.996985|552=1|54=1|453=3|448=123456|447=D|452=38|448=ABCD|447=D|452=12|448=MP1|447=D|452=7|797=Y|570=N|1003=7|37=13|11=1675930396980|10=223|
    
    // Sample TradeCaptureReport - Multi Leg (Individual Leg) message
    8=FIXT.1.1|9=290|35=AE|49=ABAXX|56=mastergroup|34=6|52=20221115-15:13:05.331013|568=1668525185446|912=Y|487=0|828=2|55=Test1FMar23|32=10.0000|31=-1.500000|75=20221115|60=20221115-15:07:15.153740|552=1|54=2|581=1|453=2|448=33|447=D|452=38|448=Test1|447=D|452=7|797=Y|570=N|1003=1|442=2|824=2|1522=3.000000|10=223|
    
    Tag Name Required Description
    568 TradeRequestID Y From request
    912 LastRptRequested Y Indicates if this is the last record (applicable for snapshots only)
    487 TradeReportTransType Y Supported values:
    • 0 = New (execution or trade entry)
    • 1 = Cancel (Trade cancellation)
    828 TrdType Y Only when TradeReportTransType = 0

    Supported values:
    • 0 = Regular trade : For order book trades
    • 1 = Block trade : For trade entry where type = Block
    • 2 = EFP : For trade entry where type = EFRP
    • 99 = For trade entry where type = Other
    797 CopyMsgIndicator N Indicates drop copy, always Y
    570 PreviouslyReported Y Always N
    1003 TradeId Y Trade Id (Match Id)
    552 NoSides Y Always 1 (One Side)
    37 OrderID Y Order Id
    Changed Only when TrdType = 0 (Regular trade)
    For both TradeReportTransType 0(New) and 1(Cancel)
    11 ClOrdID N ClOrdID of the order
    Changed only when TrdType = 0 (Regular trade)
    For both TradeReportTransType 0(New) and 1(Cancel)
    32 LastQty N Trade amount
    31 LastPx N Trade price
    55 Symbol N Instrument symbol
    54 Side N Supported values:
    • 1 = Buy
    • 2 = Sell
    44 Price N Order price
    60 TransactTime Y Event timestamp in microseconds in UTC

    Format : YYYYmmDD-hh:mm:ss.000000
    75 TradeDate Y Format : YYYYMMDD
    581 AccountType N Supported values:
    • 1 = Client
    • 3 = House
    73 NoOrders N Only when MultiLegReportingType(442) = 2, Indicates number of orders to be combined. Will always be 2
    → 2887 RelatedOrderID N Only when NoOrders(73) > 0
    Identifier of a related order.
  • If RelatedOrderIDSource(2888) = 1 (Order identifier) → Parent orderId
  • If RelatedOrderIDSource(2888) = 2 (Client order identifier) → Parent ClOrderId (=mpOrderId)
  • → 2888 RelatedOrderIDSource N Only when NoOrders(73) > 0
    Describes the source of the identifier that RelatedOrderID(2887) represents.
  • 1 = Order identifier
  • 2 = Client order identifier
  • 1647 NoRelatedInstruments N Only when MultiLegReportingType(442) = 2, shows number of related instruments
    Will always be 1
    → 1648 RelatedInstrumentType N Only when NoRelatedInstruments(1647) > 0
    The type of instrument relationship
    99 (Custom: Multi-leg security)
    → 1649 RelatedSymbol N Only when NoRelatedInstruments(1647) > 0
    Parent Symbol
    → 1650 RelatedSecurityID N Only when NoRelatedInstruments(1647) > 0
    Parent instrumentId
    → 1651 RelatedSecurityIDSource N Only when NoRelatedInstruments(1647) > 0
    Identifies class or source of the RelatedSecurityID(1650) value.
    99 (Custom)
    <Parties> N This is party information related to the submitter of the request.
    442 MultiLegReportingType N Will be shown for strategy trades only - per request parameter
    824 tradeLegRefId N Only when MultiLegReportingType(442) = 2, will show leg index (leg1 → 1, leg2 → 2 etc)
    1522 multiLegDifferentialPrice N Only when MultiLegReportingType(442) = 2, will show parent trade price

    WebSocket Trading

    WebSocket allows Market Participants to place and interact with their orders in real-time.

    WebSocket Connection Details

    Environment Endpoint Description
    UAT wss://trade.uat.xabx.net Trading and Market Data
    UAT wss://report.uat.xabx.net Reporting

    WebSocket Onboarding

    Step Env Action Responsible
    1.a UAT Provide WebSocket credentials assigned to member Abaxx
    1.b Prod Provide public IP's CIDR range for IP whitelisting Member
    1.c Prod Provide WebSocket credentials (including SocketConnectHost and SocketConnectPort) assigned to member Abaxx
    2 UAT Test credentials and start development Member
    3 Prod Proceed on Step 1.b when ready for Prod setup Member
    4 Prod Test and conclude WebSocket connectivity is LIVE Member / Abaxx

    Contact Us

    For technical exchange related queries: [email protected]

    For functional exchange related queries: [email protected]

    Authentication

    Request Parameters

    // Request structure
    { 
    "q": <QUALIFIER>, 
    "sid": <STREAM_IDENTIFIER>, 
    "d": 
      { 
        <JSON_OBJECT>
      } 
    }
    
    Parameter Type Description
    q String Qualifier, contains the method for the specific API call.
    sid Int Stream Identifier, for each WebSocket connection this is a unique identifier for the API call. Please note that as long as the sid was not ended (other by exchange or by consumer) this can’t be used again on the same WebSocket connection.
    d JSON JSON Object, contain the request body

    Success Response

    // Sample SUCCESS response
    {
      "sig": 1,
      "q": "exchange.market/createSession",
      "sid": 1
    }
    

    The response will always include the q and sid parameters from request and a d parameter with the response body.

    // Sample additional response for short living stream
    {
      "sig": 1,
      "q": "exchange.market/createSession",
      "sid": 1
    }
    

    In case of short living stream (i.e. trading action), additional response will be sent upon stream closure with success, this message will include the q and sid parameters from request and sig:1.


    Failure Response

    // Sample FAILURE response
    {
      "sig": 2,
      "q": "exchange.market/createSession",
      "errorType": "401",
      "sid": 1,
      "d": {
        "errorCode": 6002,
        "errorMessage": "Missing fields: 'apiKey'"
      }
    }
    

    The response will always include the below parameters:

    Parameter Type Description
    sig Int signal will be equal to 2
    q String from request
    errorType Int internal error type that should be ignored
    sid Int from request
    d JSON data that contain errorCode and errorMessage. Those are the error code and message to consider.


    Stream Closure

    // Sample stream closure request
    {
      "sig": 3,
      "q": "exchange.market/orderBookDepth",
      "sid": 100
    }
    

    In order to close active stream need to send a message with sig:3 in addition to q and sid from request.

    sig Possible Values

    sig Description
    1 Stream closed with success
    2 Stream closed with failure
    3 Stream was closed due to consumer request

    createSession

    qualifier: exchange.market/createSession

    # Generating signature using HMAC SHA256
    message='"apiKey":"1234567abcdz","timestamp":"1558941516123"'
    secret='MySecretKey'
    signature=$(echo -n $message | openssl dgst -sha256 -hmac $secret)
    echo ${signature}
    
    # Sample output
    265cfbc40c22355d6c1ecc1f3a1e87e8c46954db9096a7bd6967241dd8bc65b6
    
    // Sample createSession request
    {
      "d": {
        "apiKey": "806df2ec-a2c6-46f3-98e5-1a24c86d664a",
        "timestamp": 1681176543781,
        "signature": "71f3a84b3a2a6af7ca0d2e73c9d839ebc50718d6f62be835acd482d7488010ce"
      },
      "q": "exchange.market/createSession",
      "sid": 1
    }
    
    // Sample createSession SUCCESS response
    {
      "q": "exchange.market/createSession",
      "sid": 1,
      "d": {}
    }
    
    // Sample createSession FAILURE response
    {
      "sig": 2,
      "q": "exchange.market/createSession",
      "errorType": "401",
      "sid": 1,
      "d": {
        "errorCode": 6003,
        "errorMessage": "Create session failed"
      }
    }
    

    The createSession API lets you authenticate to our exchange API. Prior to any exchange API call, you must create a valid session, this session remains active as long as WebSocket connection remains open.

    Request Parameters

    Parameter Type Description
    apiKey String Unique market participant API key provided by Exchange Operations Team
    timestamp Unix Timestamp Login timestamp in milliseconds, must be now in UTC
    signature String HMAC SHA256 signature computed using provided secret key and message body.

    Trading

    Trading qualifiers allows market participants to place new orders and interact with their orders in real time. This includes placing, modifying and cancelling an orders.

    placeOrder

    qualifier: v1/exchange.market/placeOrder

    // Sample placeOrder request
    {
      "q": "v1/exchange.market/placeOrder",
      "sid": 1681226362518,
      "d": {
        "orderType": "Limit",
        "side": "Buy",
        "quantity": 10,
        "price": 5.5,
        "instrument": "NPAJ23",
        "timeInForce": "GTC",
        "mpOrderId": 1681186131308,
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          }
        ],
        "accountType": "Client",
        "expiryDate": "1679297797"
      }
    }
    
    // Sample placeOrder SUCCESS response
    {
      "q": "v1/exchange.market/placeOrder",
      "sid": 1681226362518,
      "d": {
        "orderId": 1,
        "orderStatus": "Pending"
      }
    }
    
    // Sample placeOrder FAILURE response
    {
      "sig": 2,
      "q": "v1/exchange.market/placeOrder",
      "errorType": "500",
      "sid": 1,
      "d": {
        "errorCode": 1010,
        "errorMessage": "Instrument NPAJ22 not found"
      }
    }
    

    The placeOrder API lets market participants to place a new order into exchange.

    A valid order will receive a response with Pending status, which means that order was validated and accepted. The response contains the exchange orderId which should be stored and used for later status changes, notified via the orderBookDepth stream.

    Non-valid order will be responded with error message.

    In case that market participant system didn't get a response within the timeout schedule, the market participant should do the one of the below:

    mpOrderId is unique identifier and should not be used for more than a single order. Note that exchange might accept already used mpOrderId after predefined period but it is not recommended to use same mpOrderId twice.

    Refer to Supported Order Types and Validity for the list of OrderType and TimeInForce supported by the exchange.


    Request Parameters

    Parameter Type Description
    mpOrderId Long Unique market participant order ID
    orderType Enum
  • Limit
  • Market
  • side Enum
  • Buy
  • Sell
  • instrument String Instrument identifier
    quantity Decimal Order quantity
    price(Optional) Decimal For Limit order
    timeInForce(Optional) Enum For Limit order
    • GTC
    • GTD
    • FOK
    • IOC
    • GAA
    expiryDate UTC Time Required only for GTD orders - expiration date in epoch timestamp.

    i.e. 1682352000 = 2023-04-24 16:00:00 UTC

    Note: In case that trading is halted or market is closed at expiry date - the order will be cancelled (even that cancelOrder requests are not allowed).
    accountType Enum
  • Client
  • House
  • parties Object Array of party objects, see details below.

    Note: Max number of parties is 20


    Party Specification:

    Parameter Type Description
    id String Party ID (Max length = 20)
    source Char Party source
    role Int Party role


    Response

    Parameter Type Description
    orderId Long Exchange Order ID
    orderStatus String Order status: Pending

    canceOrder

    qualifier: v1/exchange.market/cancelOrder

    // Sample canceOrder request
    {
      "q":"v1/exchange.market/cancelOrder",
      "sid": 1,
      "d":{
        "orderId":1681226362518,
        "instrument": "NPAJ23"
      }
    }
    
    // Sample canceOrder SUCCESS response
    {
      "q":"v1/exchange.market/cancelOrder",
      "sid":1,
      "d":{
        "orderId":1681226362518
      }
    }
    
    // Sample canceOrder FAILURE response
    {
      "sig": 2,
      "q": "v1/exchange.market/cancelOrder",
      "errorType": "500",
      "sid": 1,
      "d": {
        "errorCode": 1100,
        "errorMessage": "Order not found for that instrument"
      }
    }
    

    The cancelOrder API is used to request that an order be cancelled. If you send a valid order to cancel, you should receive a response that confirms that order was cancelled. This means that remaining open quantity of the order was cancelled. Non-valid cancel order will be responded with the error message.


    Request Parameters

    Parameter Type Description
    orderId(Optional) Long Exchange Order ID. Not mandatory if mpOrderId was sent
    mpOrderId(Optional) Long Market participant order ID. Not mandatory if orderId was sent
    instrument String Instrument identifier


    Response

    Parameter Type Description
    orderId Long Exchange Order ID

    massCancel

    qualifier: v1/exchange.market/massCancel

    // Sample massCancel request
    {
      "q": "v1/exchange.market/massCancel",
      "sid": 1,
      "d": {
        "instrument": "NPAJ23"
      }
    }
    
    // Sample massCancel SUCCESS response
    {
      "q": "v1/exchange.market/massCancel",
      "sid": 1,
      "d": {
        "numberOfOrders": 5
      }
    }
    
    // Sample massCancel FAILURE response
    {
      "sig": 2,
      "q": "v1/exchange.market/massCancel",
      "errorType": "500",
      "sid": 1,
      "d": {
        "errorCode": 1010,
        "errorMessage": "Instrument NPAJ22 not found"
      }
    }
    

    The massCancel API is used to cancel all the active order for specific instrument for specific market participant. If you send a valid request, you should receive a response that confirms the number of orders that were cancelled. Non-valid cancel order will be responded with the error message.


    Request Parameters

    Parameter Type Description
    instrument String Instrument identifier


    Response

    Parameter Type Description
    numberOfOrders Int Number of orders that were cancelled

    modifyOrder

    qualifier: v1/exchange.market/modifyOrder

    // Sample modifyOrder request
    {
      "q":"v1/exchange.market/modifyOrder",
      "sid": 1,
      "d":{
        "orderId":1681186131308,
        "instrument": "NPAJ23",
        "quantity": 5
      }
    }
    
    // Sample modifyOrder SUCCESS response
    {
      "q":"v1/exchange.market/modifyOrder",
      "sid":1,
      "d":{
        "orderId":1681186131308
      }
    }
    
    // Sample modifyOrder FAILURE response
    {
      "sig": 2,
      "q": "v1/exchange.market/modifyOrder",
      "errorType": "500",
      "sid": 1,
      "d": {
        "errorCode": 1100,
        "errorMessage": "Order not found for that instrument"
      }
    }
    

    The modifyOrder API is used to reduce the order quantity without losing the time priority.

    If you send a valid order to modify, you should receive a response that confirms that order was modified. This means that remaining open quantity of the order was reduced.

    Non-valid modify order requests will be responded with the error message.

    Request Parameters

    Parameter Type Description
    orderId Long Exchange Order ID
    instrument String Instrument identifier
    quantity Decimal New order quantity


    Response

    Parameter Type Description
    orderId Long Exchange Order ID

    replaceOrder

    qualifier: v1/exchange.market/replaceOrder

    // Sample replaceOrder request
    {
    "q": "v1/exchange.market/replaceOrder",
    "sid": 1,
      "d": {
        "orderId": 1681186131308,
        "instrument": "NPAJ23",
        "quantity": 5,
        "price": 4.5
      }
    }
    
    // Sample replaceOrder SUCCESS response
    {
      "q": "v1/exchange.market/replaceOrder",
      "sid": 1,
      "d": {
        "originalOrderId": 1681186131308,
        "newOrderId": 1681186131321
      }
    }
    
    // Sample replaceOrder FAILURE response
    {
      "sig": 2,
      "q": "v1/exchange.market/replaceOrder",
      "errorType": "500",
      "sid": 1,
      "d": {
        "errorCode": 1100,
        "errorMessage": "Order not found for that instrument"
      }
    }
    

    The replaceOrder API is used to change a few of the order parameters in a single command for order which is resting on the book, this action will lose the time priority as it going to cancel the previous order and place a new one.

    A valid order replace request will receive a response that confirms that order was replaced.

    Non-valid replace order requests will be responded with the error message.


    Request Parameters

    Parameter Type Description
    orderId Long Exchange Order ID
    instrument String Instrument identifier
    quantity Decimal New order quantity
    price Decimal New order price
    timeInForce(Optional) eNum New order validity
    expiryDate(Optional) UTC Time Required for GTD order


    Response

    Parameter Type Description
    originalOrderId Long Exchange Order ID of the original order
    newOrderId Long

    Market Data

    Building Book State

    Using Raw Data

    In order to build book state that include all the orders since first order, need to consume all orderBookDepth events per instrument and apply it on the right sequence. Consumer has the option if to subscribe to the first event (in case that need to build book state from scratch) or to subscribe from the last consumed event (in case that some events were already processed).

    Using Snapshot

    In order to build current book state without all the orders but only the current resting orders, need to consume orderBookState stream the provides list of all the current resting orders. By using returned lastTrackingNumberto subscribe to orderBookDepth consumer can no catch the real time order book state.

    orderBookDepth

    qualifier: v2/exchange.market/orderBookDepth

    The orderBookDepth stream provides the full order book depth data. This stream is public and all consumers receive the messages simultaneously.

    It publish only raw data without any aggregation, hence in order to determine the current state of an order, the subscriber needs to maintain the updated order state as per all the messages for that order.

    Message types to get real time market data:

    Message type to get indicative prices during auctions:

    Exchange can configure this stream to be anonymous or pseudonymous (mpId is published but not any other market participant details).

    For anonymous configured streams all the mpId and mpOrderId data will not be published, except to the market participant that placed the order which will see only its own mpId and mpOrderId data.


    // Sample orderBookDepth subscription request
    {
      "q": "v1/exchange.market/orderBookDepth",
      "sid": 10,
      "d": {
          "trackingNumber": 100
      }
    }
    

    Request Parameters

    Parameter Type Description
    trackingNumber (Optional) Long Determines the starting point of stream.
    • 0 = Stream will start from first event ever
    • EMPTY = Stream will start from the next upcoming event
    • trackingNumber = Stream will start from the next event after the given trackingNumber


    Response

    // Sample orderBookDepth Add response
    {
      "q": "v1/exchange.market/orderBookDepth",
      "sid": 1681268326731734,
      "d": {
        "messageType": "Add",
        "eventTimestamp": 1681268421060890600,
        "instrument": "NPAF24",
        "eventId": 3,
        "trackingNumber": 11225792,
        "orderId": 2,
        "mpId": 23,
        "mpOrderId": 1681268421025,
        "side": "Buy",
        "quantity": 10,
        "price": 12
      }
    }
    

    Add Order Message

    Add Order Message indicates that a new order has been accepted by the exchange and was added to the book.

    Field Description
    eventId Sequence identifier per instrument for the event
    messageType Add
    eventTimestamp Event timestamp (in nanoseconds) in GMT
    instrument Instrument symbol
    orderId Exchange order ID
    mpId Market participant ID
    mpOrderId Market participant order ID
    side
  • Buy
  • Sell
  • quantity Order quantity
    price Order price
    trackingNumber Event tracking number


    // Sample orderBookDepth Executed response
    {
      "q": "v1/exchange.market/orderBookDepth",
      "sid": 1681268326731734,
      "d": {
        "messageType": "Executed",
        "eventTimestamp": 1681268567119683800,
        "instrument": "GOMH24",
        "eventId": 16,
        "trackingNumber": 11226240,
        "makerOrderId": 1,
        "takerMpId": 23,
        "takerMpOrderId": 1681268567078,
        "takerOrderId": 10,
        "matchId": 3,
        "executedQuantity": 5,
        "executedPrice": 5
      }
    }
    

    Order Executed Message

    Order Executed Message indicates that an order on the book is matched with a new coming order in whole or in part. It is possible to receive several Order Executed Messages for a single orderId.

    Field Description
    eventId Identifier for the event, unique per instrument
    messageType Executed
    eventTimestamp Event timestamp (in nanoseconds) in GMT
    instrument Instrument symbol
    makerMpId Resting order market participant ID
    makerMpOrderId Resting order market participant order ID
    makerOrderId Resting orderId
    takerMpId Aggressive order market participant ID
    takerMpOrderId Aggressive order market participant order ID
    takerOrderId Aggressive order ID
    matchId Unique ID for the match
    executedQuantity Matched quantity
    executedPrice Matched price (maker order price).
    trackingNumber Event tracking number


    // Sample orderBookDepth Cancelled response
    {
      "q": "v1/exchange.market/orderBookDepth",
      "sid": 1681268326731734,
      "d": {
        "messageType": "Cancelled",
        "eventTimestamp": 1681268656940196000,
        "instrument": "GOMH24",
        "eventId": 17,
        "trackingNumber": 11227008,
        "orderId": 11,
        "side": "Sell",
        "mpId": 23,
        "mpOrderId": 1681268656898,
        "cancelledQuantity": 5
      }
    }
    

    Order Cancel Message

    Order Cancel Message indicates that an order on the book is being cancelled. This message also sent in case of market order that was not fully filled.

    Field Description
    messageType Cancelled
    eventId Identifier for the event, unique per instrument
    eventTimestamp Event timestamp (in nanoseconds) in GMT
    instrument Instrument symbol
    side
  • Buy
  • Sell
  • orderId Exchange order ID
    mpId Market participant ID
    mpOrderId Market participant order ID
    cancelledQuantity Order cancelled quantity
    trackingNumber Event tracking number


    // Sample orderBookDepth Modified response
    {
      "q": "v1/exchange.market/orderBookDepth",
      "sid": 1681268326731734,
      "d": {
        "messageType": "Modified",
        "eventTimestamp": 1681269097197066000,
        "instrument": "GOMH24",
        "eventId": 19,
        "trackingNumber": 11228032,
        "mpId": 23,
        "mpOrderId": 1681268702940,
        "orderId": 12,
        "removedQuantity": 2,
        "newQuantity": 3
      }
    }
    

    Order Modify Message

    Order Modify Message indicates that an order on the book is being modified and order quantity was reduced.

    Field Description
    messageType Modified
    eventId Identifier for the event, unique per instrument
    eventTimestamp Event timestamp (in nanoseconds) in GMT
    instrument Instrument symbol
    orderId Exchange order ID
    mpId Market participant ID
    mpOrderId Market participant order ID
    removedQuantity Order quantity that was removed
    newQuantity Remaining open quantity
    trackingNumber Event tracking number


    // Sample orderBookDepth InstrumentStatus response
    {
      "q": "v2/exchange.market/orderBookState",
      "sid": 1681263197035879,
      "d": {
        "messageType": "InstrumentStatus",
        "instrument": "NPAN24",
        "tradingStatus": "TRADE",
        "marketStatus": "Closed",
        "status": "ACTIVE"
      }
    }
    

    Instrument Status Message

    Instrument Status Message indicates that instrument status was changed. This message specify only the data that was actually changed, to get the snapshot of current instruments status you should use orderBookState.

    Note: when creating new instrument the first message will contain tradingStatus and status, those will be followed with separate event for marketStatus

    Field Description
    messageType InstrumentStatus
    eventTimestamp Event timestamp (in nanoseconds) in GMT
    instrument Instrument symbol
    tradingStatus
  • Trade
  • Halt
  • marketStatus
  • Opened
  • Closed
  • AuctionCall
  • AuctionCrossing
  • status
  • Active
  • Disabled
  • trackingNumber Event tracking number


    // Sample orderBookDepth AuctionIndicativeEP response
    {
      "q": "v1/exchange.market/orderBookDepth",
      "sid": 1681268326731734,
      "d": {
        "messageType": "AuctionIndicativeEP",
        "eventTimestamp": 1681268340023232300,
        "instrument": "GOMF25",
        "eventId": 453,
        "indicativePrice": 0,
        "pairedQuantity": 0,
        "imbalanceQuantity": 0,
        "imbalanceSide": "NA",
        "bestBuyPrice": 0,
        "bestBuyQuantity": 0,
        "bestSellPrice": 0,
        "bestSellQuantity": 0
      }
    }
    

    Auction Indicative Equilibrium Price Message

    Auction Indicative Equilibrium Price Message publish the indicative equilibrium price during an auction.

    This message is sent only on real time during auctions and will not be sent if subscribing after the auction.

    Field Description
    eventId Sequence identifier per instrument for the event
    messageType AuctionIndicativeEP
    eventTimestamp Event timestamp (in nanoseconds) in GMT
    instrument Instrument symbol
    IndicativePrice The indicative price upon which the paired shares and the imbalance quantity are based
    pairedQuantity The quantity to be matched at the current indicative price
    imbalanceQuantity The absolute value of quantity that would remain unexecuted at the current indicative price.
    imbalanceSide
  • Buy (Buy side imbalance)
  • Sell (Sell side imbalance)
  • None (No imbalanc)
  • NA (no indicative price)
  • bestBuyPrice In case of No match - the highest buy order price
    bestBuyQuantity In case of No match - the highest buy order quantity
    bestSellPrice In case of No match - the lowest sell order price
    bestSellQuantity In case of No match - the lowest sell order quantity


    // Sample orderBookDepth TradeReport response
    {
      "q": "v1/exchange.market/orderBookDepth",
      "sid": 10,
      "d": {
        "eventId": 29969,
        "messageType": "TradeReport",
        "tradeType": "Block",
        "matchId": 12345,
        "eventTimestamp": 1681269268498009564,
        "instrument": "GOMF25",
        "buyMpId": "12",
        "sellMpId": "13",
        "quantity": 1,
        "price": 1.22,
        "trackingNumber": 100
      }
    }
    
    // Sample orderBookDepth TradeCancel response
    {
      "q": "v1/exchange.market/orderBookDepth",
      "sid": 10,
      "d": {
        "eventId": 29969,
        "messageType": "TradeCancel",
        "matchId": 12345,
        "eventTimestamp": 1681269282838226493,
        "instrument": "GOMF25",
        "buyMpId": "12",
        "sellMpId": "13",
        "quantity": 1,
        "price": 1.22,
        "trackingNumber": 100
      }
    }
    

    Trade Report Message

    Trade report Message indicates that Trade Entry️ was captured, it means that trade was done between market participants out of the order book.

    Field Description
    messageType TradeReport
    eventId Identifier for the event, unique per instrument
    eventTimestamp Event timestamp (in nanoseconds) in GMT
    instrument Instrument symbol
    tradeType
  • EFRP
  • Block
  • Other
  • matchId Trade Id
    This will use the same sequence as order book trade
    quantity Trade quantity
    price Trade price
    buyMpId Buy MP Id
    sellMpId Sell MP Id
    trackingNumber Event tracking number

    orderBookState

    qualifier: v2/exchange.market/orderBookState

    This stream provides close to real time snapshot of order book state for all traded instruments.

    The result are the list of:

    Each orderBookStatestream will be closed with lastTrackingNumber, the trackingNumberof the last event used as part of returned book state, this can be used as input in orderBookDepthto be able start consume from that point.


    Request Parameters

    // Sample orderBookState Subscription request
    {
      "q": "v2/exchange.market/orderBookState",
      "sid": 100,
      "d": {}
    }
    
    // Sample orderBookState Resting Orders response
    {
      "q": "v2/exchange.market/orderBookState",
      "sid": 100,
      "d": {
        "messageType": "Order",
        "orderId": 18,
        "side": "Buy",
        "instrument": "GOMM23",
        "quantity": 30,
        "price": 3
      }
    }
    
    // Sample orderBookState Instrument Status response
    {
      "q": "v2/exchange.market/orderBookState",
      "sid": 100,
      "d": {
        "messageType": "InstrumentStatus",
        "instrument": "NPAM24",
        "tradingStatus": "Trade",
        "marketStatus": "Opened",
        "status": "Active"
      }
    }
    
    // Sample orderBookState lastTrackingNumber response
    {
      "q": "v2/exchange.market/orderBookState",
      "sid": 100,
      "d": {
        "lastTrackingNumber": 7275136
      }
    }
    

    Note: There are no request parameters.


    Response

    Order Message

    Parameter Type Description
    messageType String Order
    orderId Long Exchange Order ID
    side String
  • Buy
  • Sell
  • instrument String Instrument identifier
    quantity Decimal Order quantity
    price Decimal Order price


    Instrument Status Message

    Parameter Description
    messageType InstrumentStatus
    instrument Instrument symbol
    tradingStatus
  • Trade
  • Halt
  • marketStatus
  • Opened
  • Closed
  • AuctionCall
  • AuctionCrossing
  • status
  • Active
  • Disabled
  • Private Data

    Private data API enables market participants to receive additional copies of the trading activity. This interface may also be used by participants to download the current status of all their active orders.

    Data Eligibility

    Private data API can be consumed for single market participant (MP) or for group of MPs that are pre-configured by exchange operations team.

    Note: Empty field will not be included in the message

    massOrderStatus

    qualifier: v1/exchange.market/massOrderStatus

    Any participant can use the massOrderStatus API to retrieve the current status of all its own active orders.


    Request Parameters

    // Sample massOrderStatus request
    {
      "q": "v1/exchange.market/massOrderStatus",
      "sid": 100,
      "d": {}
    }
    
    // Sample massOrderStatus Active Order response
    {
      "q": "v1/exchange.market/massOrderStatus",
      "sid": 1681197290602437,
      "d": {
        "messageType": "OrderStatus",
        "orderId": 1,
        "mpOrderId": 1681197283673,
        "orderType": "Limit",
        "side": "Buy",
        "instrument": "NPAM24",
        "quantity": 10,
        "price": 5,
        "timeInForce": "GTC",
        "orderTimestamp": 1681197283699801000,
        "filledQuantity": 0,
        "remainingOpenQuantity": 10,
        "removedQuantity": 0,
        "filledPrice": 0,
        "marketModel": "T",
        "accountType": "Client",
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          }
        ],
        "lastEventTimestamp": 1681197283699801000,
        "lastEventId": 2,
        "mpId": 23,
        "mpName": "MP00001"
      }
    }
    
    // Sample massOrderStatus lastTrackingNumber response
    {
      "q": "v1/exchange.market/massOrderStatus",
      "sid": 1681197290602437,
      "d": {
        "lastTrackingNumber": 7280352
      }
    }
    

    Note: There are no request parameters.


    Response

    orderMassStatus response provides close to real time list of all current active orders with the entire details of those orders.

    Each orderMassStatusresponse response includes includeslastTrackingNumber, the trackingNumberof the last event used to generate the orders list, this can be used as input in executionReports to be able start consume events from that point.

    Field Description
    messageType OrderStatus
    orderId Exchange order ID
    mpOrderId Same as in placeOrder request
    orderType Same as in placeOrder request
    side Same as in placeOrder request
    instrument Same as in placeOrder request
    quantity Same as in placeOrder request
    price Same as in placeOrder request
    timeInForce Same as in placeOrder request
    expiryDate Same as in placeOrder request
    orderTimestamp Order creation timestamp (in nanoseconds) in GMT
    marketModel
  • A (Auction) when order was placed during auction
  • T (Trading) when order was placed on continues trading mode
  • RA (Resume Auction) when order was placed during auction after halt or autoHalt
  • parties Same as in placeOrder request
    accountType Same as in placeOrder request
    filledQuantity Total filled quantity
    filledPrice Weighted average filled price for all fills on that order

    Sum(event.executedQuantity∗event.executedPrice) / Sum(event.executedQuantity)
    remainingOpenQuantity Remaining open quantity.

    quantity − filledQuantity − removedQuantity
    removedQuantity Quantity that was removed with modifyOrder request
    lastEventTimestamp Last order event timestamp (in nanoseconds) in GMT
    lastEventId Last event that was used to calculate order state
    mpId MP Id
    mpName MP name

    executionReports

    qualifier: v1/exchange.market/executionReports

    // Sample executionReports request
    {
      "q": "v1/exchange.market/executionReports",
      "sid": 104,
      "d": {
        "trackingNumber": 34256480
      }
    }
    
    // Sample executionReports Add response
    {
      "q": "v1/exchange.market/executionReports",
      "sid": 1681199114141039,
      "d": {
        "messageType": "Add",
        "orderId": 5,
        "mpOrderId": 1681199277677,
        "orderType": "Limit",
        "side": "Buy",
        "instrument": "NPAM24",
        "quantity": 5,
        "price": 4.5,
        "timeInForce": "GTC",
        "orderTimestamp": 1681199277696560600,
        "filledQuantity": 0,
        "remainingOpenQuantity": 5,
        "removedQuantity": 0,
        "marketModel": "T",
        "accountType": "Client",
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          }
        ],
        "eventTimestamp": 1681199277696560600,
        "eventId": 7,
        "trackingNumber": 7284800,
        "mpId": 23,
        "mpName": "MP00001"
      }
    }
    
    // Sample executionReports Cancelled response
    {
      "q": "v1/exchange.market/executionReports",
      "sid": 1681199114141039,
      "d": {
        "messageType": "Cancelled",
        "orderId": 4,
        "mpOrderId": 1681199140375,
        "orderType": "Market",
        "side": "Buy",
        "instrument": "NPAM24",
        "quantity": 1,
        "timeInForce": "IOC",
        "orderTimestamp": 1681199140395915000,
        "filledQuantity": 0,
        "remainingOpenQuantity": 0,
        "removedQuantity": 0,
        "marketModel": "T",
        "accountType": "Client",
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          }
        ],
        "eventTimestamp": 1681199140395915000,
        "eventId": 6,
        "cancelledQuantity": 1,
        "trackingNumber": 7284544,
        "mpId": 23,
        "mpName": "MP00001"
      }
    }
    
    // Sample executionReports Executed response
    {
      "q": "v1/exchange.market/executionReports",
      "sid": 1681199114141039,
      "d": {
        "messageType": "Executed",
        "orderId": 4,
        "mpOrderId": 1681199484404,
        "orderType": "Market",
        "side": "Sell",
        "instrument": "GOMH24",
        "quantity": 5,
        "timeInForce": "IOC",
        "orderTimestamp": 1681199484424957200,
        "filledQuantity": 5,
        "remainingOpenQuantity": 0,
        "removedQuantity": 0,
        "marketModel": "T",
        "accountType": "Client",
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          }
        ],
        "eventTimestamp": 1681199484424957200,
        "eventId": 4,
        "lastFilledQuantity": 5,
        "lastFilledPrice": 9.35,
        "matchId": 1,
        "tradingMode": "CT",
        "trackingNumber": 7285728,
        "mpId": 23,
        "mpName": "MP00001"
      }
    }
    
    // Sample executionReports Modified response
    {
      "q": "v1/exchange.market/executionReports",
      "sid": 1681201306869371,
      "d": {
        "messageType": "Modified",
        "orderId": 9,
        "mpOrderId": 1681202695548,
        "orderType": "Limit",
        "side": "Sell",
        "instrument": "GOMH24",
        "quantity": 5,
        "price": 9.6,
        "timeInForce": "GTC",
        "orderTimestamp": 1681202695555402200,
        "filledQuantity": 0,
        "remainingOpenQuantity": 3,
        "removedQuantity": 2,
        "marketModel": "T",
        "accountType": "Client",
        "parties": [
          {
            "id": "CL00001",
            "source": "D",
            "role": 38
          }
        ],
        "eventTimestamp": 1681202722333444400,
        "eventId": 13,
        "lastRemovedQuantity": 2,
        "trackingNumber": 7294720,
        "mpId": 23,
        "mpName": "MP00001"
      }
    }
    
    // Sample executionReports TradeReport response
    /* 
    FOR BLOCK TRADE - TO FOLLOW
    */
    
    // Sample executionReports TradeCancel response
    {
      "q": "v1/exchange.market/executionReports",
      "sid": 1681201306869371,
      "d": {
        "messageType": "Cancelled",
        "orderId": 6,
        "mpOrderId": 1681201519847,
        "orderType": "Limit",
        "side": "Sell",
        "instrument": "GOMH24",
        "quantity": 5,
        "price": 9.6,
        "timeInForce": "GTC",
        "orderTimestamp": 1681201519856937000,
        "filledQuantity": 0,
        "remainingOpenQuantity": 0,
        "removedQuantity": 0,
        "marketModel": "T",
        "accountType": "Client",
        "parties": [
          {
            "id": "CL00001",
            "source": "D",
            "role": 38
          }
        ],
        "eventTimestamp": 1681202079298140400,
        "eventId": 7,
        "cancelledQuantity": 5,
        "trackingNumber": 7292000,
        "mpId": 23,
        "mpName": "MP00001"
      }
    }
    


    Request Parameters

    Any participant can use the executionReports API to subscribe to its own orders and trades events.

    There are few message types used in this API:


    Parameter Type Description
    trackingNumber (Optional) Long Determines the starting point of stream.
    • 0 = Stream will start from first event ever
    • EMPTY = Stream will start from the next upcoming event
    • trackingNumber = Stream will start from the next event after the given trackingNumber


    Response

    Field Message Type Description
    messageType
  • All
  • Add
  • Cancelled
  • Executed
  • Modified
  • TradeReport
  • TradeCancel
  • side
  • All
  • Same as in placeOrder request
    instrument
  • All
  • Same as in placeOrder request
    quantity
  • All
  • Same as in placeOrder request
    price
  • All
  • Same as in placeOrder request
    mpId
  • All
  • MP Id
    mpName
  • All
  • MP name
    accountType
  • All
  • Same as in placeOrder request
    parties
  • All
  • Same as in placeOrder request
    eventId
  • All
  • Sequence identifier per instrument for the event
    eventTimestamp
  • All
  • Event timestamp (in nanoseconds) in GMT
    trackingNumber
  • All
  • Event tracking number
    orderId
  • Add
  • Cancelled
  • Executed
  • Modified
  • Exchange order ID
    mpOrderId
  • Add
  • Cancelled
  • Executed
  • Modified
  • Same as in placeOrder request
    orderType
  • Add
  • Cancelled
  • Executed
  • Modified
  • Same as in placeOrder request
    timeInForce
  • Add
  • Cancelled
  • Executed
  • Modified
  • Same as in placeOrder request
    expiryDate
  • Add
  • Cancelled
  • Executed
  • Modified
  • Same as in placeOrder request
    orderTimestamp
  • Add
  • Cancelled
  • Executed
  • Modified
  • Order creation timestamp (in nanoseconds) in GMT
    marketModel
  • Add
  • Cancelled
  • Executed
  • Modified
  • A (Auction) when order was placed during auction
  • T (Trading) when order was placed on continues trading mode
  • RA (Resume Auction) when order was placed during auction after halt or autoHalt
  • filledQuantity
  • Add
  • Cancelled
  • Executed
  • Modified
  • Total filled quantity
    remainingOpenQuantity
  • Add
  • Cancelled
  • Executed
  • Modified
  • Remaining open quantity.

    quantity − filledQuantity − removedQuantity
    removedQuantity
  • Add
  • Cancelled
  • Executed
  • Modified
  • Quantity that was removed with modifyOrder request
    lastFilledQuantity
  • Executed
  • Matched quantity
    lastFilledPrice
  • Executed
  • Matched price (maker order price).
    mathchId
  • Executed
  • TradeReport
  • TradeCancel
  • Unique ID for the match
    tradingMode
  • Executed
  • TradeReport
  • TradeCancel
  • IA (Scheduled Intraday Auction) When execution was as part of auction
  • CT (Continuous Trading) When execution was done on a regular trading
  • ON Trade Reporting (On Exchange)
  • UA (Unscheduled Auction) - When execution was as part of auction after halt or autoHalt
  • cancelledQuantity
  • Cancelled
  • The cancelled quantity in the current cancelled event
    lastRemovedQuantity
  • Modified
  • Removed quantity on current event
    tradeType
  • TradeReport
  • TradeCancel
  • EFRP/Block/Other On TradeCancel it will be shown only for TradeReport cancellation

    trades

    qualifier: v1/exchange.market/trades

    Allows to get a real time stream for all the trades data

    Available messages in that API:


    Request Parameters

    // Sample trades request
    {
      "q": "v1/exchange.market/trades",
      "sid": 1681269620629657,
      "d": {
        "trackingNumber": 7294720
      }
    }
    
    // Sample trades MatchedTrade response
    {
      "q": "v1/exchange.market/trades",
      "sid": 1681269620629657,
      "d": {
        "actionType": "MatchedTrade",
        "timestamp": 1681268567119683800,
        "trackingNumber": 11226240,
        "eventId": 16,
        "orderId": 10,
        "mpOrderId": 1681268567078,
        "mpId": 23,
        "mpName": "MP00001",
        "instrumentId": 21,
        "instrument": "GOMH24",
        "side": "Sell",
        "price": 5,
        "quantity": 5,
        "tradeId": 3,
        "tradingMode": "CT",
        "accountType": "Client",
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          }
        ],
        "makerTaker": "Taker",
        "tradeDate": "2023-04-12"
      }
    }
    
    // Sample trades TradeReport response
    {
      "q": "v1/exchange.market/trades",
      "sid": 16,
      "d": {
        "eventId": 27,
        "timestamp": 1681269855030681261,
        "actionType": "TradeReport",
        "mpId": 23,
        "mpName": "MP00001",
        "instrumentId": 21,
        "instrument": "GOMH24",
        "side": "Buy",
        "price": 5,
        "quantity": 5,
        "tradeId": 3,
        "tradingMode": "ON",
        "accountType": "Client",
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          }
        ],
        "tradeType": "Block",
        "tradeDate": "2023-04-12",
        "trackingNumber": 217819392
      }
    }
    
    // Sample trades TradeCancel response
    {
      "q": "v1/exchange.market/trades",
      "sid": 16,
      "d": {
        "eventId": 26,
        "timestamp": 1681270047545166290,
        "actionType": "TradeCancel",
        "mpId": 23,
        "mpName": "MP00001",
        "instrumentId": 21,
        "instrument": "GOMH24",
        "side": "Buy",
        "price": 6,
        "quantity": 10,
        "tradeId": 3,
        "tradingMode": "CT",
        "tradeDate": "2023-04-12",
        "trackingNumber": 217818208
      }
    }
    
    
    Parameter Type Description
    trackingNumber(Optional) Long Determines the starting point of stream.
    • 0 = Stream will start from first event ever
    • EMPTY = Stream will start from the next upcoming event
    • trackingNumber = Stream will start from the next event after the given trackingNumber


    Response

    Field Description Order Book Trade Entry Trade Cancel
    eventId Event Id
    timestamp Event timestamp (in nanoseconds) in GMT
    actionType
  • MatchedTrade
  • TradeReport
  • TradeCancel
  • orderId Order id initiated the trade
    mpOrderId From source order
    mpId MP Id
    mpName MP Name
    instrumentId Instrument id
    Instrument instrument symbol
    side
  • Buy
  • Sell
  • price Trade price
    quantity Trade quantity
    tradeId matchId
    tradingMode
  • IA (Scheduled Intraday Auction) When execution was as part of auction
  • CT (Continuous Trading) When execution was done on a regular trading
  • ON (On Exchange) Trade Reporting
  • UA (Unscheduled Auction) When execution was as part of auction after halt or autoHalt
  • accountType Optional, From source order
    parties Optional, From source order Optional
    tradeType
  • EFRP
  • Block
  • Other
  • Optional
    makerTaker
  • Taker if order was never resting on the book for that trade
  • Maker if order was resting on the book for that trade
  • tradeDate Date of the business day of that trade

    Format: YYYY-MM-DD
    trackingNumber Tracking number


    Strategies/ Multi Legs Handling

    // Sample trades SingleSecurity response
    {
      "q": "v1/exchange.market/trades",
      "sid": 1681269620629657,
      "d": {
        "actionType": "MatchedTrade",
        "timestamp": 1681270147050809600,
        "trackingNumber": 11251904,
        "eventId": 4,
        "orderId": 4,
        "mpOrderId": 1681270147021,
        "mpId": 23,
        "mpName": "MP00001",
        "instrumentId": 109,
        "instrument": "GOMM23/N23",
        "side": "Sell",
        "price": 8.25,
        "quantity": 5,
        "tradeId": 1,
        "tradingMode": "CT",
        "accountType": "Client",
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          }
        ],
        "makerTaker": "Taker",
        "tradeDate": "2023-04-12",
        "multiLegReportingType": "SingleSecurity"
      }
    }
    
    // Sample trades IndividualSecurity response
    {
      "q": "v1/exchange.market/trades",
      "sid": 1681269620629657,
      "d": {
        "actionType": "MatchedTrade",
        "timestamp": 1681270147050809600,
        "trackingNumber": 11252160,
        "mpId": 23,
        "mpName": "MP00001",
        "instrumentId": 13,
        "instrument": "GOMM23",
        "side": "Sell",
        "price": 2.38,
        "quantity": 5,
        "tradeId": 5,
        "tradingMode": "CT",
        "accountType": "Client",
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          }
        ],
        "makerTaker": "Taker",
        "tradeDate": "2023-04-12",
        "multiLegReportingType": "IndividualLeg",
        "tradeLegRefId": 1,
        "multiLegDifferentialPrice": 8.25,
        "multiLegStrategyInstrumentId": 109,
        "multiLegStrategyTradeId": 1
      }
    }
    
    {
      "q": "v1/exchange.market/trades",
      "sid": 1681269620629657,
      "d": {
        "actionType": "MatchedTrade",
        "timestamp": 1681270147050809600,
        "trackingNumber": 11252416,
        "mpId": 23,
        "mpName": "MP00001",
        "instrumentId": 14,
        "instrument": "GOMN23",
        "side": "Buy",
        "price": -5.87,
        "quantity": 5,
        "tradeId": 3,
        "tradingMode": "CT",
        "accountType": "Client",
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          }
        ],
        "makerTaker": "Taker",
        "tradeDate": "2023-04-12",
        "multiLegReportingType": "IndividualLeg",
        "tradeLegRefId": 2,
        "multiLegDifferentialPrice": 8.25,
        "multiLegStrategyInstrumentId": 109,
        "multiLegStrategyTradeId": 1
      }
    }
    

    Strategies trades are sent on trades API by 2 models:

    Consumers can decide how to consume strategies trades.

    Each strategy related trade will be sent with the following new parameters:

    Parameter Description
    multiLegReportingType
  • SingleSecurity for parent trade
  • IndividualLeg for legs trades
  • tradeLegRefId leg index
    multiLegDifferentialPrice Parent trade price
    multiLegStrategyInstrumentId Parent trade instrument Id
    multiLegStrategyTradeId Parent trade Id

    Reporting

    Reporting API enables market participants to easily retrieve orders and executions data.

    This API is close to real time API, allows to access historical data as well up to date data.

    Data Eligibility

    Reporting API can be consumed for single market participant (MP) or for group of MPs that are pre-configured by exchange operations team.

    orders (Reporting)

    qualifier: v1/exchange.reporting/mp/orders

    Any participant can use the orders API to retrieve the full list of all its own orders.


    Request Parameters

    // Sample orders request
    {
      "q": "v1/exchange.reporting/mp/orders",
      "sid": 1681271202161408,
      "d": {
        "dateFrom": "2023-04-11T00:00:00",
        "dateTo": "2023-04-12T23:59:59",
        "status": "Active",
        "instrumentId": 103,
        "mpId": 23
      }
    }
    
    // Sample orders response
    {
      "q": "v1/exchange.reporting/mp/orders",
      "sid": 1681271202161408,
      "d": {
        "orderId": 10,
        "mpOrderId": 1681270979229,
        "instrumentId": 103,
        "instrument": "GOMJ25",
        "mpId": 23,
        "mpName": "MP00001",
        "status": "Active",
        "orderType": "Limit",
        "side": "Buy",
        "price": 8,
        "quantity": 5,
        "timeInForce": "GTC",
        "createdAt": "2023-04-12T03:42:59.253147",
        "filledPrice": 0,
        "filledQuantity": 0,
        "remainingOpenQuantity": 5,
        "removedQuantity": 0,
        "marketModel": "T",
        "accountType": "Client",
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          }
        ],
        "lastUpdate": "2023-04-12T03:42:59.253147",
        "lastEventId": 11
      }
    }
    
    Parameter Type Description
    dateFrom DateTime (GMT) Search for orders where Created At ≥ dateFrom

    Format: YYYY-MM-DDThh:mm:ss[.SSS]
    dateTo DateTime (GMT) Search for orders where Created At < dateTo

    Format: YYYY-MM-DDThh:mm:ss[.SSS]
    status eNum
  • Active
  • Executed
  • Cancelled

  • Empty = All status
    instruments []String Search for orders by symbol
    mpId int Search for orders by MP ID.
    orderId int Search for orders by order ID.


    Response

    orders response provides close to real time list of all current orders for the requested period with the entire details of those orders.

    Field Description
    orderId Exchange order ID
    mpOrderId Same as in placeOrder request
    instrumentId Instrument identifier
    instrument Same as in placeOrder request
    mpId Market participant identifier
    mpName Market participant name
    status
  • Active
  • Executed
  • Cancelled
  • orderType Same as in placeOrder request
    side Same as in placeOrder request
    price Same as in placeOrder request
    quantity Same as in placeOrder request
    timeInForce Same as in placeOrder request
    expiryDate(Optional)
    Order expiry date (GMT)

    Format: YYYY-MM-DDThh:mm:ss
    createdAt Order creation timestamp (in microseconds) in GMT

    Format: YYYY-MM-DDThh:mm:ss.SSSSSS
    filledPrice Weighted average filled price for all fills on that order

    Sum(event.executedQuantity∗event.executedPrice)/Sum(event.executedQuantity)
    filledQuantity Total filled quantity
    remainingOpenQuantity Remaining open quantity.

    quantity − filledQuantity − removedQuantity
    removedQuantity Quantity that was removed with modifyOrder request
    marketModel
  • A (Auction) when order was placed during auction
  • T (Trading) when order was placed on continues trading mode
  • RA (Resume Auction) when order was placed during auction after halt or autoHalt
  • parties Same as in placeOrder request
    accountType Same as in placeOrder request
    lastEventTimestamp Last order event timestamp (in microseconds) in GMT

    Format: YYYY-MM-DDThh:mm:ss.SSSSSS
    lastEventId Last event that was used to calculate order state

    trades (Reporting)

    qualifier: v2/exchange.reporting/mp/trades

    Any participant can use the trades API to retrieve the full list of all its own trades data.

    Each execution will be represented as 2 trades.


    Request Parameters

    // Sample trades request
    {
      "q": "v2/exchange.reporting/mp/trades",
      "sid": 1681271594907709,
      "d": {
        "dateFrom": "2023-04-11T00:00:00",
        "dateTo": "2023-04-12T23:59:59",
        "instruments": [
          "GOMH24"
        ],
        "mpId": 23
      }
    }
    
    // Sample trades MatchedTrade response
    {
      "q": "v2/exchange.reporting/mp/trades",
      "sid": 1681271594907709,
      "d": {
        "eventId": 4,
        "timestamp": "2023-04-11T07:51:24.424957",
        "actionType": "MatchedTrade",
        "orderId": 4,
        "mpOrderId": 1681199484404,
        "mpId": 23,
        "mpName": "MP00001",
        "instrumentId": 21,
        "instrument": "GOMH24",
        "side": "Sell",
        "price": 9.35,
        "quantity": 5,
        "tradeId": 1,
        "tradingMode": "CT",
        "accountType": "Client",
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          }
        ],
        "makerTaker": "Taker",
        "tradeDate": "2023-04-11"
      }
    }
    
    // Sample trades TradeReport response
    {
      "q": "v2/exchange.reporting/mp/trades",
      "sid": 10,
      "d": {
        "eventId": 100,
        "timestamp": "2023-04-11T07:51:24.424957",
        "actionType": "TradeReport",
        "mpId": 23,
        "mpName": "MP00001",
        "instrumentId": 21,
        "instrument": "GOMH24",
        "side": "Buy",
        "price": 9.5,
        "quantity": 10,
        "tradeId": 2,
        "tradingMode": "CT",
        "accountType" : "Client",
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          },
          {
            "id": "AC00002",
            "source": "D",
            "role": 12
          }
        ],
          "tradeType" : "Block",
          "tradeDate": "2023-04-11",
          "multiLegReportingType": "SingleSecurity"
    
      }
    }
    
    // Sample trades TradeCancel response
    {
      "q": "v2/exchange.reporting/mp/trades",
      "sid": 10,
      "d": {
        "eventId": 101,
        "timestamp": "2023-04-11T07:55:30.012342",
        "actionType": "TradeCancel",
        "mpId": 23,
        "mpName": "MP00001",
        "instrumentId": 21,
        "instrument": "GOMH24",
        "side": "Buy",
        "price": 9.5,
        "quantity": 5,
        "tradeId": 3,
        "tradingMode": "CT",
        "accountType" : "Client",
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          },
          {
            "id": "AC00002",
            "source": "D",
            "role": 12
          }
        ],
        "tradeType" : "Block",
        "tradeDate": "2023-04-11"
    
      }
    }
    
    Parameter Type Description
    dateFrom DateTime (GMT) Search for orders where Created At ≥ dateFrom

    Format: YYYY-MM-DDThh:mm:ss[.SSS]
    dateTo DateTime (GMT) Search for orders where Created At ≥ dateTo

    Format: YYYY-MM-DDThh:mm:ss[.SSS]
    instruments []String Search for trades by symbol
    mpId Int Search for trades by MP ID.
    tradeId Int Search for trades by tradeId.
    actionTypes []eNum Search for trades by actionType.

    Any combinations of the below values:
    • MatchedTrade
    • TradeReport
    • TradeCancel

    Empty = All
    multiLegReportingTypes []eNum Search for trades by multiLegReportingTypes.

    Any combinations of the below values:
    • SingleSecurity
    • IndividualLeg
    • None

    Empty = All


    Response

    trades response provides close to real time list of all trades data for the requested period with the entire details of those trades.

    Each record will be one of the following actionType:

    Field Description Order Book Trade Entry Trade Cancel
    eventId Event Id
    timestamp Event timestamp (in nanoseconds) in GMT
    actionType
  • MatchedTrade
  • TradeReport
  • TradeCancel
  • orderId Order id initiated the trade
    mpOrderId From source order
    mpId MP Id
    mpName MP Name
    instrumentId Instrument id
    Instrument instrument symbol
    side
  • Buy
  • Sell
  • price Trade price
    quantity Trade quantity
    tradeId matchId
    tradingMode
  • IA (Scheduled Intraday Auction) When execution was as part of auction
  • CT (Continuous Trading) When execution was done on a regular trading
  • ON (On Exchange) Trade Reporting
  • UA (Unscheduled Auction) When execution was as part of auction after halt or autoHalt
  • accountType Optional, From source order
    parties Optional, From source order Optional
    tradeType
  • EFRP
  • Block
  • Other
  • Optional
    makerTaker
  • Taker if order was never resting on the book for that trade
  • Maker if order was resting on the book for that trade
  • tradeDate Date of the business day of that trade

    Format: YYYY-MM-DD
    multiLegReportingType For strategy allocated trades & parent trades only
  • For parent: SingleSecurity
  • For allocate: IndividualLeg
  • Per trade


    Strategies/ Multi Legs Handling

    // Sample trades SingleSecurity response
    {
      "q": "v1/exchange.market/trades",
      "sid": 155,
      "d": {
        "actionType": "TradeReport",
        "timestamp": 1681272662071405000,
        "trackingNumber": 999,
        "eventId": 1,
        "mpId": 23,
        "mpName": "MP00001",
        "instrumentId": 147,
        "instrument": "NPAU24/V24",
        "side": "Buy",
        "price": 5,
        "quantity": 10,
        "tradeId": 1,
        "tradingMode": "ON",
        "accountType": "Client",
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          }
        ],
        "tradeType": "EFRP",
        "tradeDate": "2023-04-11",
        "multiLegReportingType": "SingleSecurity"
      }
    }
    
    // Sample trades IndividualLeg response
    {
      "q": "v1/exchange.market/trades",
      "sid": 155,
      "d": {
        "actionType": "TradeReport",
        "timestamp": 1681272662071405000,
        "trackingNumber": 998,
        "mpId": 23,
        "mpName": "MP00001",
        "instrumentId": 34,
        "instrument": "NPAU24",
        "side": "Buy",
        "price": 5,
        "quantity": 10,
        "tradeId": 1,
        "tradingMode": "ON",
        "accountType": "Client",
        "parties": [
          {
            "id": "AC00001",
            "source": "D",
            "role": 38
          }
        ],
        "tradeType": "EFRP",
        "tradeDate": "2023-04-11",
        "multiLegReportingType": "IndividualLeg",
        "tradeLegRefId": 1,
        "multiLegDifferentialPrice": 3,
        "multiLegStrategyInstrumentId": 147,
        "multiLegStrategyTradeId": 1
      }
    }
    

    See description and field details on Private Data API #Strategies/ Multi Legs Handling here

    Clearing

    FIXML over MQ

    Abaxx Clearing provide a FIXML API (FIX 5.0 SP2) for clearing derivatives.

    The purpose of this document is to provide an initial specification of the FIXML interface for an audience of ISV and member self-developed applications.

    MQ Connection Details

    Protocol BrokerURL (UAT) BrokerURL (PROD)
    AMQP amqp+ssl://mq.uat.service.xabx.net:5671 amqp+ssl://mq.service.abaxx.exchange:5671
    MQTT mqtt+ssl://mq.uat.service.xabx.net:8883 mqtt+ssl://mq.service.abaxx.exchange:8883
    OpenWire ssl://mq.uat.service.xabx.net:61617 ssl://mq.service.abaxx.exchange:61617
    STOMP stomp+ssl://mq.uat.service.xabx.net:61614 stomp+ssl://mq.service.abaxx.exchange:61614
    WSS wss://mq.uat.service.xabx.net:61619 wss://mq.service.abaxx.exchange:61619

    FIXML over MQ Onboarding

    Step Env Action Responsible
    1.a UAT Provide MQ queue and credentials assigned to member Abaxx
    1.b Prod Provide public IP's CIDR range for IP whitelisting Member
    2 Prod Provide MQ queue, credentials, and BrokerURL assigned to member Abaxx
    3 UAT/Prod Test credentials and confirm that member can subscribe to MQ queue and process FIXML messages Member
    4.a UAT Sign-off UAT and set up Prod access, then proceed with Step 1.b Abaxx
    4.b Prod Conclude FIXML over MQ setup is LIVE Member / Abaxx

    Contact Us

    For technical clearing related queries: [email protected]

    For functional clearing related queries: [email protected]

    Functionality

    The FIXML processing will cover a read and write facility covering the following post trade transaction management functions:

    Exchange will only support T0 allocation via FIXML. While via GUI we support trade allocation up till T+2

    Supported messages

    Inbound application messages

    Outbound application messages

    Main Blocks

    Standard header

    The header element is required on all FIXML messages; it contains the following attributes:

    TagNb FIXML Req Valid values and mapping
    Comp

    StandardHeader

    <BaseHeader

    Y
    35 @MsgTyp Y Values defined per message
    49 @SID Y Sender ‘s BIC
    50 @SSub Y =”UserName” ← Required for all inbound messages (member to CCP)
    56 @TID Y Target/Reciever’s BIC
    34 @SeqNum Y Per MQ-queue
    52 @Snt Y

    ="2019-01-10T10:46:09.080+00:00">

    ← Time message is sent

    Instrument

    TagNb FIXML Req Valid values and mapping
    Instrument Instrmt
    55 @Sym Y Product Ticker
    200 @MMY Y Maturity year month Format: (YYYYMM)
    202 @StrkPx O Strike Price Mandatory for options
    201 @PutCall O 0=Put, 1= Call
    22 @Src Y 4 = ISIN
    48 @ID Y ISIN
    Comp

    UndInstrmtGrp

    <Undly

    Comp

    UnderlyingInstrument

    <Undly

    311 @Sym O Symbol of underlying stock or index (Always present in outbound messages, optional for inbound messages)
    End Comp
    End Comp

    Party Block Overview

    All inbound business messages are subject to CCP authorization and must therefore specify the party being responsible for the business content of the message. Whenever applicable, the party entering the transaction (if different than business responsible) must also be entered. The SenderCompID and SenderSubID are used to identify the party entering the trade (see implicit parties section below).

    Party Block

    This is a repeating block allowing multiple party identifiers to be set. The following fields must be set for each party:

    Party identifier

    The PartyID field can contain different types of identifiers. When it contains a member/participant (firm) identifier, the format is as follows:

    The party identifier always consists of firm identifier.

    Implicit Parties

    All inbound business messages must contain:

    SenderCompID (49) = party identifier of the firm entering the transaction. SenderSubID (50) = set to what the member decides, no validation in the clearing system

    These fields implicitly identify the firm and individual entering the business message. For all transactions, these fields and the identifiers in Parties or Root Parties block are the same.

    Available Party Roles
    Business Role PartyRole (452) Comment
    Transaction owner

    Firm

    1 = Executing Firm

    Member ID (GCM, ICM or NCM Id in the clearing system). If the transaction refers to an NCM account this should be the member ID of the NCM also if it is the GCM sending the inbound request
    Clearing Firm Firm 4 = Clearing Member Firm Member ID (GCM or ICM Id in the clearing system)
    Clearing Account Account 83 = Clearing Account Sub-Account max length = 20 char
    Position Account Account 38 = Position Account

    Main-Account (member account).

    max length = 20 char

    Timestamps

    All timestamps are expressed in local time and carry a Time Zone Designator, i.e. the offset towards UTC in hours and minutes. Note that the Exchange and CCP systems time is UTC.

    The format of the timestamps is YYYY-MM-DDTHH:MM:SS.TZD, e.g. 2018-12-27T10:46:09.080+00:00.

    @Snt

    Standard Header contains mandatory field @Snt that will show the time when message was sent <"2018-01-10T10:46:09.080+00:00">. For inbound messages, milliseconds is not required and Z will be accepted for +00:00.

    @BizDt

    @BizDt contains the Clearing Date (=today). Format is YYYYMMDD.

    @TrdDt

    @TrdDt will normally be the original trade date. Outbound reports will contain what is received inbound from the members. Format is YYYYMMDD.

    @TS

    @TS contain the execution timestamp.

    Transaction identifiers

    @TrdID

    An increasing exchange sequence number assigned to each trade. Trade number is unique within an Instrument (per ISIN) and day. For inbound messages, this field will not be validated by the CCP. If the member inserts another value than an exchange trade-id it will be accepted by the CCP. Max length is 13 characters.

    @TrdID2

    @TrdID2 assigned by member. Must be unique across business days. If a split, a suffix will be added on the outbound reports. Max length is 35 characters.

    @OrigTrdID

    For a cancel trade, this field references trade number of the original trade. Some marketplaces might use the same TrdId for a trade cancel as for the original trade. In such cases TrdId = OrigTrdId in the trade cancel message

    @OrignTrdID2

    For a reverse, this field references TrdID2 assigned by the member.

    @RefID

    Mandatory if this is a Cancel and has to equal @ID from the original Give-Up request (inbound)

    @ID

    Unique identifier for an allocation instruction message set by customer. Max length is 35 characters.

    @RptID

    If the clearing account is present in the trade from the exchange, or in a take up request, the CCP will in the outbound Trade Capture Report populate this tag with the reference used by the clearing system for the account transfer. Max length is 16 characters.

    Trade Confirmation and Management

    A trade confirmation in the form of a FIXML Trade Capture Report is sent by the CCP following the execution of a trade. The clearinghouse publishes confirmed trades to counterparties and possibly to other participants involved in the downstream processing of trades.**

    In FIXML allocations are possible for account transfer and split purposes. Allocation reports can be used for the give-up take up process.

    Basic Trade Confirmation – Trade Capture Report (Outbound from CCP)

    Directed trade confirmation to all parties in a deal.

    Trade Capture Report (CCP outbound)

    TagNb FIXML Req Valid values and mapping
    Comp Standard Header Y MsgType = AE
    571 @RptID O Only included if clearing account is present. Will be the reference used by the clearing system for the account transfer.
    1003 @TrdID Y The trade-code received from the Exchange.
    1126 @OrigTrdID O Only included if this is a cancel from the Exchange. Holding the original trade-code from the Exchange
    487 @TransTyp Y

    Valid values:

    0 = New

    1 = Cancel

    856 @RptTyp Y

    Valid values:

    0 = Submit

    828 @TrdTyp Y 0 = regular trade
    715 @BizDt Y Clearing date (always today)
    31 @LastPx Y ”2.5673” max 4 decimals (will not include trailing zeros)
    32 @LastQty Y ”100”
    75 @TrdDt Y “20190307”
    Comp Instrument Y
    55 @Sym Y See section 3.2
    End Comp
    Comp

    TrdCapRptSideGrp

    <RptSide

    Y
    54 @Side Y

    Valid values:

    1=Buy

    2=Sell

    1 @Acct O Will contain what the member have specified as account for the order in the trading system. This can be an internal member reference to an account, or an account in the clearing system. (Will be equal to Clearing account (Tag 1117) if an account in the clearing system)
    58 @Txt O Free text
    Comp TrdRegTs
    1013 @Typ Y 1 = Execution Time
    1012 @TS Y Execution Date and Time
    End Comp

    End

    Comp

    Comp

    Root Parties

    <Pty

    1117 @ID Y “XLBSEC”
    1119 @R Y 1 = Executing Firm
    1117 @ID Y “XLBSEC”
    1119 @R Y 4 = Clearing member firm
    1117 @ID O “CL12345”
    1119 @R O 83 = Clearing account (Only present if used in execution and the account exist)
    1117 @ID Y “CL000140”
    1119 @R Y 38 = Position account (Execution Account)
    End Comp

    Trade Allocations

    The following allocations are supported:

    Trade Capture Report (CCP inbound)

    TagNb FIXML Req Valid values and mapping
    Comp StandardHeader Y MsgType = AE
    1003 @TrdID O Identifies the trade to be allocated (not validated by CCP).
    1040 @TrdID2 Y Trade/Transaction ID as defined in Transaction Identifiers
    1127 @OrignTrdID2 O Only included if this is a reverse. Holding the TrdID2 of the allocation to be reversed
    856 @RptTyp Y 0 = Submit
    487 @TransTyp Y TransTyp=2 (Replace) or = 4 (Reverse*)
    715 @BizDt Y Clearing date (always today)
    31 @LastPx Y ”2.5673” max 4 decimals (will not include trailing zeros)
    Comp

    Instrument

    <Instrmt

    Y
    55 @Sym Y See section 3.2
    End Comp
    Comp

    TrdCapRptSideGrp

    <RptSide

    Y
    826 @AllocInd Y

    Valid values:

    2=Account Transfer

    6=Split, only for Trans-Type = 2 (Replace)

    Transaction type 4, Reverse of a split will have to be done leg by leg.

    54 @Side Y

    Valid values:

    1=Buy

    2=Sell

    EndComp
    Comp

    Root Parties

    <Pty

    1117 @ID Y “XLBSEC”
    1119 @R Y 1=Execution Firm
    1117 @ID Y “XLBSEC”
    1119 @R Y 4=Clearing Firm
    1117 @ID Y “CL000140”
    1119 @R Y 38= position account mandatory
    End Comp
    Comp

    TrdAllocGrp

    <Alloc

    If a split, this group is repeated
    79 @Account Y Account the trade should be posted to (CL123456).
    80 @Qty

    Y

    161 @Txt O Free text field (Max 100 characters)
    End Comp

    Transaction type 4, Reverse, inbound will reverse the original account transfer and move the trade/position back to the position account. A reverse account transfer inbound will have the same values in the different tags as the Replace (the original Transfer). For a split, Reverse inbound must be sent leg by leg. The reversing trade capture report outbound will be for the clearing account and the new trade capture report outbound will be for the position account. After the Reverse is performed, a new trade capture report inbound can be sent to move the trade/position from the position account to a new clearing account.

    Example of message flow where a trade has been allocation to the wrong clearing account CL123, instead of clearing account CL321.

    Trade Capture Report Ack/Nack

    Each leg of a split will result in ack or nack.

    TagNb FIXML Req Valid values and mapping
    Comp

    StandardHeader

    <BaseHeader

    Y MsgType = AR
    1003 @TrdID O Included if in the inbound message
    1040 @TrdID2 Y Trade/Transaction ID as defined in Transaction Identifiers
    939 @TrdRptStat Y

    Valid values:

    0 = accepted (successfully processed)

    1 = reject

    751 @RejRsn Always set to ‘99’ (Other, further info in Text field)
    1328 @RejTxt
    Comp

    TrdCapRptAckSideGrp

    <RptSide

    1 @Acct Y Will contain the account in Tag 79 from the inbound message.
    End Comp
    Reversing Trade Capture Report (CCP outbound)
    TagNb FIXML Req Valid values and mapping
    Comp Standard Header Y MsgType = AE
    1003 @TrdID O Included if in the inbound message.
    1040 @TrdID2 Y Trade/Transaction ID as defined in Transaction Identifiers
    1127 @OrignTrdID2 O Only included if this is a reverse. Holding the TrdID2 of the allocation to be reversed
    856 @RptTyp Y

    Valid values:

    0 = Submit

    487 @TransTyp Y 4 = Reverse
    828 @TrdTyp Y 0 = Regular
    715 @BizDt Y Clearing date
    31 @LastPx Y ”2.5673” max 4 decimals (will not include trailing zeros)
    32 @LastQty Y ”100”
    75 @TrdDt O “20190225” (Will be today’s date)
    Comp

    Instrument

    < Instrmt

    Y
    55 @Sym See section 3.2
    End Comp
    Comp

    TrdCapRptSideGrp

    <RptSide

    Y
    54 @Side Y

    This reversing trade will have the opposite side than the original trade to net the original trade out.

    1=Buy

    2=Sell

    End Comp
    Comp

    Root Parties

    <Pty

    1117 @ID Y “XLBSEC”
    1119 @R Y 1 = Executing Firm
    1117 @ID Y “XLBSEC”
    1119 @R Y 4 = Clearing member firm
    1117 @ID Y “CL000140” (If transaction type 4 inbound, the account-id will be the clearing account)
    1119 @R Y 38 = Position account (If transaction type 4 inbound this will be 83 = clearing account)
    End Comp
    1011 @MsgEvtSrc Y Values= WEB or FIXML
    End Comp
    New Trade Capture Report Pursuant to Allocation

    This is the new trade that should contain the new values. If trade split, each new trade will get an overtaking trade.

    TagNb FIXML Req Valid values and mapping
    Comp Standard Header Y MsgType = AE
    1003 @TrdID O Included if in the inbound message.
    1040 @TrdID2 Y Trade/Transaction ID as defined in Transaction Identifiers. Sequentially suffixed for splits
    1127 @OrignTrdID2 O Only included if this is a reverse. Holding the TrdID2 of the allocation to be reversed
    856 @RptTyp Y

    Valid values:

    0 = Submit

    487 @TransTyp Y 2 = Replace
    828 @TrdTyp Y 0 = Regular
    715 @BizDt Y Clearing date
    31 @LastPx Y ”2.5673” max 4 decimals (will not include trailing zeros)
    32 @LastQty Y ”100”
    75 @TrdDt O “20190306” (Will be today’s date)
    Comp Instrument Y
    55 @Sym See section 3.2
    End Comp
    Comp

    TrdCapRptSideGrp

    <RptSide

    Y
    54 @Side Y

    Valid values:

    1=Buy

    2=Sell

    58 @Txt O
    End Comp
    Comp

    Root Parties

    <Pty

    1117 @ID Y “XLBSEC”
    1119 @R Y 1 = Executing Firm
    1117 @ID Y “XLBSEC”
    1119 @R Y 4 = Clearing member firm
    1117 @ID Y “CL123456” (If transaction type 4 inbound, the account-id here will be the Position Account)
    1119 @R Y 83 = Clearing account (If transaction type 4 inbound, this will be 38 = Position account)
    End Comp
    1011 @MsgEvtSrc Y Values= WEB or FIXML
    End Comp

    Give-up & Take-up

    Give-up initiated by a member:

    Give-up Request/Cancel of Give-up Request (CCP inbound)

    TagNb FIXML Req Valid values and mapping
    Comp

    StandardHeader

    <BaseHeader

    Y MsgType=J
    70 @ID Y Unique identifier for this allocation instruction message set by customer.
    71 @TransTyp Y

    For a new give-up:

    0 = New 2=Cancel

    72 @RefID O Mandatory if this is a Cancel and has to equal @ID from the original Give-Up request (inbound)
    626 @Typ Y 17=Give Up
    75 @TrdDt Y Trade date
    715 @BizDt Clearing date
    53 @Qty Y Total quantity of trade
    54 @Side Y

    Valid values:

    1=Buy

    2=Sell

    Comp

    ExecAllocGrp

    <AllExc

    1003 @TrdID O Identifies the trade to give up (not validated by CCP)
    31 @LastPx Y ”2.5673” max 4 decimals (will not include trailing zeros)
    End Comp
    Comp

    Instrument

    <Instrmt

    Y
    55 @Sym Y See section 3.2
    EndComp
    Comp

    AllocGrp

    <Alloc

    161 @Txt O Free text field for give-up (Max 100 characters)
    Comp

    Nested Parties

    <Pty

    524 @ID Y “CL000140”
    538 @R Y 38 = Position account
    524 @ID Y “XLBSEC”
    538 @R Y 97 = Give-Up clearing firm
    524 @ID Y “SELOWN”
    538 @R Y 96=Take-Up trading firm
    524 @ID Y “XLBSEC”
    538 @R Y 95=Give-Up trading firm
    End Comp
    End Comp

    Give-up Ack/Nack (CCP outbound)

    TagNb FIXML Req Valid values and mapping
    Comp

    StandardHeader

    <BaseHeader

    Y MsgType=P
    70 @ID Y Unique identifier for this allocation instruction message set by Client. (@ID from Allocation Instruction).
    87 @Stat Y

    Valid values:

    0=Accepted (successfully processed)

    2=Rejected (give-up rejected)

    88 @RejCode O Always set to ‘7’ (Other, further info in Text field)
    58 @Txt O

    Allocation Report for Give-up and Take-up members (CCP outbound)

    TagNb FIXML Req Valid values and mapping
    Comp

    StandardHeader

    <BaseHeader

    Y MsgType=AS
    70 @ID

    To the give up/take up requestor this will be set to the AllocID sent in Allocation Instruction.

    Will not be set for the take-up member in the first alloc report.

    793 @ID2 Y ID allocated by the CCP
    71 @TransTyp Y ‘0’ (new)
    794 @RptTyp Y

    Valid values:

    15= Give-Up (when a give-up is performed*)*

    16= Take-Up (when a give-up is accepted by take-up member):

    87 @Stat Y

    Identifies the status off allocation. Valid values:

    0 = Accepted

    6 = Allocation Pending

    12 = Cancelled

    1011 @MsgEvtSrc Y/O Values= WEB or FIXML. This tag will not be included to the Take-Up member pursuant to a Give-Up request
    54 @Side Y

    Valid values:

    1 = Buy

    2 = Sell

    53 @Qty Y
    75 @TrdDt Y
    715 @BizDt Y Clearing date for give-up
    60 @TxnTm Y Time of give up
    Comp

    ExecAllocGrp

    <AllExc

    1003 @TrdID O Equal to TrdID set by give up member in give up request. If no TrdID is set in give up request, a CCP assigned TrdID will be set to the take up member.
    31 @LastPx Y ”2.5673” max 4 decimals (will not include trailing zeros)
    End Comp
    Comp

    Instrument

    <Instrmt

    Y
    55 @Sym See section 3.2
    EndComp
    Comp

    AllocGrp

    <Alloc

    161 @Txt O Free text field for give-up and take-up respectively
    Comp

    Nested Parties

    <Pty

    524 @ID Y “SELOWN”
    538 @R Y/O 98 = Take-up clearing firm. Only present when reporting to the Take-Up side
    524 @ID Y “CL000140”
    538 @R Y 38 = Position account (Only to give-up side in the allocation reports sent prior to matching)
    524 @ID O “CL123456”
    538 @R O 83 = Clearing account (only to Take-up side after matching if included in the inbound message from the Take-up side)
    524 @ID Y “XLBSEC”
    538 @R Y/O 97 = Give-up clearing firm. Only present when reporting to the Give-Up side
    524 @ID Y “SELOWN”
    538 @R Y 96=Take-Up trading firm
    524 @ID Y “XLBSEC”
    538 @R Y 95=Give-Up trading firm
    End Comp
    End Comp

    Take-up Request (CCP inbound)

    TagNb FIXML Req Valid values and mapping
    Comp

    StandardHeader

    <BaseHeader

    Y MsgType=J
    70 @ID Y Unique identifier for this allocation instruction set by the Take-Up member
    793 @ID2 Y ID allocated by the CCP
    71 @TransTyp Y

    For a confirm give-up:

    @TransTyp=0 (new)

    626 @Typ Y

    Valid values:

    25 = Approve Take-Up

    54 @Side Y

    Valid values:

    1=Buy

    2=Sell

    53 @Qty Y
    75 @TrdDt Y Trade Date.
    715 @BizDt Y Clearing date for give-up
    Comp

    Exec Alloc Grp

    <AllExc

    1003 @TrdID O Identifies the trade to take up. Should be equal to TrdID received in first allocation report.
    31 @LastPx Y ”2.5673” max 4 decimals (will not include trailing zeros)
    End Comp
    Comp

    Instrument

    <Instrmt

    Y
    55 @Sym Y See section 3.2
    EndComp
    Comp

    AllocGrp

    <Alloc

    161 @Txt Y Free text field for take up (Max 100 characters)
    Comp Nested Parties < Pty
    524 @ID Y “SELOWN”
    538 @R Y 98 = Take-up clearing firm
    524 @ID Y “SELOWN”
    538 @R Y 96=Take-Up trading firm
    524 @ID Y “XLBSEC”
    538 @R Y 95=Give-Up trading firm
    524 @ID Y “CL000140” Should be Main Default account
    538 @R Y 38 = Position account
    524 @ID O “CL123456”
    538 @R O 83 = Clearing account
    End Comp
    End Comp

    Take-up Request Ack/Nack

    TagNb FIXML Req Valid values and mapping
    Comp

    StandardHeader

    <BaseHeader

    Y MsgType=P
    70 @ID Y Unique identifier for this allocation instruction message set by Client. (@ID from Take-Up Instruction).
    793 @ID2
    87 @Stat Y

    Valid values:

    0=Accepted (successfully processed)

    2=Rejected

    88 @RejCode Always set to ‘7’ (Other, further info in Text field)
    58 @Txt Reject message (error msg) from CCP

    Trade Confirmations Pursuant to Take-up (CCP outbound)

    Reversing Trade capture report Give-up Firm
    TagNb FIXML Req Valid values and mapping
    Comp Standard Header Y MsgType = AE
    1003 @TrdID O Equal to TrdID in give up request.
    1040 @TrdID2 Y Assigned by member on give-up request in tag 70
    487 @TransTyp Y 4 = Reverse
    856 @RptTyp Y

    Valid values:

    0 = Submit

    828 @TrdTyp Y 61 = Give Up Give-in trade
    715 @BizDt Y Clearing date
    31 @LastPx Y ”2.5673” max 4 decimals (will not include trailing zeros)
    32 @LastQty Y ”100”
    75 @TrdDt Y “20190306”
    Comp

    Instrument

    <Instrmt

    Y
    55 @Sym Y See section 3.2
    End Comp
    Comp

    TrdCapRptSideGrp

    <RptSide

    Y
    54 @Side Y

    The reversing Give-Up will have the opposite side of the original Give-Up to net that one out.1=Buy

    2=Sell

    58 @Txt O
    End Comp
    Comp

    Root Parties

    <Pty

    1117 @ID Y “XLBSEC”
    1119 @R Y 1 = Executing Firm
    1117 @ID Y “XLBSEC”
    1119 @R Y 4 = Clearing member firm
    1117 @ID Y “CL000140”
    1119 @R Y 38 = Position account
    1117 @ID Y “SELOWN”
    1119 @R Y 96=Take-Up trading firm
    1117 @ID Y “XLBSEC”
    1119 @R Y 95=Give-Up trading firm
    End Comp
    1011 @MsgEvtSrc Y Values= WEB or FIXML
    End Comp
    Trade Capture report Take-up Firm (CCP outbound)
    TagNb FIXML Req Valid values and mapping
    Comp Standard Header Y MsgType = AE
    571 @RptID O Only included if clearing account is present. Will be the reference used by the clearing system for the account transfer.
    1003 @TrdID O Equal to TrdID in take-up request.
    1040 @TrdID2 O Assigned by member on take-up request in tag 70
    487 @TransTyp Y 0 = New
    856 @RptTyp Y

    Valid values:

    0 = Submit

    828 @TrdTyp Y 61 = Give-up Give- In trade
    715 @BizDt Y Clearing date
    31 @LastPx Y ”2.5673” max 4 decimals (will not include trailing zeros)
    32 @LastQty Y ”100”
    75 @TrdDt Y ”2015-11-06”
    Comp

    Instrument

    <Instrmt

    Y
    55 @Sym Y See section 3.2
    End Comp
    Comp

    TrdCapRptSideGrp

    <RptSide

    Y
    54 @Side Y

    1=Buy

    2=Sell

    58 @Txt O
    End Comp
    Comp

    Root Parties

    <Pty

    1117 @ID Y “SELOWN”
    1119 @R Y 1 = Executing Firm
    1117 @ID Y “SELOWN”
    1119 @R Y 4 = Clearing member firm
    1117 @ID Y “CL000175”
    1119 @R Y 83 = Clearing account
    1117 @ID Y “CL987314”
    1119 @R Y 38 = Position account
    1117 @ID Y “SELOWN”
    1119 @R Y 96=Take-Up trading firm
    1117 @ID Y “XLBSEC”
    1119 @R Y 95=Give-Up trading firm
    End Comp
    1011 @MsgEvtSrc Y Values= WEB or FIXML
    End Comp

    FIXML Outbound Examples

    <!-- New TradeCaptureReport Message -->
    <FIXML v="5.0 SP2">
      <TrdCaptRpt RptID="ABC123" TrdID="3" TransTyp="0" RptTyp="0" TrdTyp="0" BizDt="20230419" LastPx="50" LastQty="10" TrdDt="20230419">
        <BaseHeader MsgTyp="AE" SID="ACLPSGSG1" TID="TARGET_BIC_CODE" SeqNum="32" Snt="2023-04-19T05:57:01.878+00:00"/>
        <Instrmt Sym="NWEG24" MMY="202401" Src="4" ID="3331"/>
        <Undly>
          <Undly Sym="NWE"/>
        </Undly>
        <RptSide Side="1" Acct="ACCOUNT">
          <TrdRegTS TS="2023-04-19T05:57:00.001+00:00" Typ="1"/>
        </RptSide>
        <Pty ID="EXECUTING_FIRM_ID" R="1"/>
        <Pty ID="CLEARING_FIRM_ID" R="4"/>
        <Pty ID="POSITION_ACCOUNT_ID" R="38"/>
        <Pty ID="CLEARING_ACCOUNT_ID" R="83"/>
      </TrdCaptRpt>
    </FIXML>
    
    <!-- Cancel TradeCaptureReport Message -->
    <FIXML v="5.0 SP2">
      <TrdCaptRpt TrdID="2" OrigTrdID="2" TransTyp="1" RptTyp="0" TrdTyp="0" BizDt="20230419" LastPx="12.5" LastQty="5" TrdDt="20230419">
        <BaseHeader MsgTyp="AE" SID="ACLPSGSG1" TID="TARGET_BIC_CODE" SeqNum="7" Snt="2023-04-19T06:09:28.135+00:00"/>
        <Instrmt Sym="NWEH24" MMY="202402" Src="4" ID="3332"/>
        <Undly>
          <Undly Sym="NWE"/>
        </Undly>
        <RptSide Side="2" Acct="ACCOUNT">
          <TrdRegTS TS="2023-04-19T06:09:28.015+00:00" Typ="1"/>
        </RptSide>
        <Pty ID="EXECUTING_FIRM_ID" R="1"/>
        <Pty ID="CLEARING_FIRM_ID" R="4"/>
        <Pty ID="POSITION_ACCOUNT_ID" R="38"/>
      </TrdCaptRpt>
    </FIXML>
    
    <!-- Allocation TradeCaptureReport Message -->
    <FIXML v="5.0 SP2">
      <TrdCaptRpt TrdID="1" TrdID2="TC 3.10" TransTyp="2" RptTyp="0" TrdTyp="0" BizDt="20230418" LastPx="3.3" LastQty="10" TrdDt="20230418" MsgEvtSrc="WEB">
        <BaseHeader MsgTyp="AE" SID="ACLPSGSG1" TID="TARGET_BIC_CODE" SeqNum="2" Snt="2023-04-19T02:03:54.771+00:00"/>
        <Instrmt Sym="RD1K23" MMY="202304" Src="4" ID="4413"/>
        <Undly>
          <Undly Sym="RD1"/>
        </Undly>
        <RptSide Side="2" Txt="Post EOD"/>
        <Pty ID="EXECUTING_FIRM_ID" R="1"/>
        <Pty ID="CLEARING_FIRM_ID" R="4"/>
        <Pty ID="CLEARING_ACCOUNT_ID" R="83"/>
      </TrdCaptRpt>
    </FIXML>
    
    <!-- Reverse TradeCaptureReport Message -->
    <FIXML v="5.0 SP2">
      <TrdCaptRpt TrdID="1" TrdID2="TC 3.10" TransTyp="4" RptTyp="0" TrdTyp="0" BizDt="20230418" LastPx="3.3" LastQty="10" TrdDt="20230418" MsgEvtSrc="WEB">
        <BaseHeader MsgTyp="AE" SID="ACLPSGSG1" TID="TARGET_BIC_CODE" SeqNum="1" Snt="2023-04-19T02:03:54.756+00:00"/>
        <Instrmt Sym="RD1K23" MMY="202304" Src="4" ID="4413"/>
        <Undly>
          <Undly Sym="RD1"/>
        </Undly>
        <RptSide Side="1"/>
        <Pty ID="EXECUTING_FIRM_ID" R="1"/>
        <Pty ID="CLEARING_FIRM_ID" R="4"/>
        <Pty ID="POSITION_ACCOUNT_ID" R="38"/>
      </TrdCaptRpt>
    </FIXML>
    
    <!-- New AllocationReport Message -->
    <FIXML v="5.0 SP2">
      <AllocRpt TransTyp="0" ID2="20230425VPA4SR41" RptTyp="15" Stat="12" BizDt="20230424" Side="1" Qty="4" TrdDt="20230424" TxnTm="2023-04-25T00:12:50.000+00:00">
        <BaseHeader MsgTyp="AS" SID="ACPLSGSGXXX" TID="STRAITS" SeqNum="2" Snt="2023-04-25T00:12:50.265+00:00"/>
        <AllExc LastPx="3.89" TrdID="5M34PVPA4SR41"/>
        <Instrmt Sym="GOMF24" MMY="202312" Src="4" ID="2235"/>
        <Undly>
          <Undly Sym="GOM"/>
        </Undly>
        <Alloc>
          <Pty ID="GIVEUP_TRADING_FIRM" R="95"/>
          <Pty ID="TAKEUP_TRADING_FIRM" R="96"/>
          <Pty ID="TAKEUP_CLEARING_FIRM" R="98"/>
        </Alloc>
      </AllocRpt>
    </FIXML>
    

    FIXML Inbound Examples

    <!-- Give Up Request Message -->
    <FIXML v="5.0 SP2">
       <AllocInstrctn ID="123" TransTyp="0" Typ="17" TrdDt="20230607" BizDt="20230607" Side="1" Qty="20">
          <BaseHeader MsgTyp="J" SID="TESTNOK0XXX" SSub="test" TID="OSCLNOK0XXX" SeqNum="4" Snt="2023-06-07T10:18:00.481+00:00" />
          <AllExc TrdID="00000004" LastPx="3" />
          <Instrmt Sym="GOMQ23" MMY="202308" Src="4" ID="2230" />
          <Alloc Txt="hello">
             <Pty ID="CLMAIN" R="38" />
             <Pty ID="ICM1" R="95" />
             <Pty ID="ICM2" R="96" />
             <Pty ID="ICM1" R="97" />
          </Alloc>
       </AllocInstrctn>
    </FIXML>
    
    <!-- Cancel Give Up Request Message -->
    <FIXML v="5.0 SP2">
       <AllocInstrctn ID="124" RefID="123" TransTyp="2" Typ="17" TrdDt="20230607" BizDt="20230607" Side="1" Qty="20">
          <BaseHeader MsgTyp="J" SID="TESTNOK0XXX" SSub="test" TID="OSCLNOK0XXX" SeqNum="5" Snt="2023-06-07T10:34:56.481+00:00" />
          <AllExc TrdID="00000004" LastPx="3" />
          <Instrmt Sym="GOMQ23" MMY="202308" Src="4" ID="2230" />
          <Alloc Txt="hello">
             <Pty ID="CLMAIN" R="38" />
             <Pty ID="ICM1" R="95" />
             <Pty ID="ICM2" R="96" />
             <Pty ID="ICM1" R="97" />
          </Alloc>
       </AllocInstrctn>
    </FIXML>
    
    <!-- Take Up Request Message -->
    <FIXML v="5.0 SP2">
       <AllocInstrctn ID="128" ID2="20230615VPK7SB61" TransTyp="0" Typ="25" TrdDt="20230607" BizDt="20230607" Side="1" Qty="20">
          <BaseHeader MsgTyp="J" SID="TESTNOK0XXX" SSub="test" TID="OSCLNOK0XXX" SeqNum="13" Snt="2023-06-07T10:56:56.481+02:00" />
          <AllExc LastPx="3" />
          <Instrmt Sym="GOMQ23" MMY="202308" Src="4" ID="2230" />
          <Alloc Txt="Hi">
             <Pty ID="DCLICM2C" R="38" />
             <Pty ID="ICM1" R="95" />
             <Pty ID="ICM2" R="96" />
             <Pty ID="ICM2" R="98" />
          </Alloc>
       </AllocInstrctn>
    </FIXML>
    
    <!-- Account Transfer Message -->
    <FIXML v="5.0 SP2">
       <TrdCaptRpt TrdID="00001" TrdID2="335511" RptTyp="0" TransTyp="2" BizDt="20230607" LastPx="3">
          <BaseHeader MsgTyp="AE" SID="TESTNOK0XXX" SSub="test" TID="OSCLNOK0XXX" SeqNum="6" Snt="2023-06-07T08:12:19.481+00:00" />
          <Instrmt Sym="GOMQ23" MMY="202308" Src="4" ID="2230" />
          <RptSide Side="1" AllocInd="2" />
          <Pty ID="ICM1" R="4" />
          <Pty ID="ICM1" R="1" />
          <Pty ID="CLMAIN" R="38" />
          <Alloc Account="CL1234567" Qty="2" Txt="TEST" />
       </TrdCaptRpt>
    </FIXML>
    
    <!-- Split Message -->
    <FIXML v="5.0 SP2">
       <TrdCaptRpt TrdID="00000001" TrdID2="34" RptTyp="0" TransTyp="2" BizDt="20230607" LastPx="1">
          <BaseHeader MsgTyp="AE" SID="TESTNOK0XXX" SSub="test" TID="OSCLNOK0XXX" SeqNum="7" Snt="2023-06-07T07:52:56.481+00:00" />
          <Instrmt Sym="GOMQ23" MMY="202308" Src="4" ID="2230" />
          <RptSide Side="1" AllocInd="6" />
          <Pty ID="ICM1" R="4" />
          <Pty ID="ICM1" R="1" />
          <Pty ID="CLMAIN" R="38" />
          <Alloc Account="CL1234567" Qty="1" Txt="Test1" />
          <Alloc Account="CL9632478" Qty="2" Txt="Test2" />
       </TrdCaptRpt>
    </FIXML>
    

    Secure File Transfer

    Abaxx provide the following CSV files to clearing members via SFTP server as described in this document.

    SFT Connection Details

    Env SFTP Host Public Key Algorithm Description
    UAT sftp.uat.service.xabx.net ED25519 Public key must be in ED25519 format
    PROD sftp.service.abaxx.exchange ED25519 Public key must be in ED25519 format

    Upon establishing Secure File Transfer connection, participants will have access to 3 root directory below for storing and retriving clearing data.

    Folder Usage
    in Members to upload reports on this folder
    out Reports
    public General data e.g. Span file

    Secure File Transfer Onboarding

    Step Env Action Responsible
    1.a UAT Submit ED25519 public key to Abaxx Member
    1.b Prod Submit ED25519 public key to Abaxx and public IP's CIDR range for IP whitelisting Member
    2 UAT/Prod Provide credentials to member Abaxx
    3 UAT/Prod Test credentials and confirm that reports can be downloaded and process from outgoing folder Member
    4.a UAT Sign-off UAT and setup Prod access, then proceed on Step 1.b Abaxx
    5 Prod Conclude SFT setup is LIVE Member / Abaxx

    Contact Us

    For technical clearing related queries: [email protected]

    For functional clearing related queries: [email protected]

    Supported Transactions

    SPAN File is also generated by the exchange on the XML format. Please contact the exchange if you need a sample format.

    Derivative Transactions (DTx)

    Sample Derivative Transactions (DTx) CSV

    Account type,Operator,Owner,Account,Ledger type,Currency,Instrument ID,Ticker,Product code,Contract type,Put/Call,Strike,Maturity,Open/close,Quantity,Amount,Trade price,Trade code,Transaction type,Transaction sub type,Trade date,Changed,Original CCP ID,Status,Settlement date,Counterparty,Free text
    CL,OPERATOR,OWNER,CL00XYZ,CLPOS,USD,12242,GOMK23,GOM,FU,,,Apr-23,Open,215,-4192500,1.95,4802,TRADE,Block,20230313,2023-03-13T05:28:14,20230313VPFD2KA1,,20230403,,
    
    Column Description
    Account type Always CL for clearing account
    Operator GCM or ICM as named in the clearing system
    Owner GCM, ICM or NCM as named in the clearing system
    Account Account-Id in the clearing system
    Ledger type Always CLPOS (Clearing positions)
    Currency Currency of derivative instrument
    Instrument ID Unique identifier for an instrument.
    Ticker Ticker symbol of derivative series
    Product code Ticker of underlying instrument
    Contract type
    • OP = Options
    • FU = Futures
    Put/Call
    • P = Put
    • C = Call
    (Only applicable for contract type OP)
    Strike Option strike price

    (Only applicable for contract type OP)
    Maturity Expiration month and year, Mon-YY
    Open/Close All new trades will have Open. Allocation, give up/take up will have close on “from account” and open on “to account”
    Quantity Number of contracts. Negative quantity is sell. Positive quantity is buy.
    Amount = Quantity * Trade Price * Contract Size
    Trade price Price as given in the trade, allocation, give up/take up
    Trade code For exchange trades this will be the trade code as received from the exchange/marketplace. For allocations and give up/take up this will be the trade code as given in the inbound message.
    Transaction type
    • TRADE = Exchange trade
    • ALLOC = A position/trade that is allocated from a Main Account (position account) to a Sub Account (clearing account) within the same clearing member.
    • ADJUST = Transaction type used when members adjust quantity debit/quantity credit on gross accounts.
    • GIVE UP = A position/trade that is given up to another member.
    • TAKE UP = Acceptance of give up
    • POSXFER = Position transfer
    • INTGUP/TUP = Allocation between own Main Accounts (position accounts)
    • CANCEL = An allocation cancelled. A cancellation of an exchange trade will have transaction type CANCEL.
    Transaction sub type Transaction sub type can be Block, EFRP or Other. If no sub type is received for the trade from the marketplace the field will be blank.
    Trade date Trade Date, YYYYMMDD
    Changed Date and time when the transaction was booked in the clearing system. YYYY-MM-DDTHH:MM:SS.SSSSSS
    Original CCP ID ID assigned by the clearing system
    Status Will show Cancelled for cancelled transactions, blank for the rest.
    Settlement date Expiration date of the instrument. YYYYMMDD
    Free text Will show free text added to the order in the trading system.

    Clearing Holding

    Sample Clearing Holding CSV

    Operator,Owner,Account,Gross/net,Settlement date,Currency,Instrument ID,Ticker,Product code,Contract type,Put/Call,Strike,Maturity,Quantity,Amount,Quantity credit,Quantity debit
    OPERATOR,OWNER,CL00XYZ,NET,20230403,USD,12242,GOMK23,GOM,FU,,,Apr-23,120006,-3070953540,-3070953540,0
    
    Column Description
    Operator GCM or ICM as named in the clearing system
    Owner GCM, ICM or NCM as named in the clearing system
    Account Account-id in the clearing system
    Gross/net Gross/net position indicator
    Settlement date Expiry date of the instrument, YYYYMMDD
    Currency Currency code e.g. USD
    Instrument ID Unique identifier for an instrument.
    Ticker Ticker symbol
    Product code Ticker of underlying Instrument
    Contract type
    • OP - Options
    • FU - Futures
    Put/Call
    • P - Put
    • C - Call

    (Only applicable for contract type OP)
    Strike Option strike price

    (Only applicable for contract type OP)
    Maturity Expiration month and year, Mon-YY
    Quantity Net quantity
    Amount Net amount
    Quantity credit Quantity of held/bought contracts
    Quantity debit Quantity of written/sold contracts

    Cash Settlement Transactions

    Sample CashTransactions CSV

    Account type,Operator,Owner,Account,Ledger type,Settlement date,Instrument ID,Ticker,Open/close,Quantity,Amount,Trade price,Transaction type,Trade date,Related series,Product code,Contract type,Put/Call,Strike,Maturity,Related price,Changed,Original CCP ID,Account name,Previous CCP ID,Trade code
    CL,OPERATOR,OWNER,CLOOXYZ,CLPOS,20230314,USD,USD,Open,138219970,0,,M2M,20230313,GOMK23,GOM,FU,,,Apr-23,2.559,2023-03-14T02:08:38,20230314VPC401A7,CL00ABC,20230314VPC401A7,
    
    Column Description
    Account type Always CL for Clearing account
    Operator GCM or ICM as named in the clearing system
    Owner GCM, ICM or NCM as named in the clearing system
    Account Account-id in the clearing system
    Ledger type Always CLPOS (Clearing positions)
    Settlement date Date when the cash settlement will be debited/credited to the bank account
    Instrument ID Currency code e.g. USD
    Ticker Currency code e.g. USD
    Open/Close Always Open
    Quantity The cash amount to pay (negative quantity) or receive (positive quantity)
    Amount As the cash amount is in “Quantity” this will always show 0.00
    Trade price N.A
    Transaction type Can be the following types:
    • EXP_STLM – Expiration Cash settlement for cash settled options
    • M2M – Mark to market
    • PREMIUM – Option premium
    Trade date Trade date, YYYYMMDD
    Related series Ticker of the derivative series the cash settlement is related to
    Product code Ticker of underlying instrument
    Contract type
    • OP - Options
    • FU - Futures
    Put/Call
    • P - Put
    • C - Call

    (Only applicable for contract type OP)
    Strike Option strike price

    (Only applicable for contract type OP)
    Maturity Expiration month and year, Mon-YY
    Related Price For transaction type M2M it will show fixing price for futures (the price used for M2M calculations)
    Changed Date for when the transaction was booked, YYYY-MM-DDTHH:MM:SS
    Original CCP ID ID assigned by the clearing system
    Account name Name of account as in the clearing system
    Previous CCP ID For Trans type EXP_STLM: Refers to Original CCP ID of the exercised transaction
    Trade code N.A

    Delivery Transactions

    Sample DeliveryTransactionsCommodity CSV

    Operator,Owner,Account,Open/close,Ticker,Quantity,Amount,Currency,Date,Transaction type
    OPERATOR,OWNER,CL00XYZ,CLOSE,NWEJ23,350,-50869000,USD,20230301,DELIVERY
    
    Column Description
    Operator GCM or ICM as named in the clearing system
    Owner GCM, ICM or NCM as named in the clearing system
    Account Account-id in the clearing system
    Open/close CLOSE
    Ticker Ticker symbol of the derivative instrument
    Quantity Quantity closed, corresponds to the contracts delivered
    • Negative quantity reflects delivery of a long position
    • Positive quantity reflects delivery of a short position
    Amount Settlement amount
    Currency Currency of the cash settled
    Date Delivery date , YYYYMMDD
    Transaction type Always DELIVERY

    Margin Data (SPAN Like Margin Model)

    Sample MarginData CSV

    Operator,Owner,Account,Initial margin,Variation margin,TBS,Add ons,Collateral,Liability,Assets,Netted,Latest cash call,Latest margin call,Calculation time
    OPERATOR,OWNER,ACCOUNT,-20436489795,2152338688,0,-10000,26483689119,-20436499795,28636027807,8199528012,0,0,2023-03-09T23:45:06.641127
    
    Column Description
    Operator GCM or ICM as named in the clearing system
    Owner GCM or ICM as named in the clearing system
    Account Margin account-id in the clearing system
    Initial margin Initial margin (IM) calculated
    Variation margin Variation margin (VM) calculated
    TBS Amount To Be Settled. This can be unsettled M2M or apending collateral release
    Add ons Sum of all add ons for the margin account
    Collateral Collateral value
    Liability IM+add ons+negative VM+negative TBS
    Assets Collateral+positive VM+positive TBS
    Netted Assets-Liabilities
    Latest cash call Pending cash call/Cash call not met
    Latest margin call Pending margin call/Margin call not met
    Calculation time The date and time of the margin calculation, YYYY-MM-DDTHH:MM:SS.SSSSSS

    Collateral Holding

    Sample CollateralHolding CSV

    Operator,Owner,Account,Ext ID,Instrument ID,Ticker,Quantity
    OPERATOR,OWNER,ACCOUNT,286549088,USD,USD,30011000000
    
    Column Description
    Operator GCM or ICM as named in the clearing system
    Owner GCM, ICM or NCM as named in the clearing system
    Account Account-id in the clearing system
    Ext ID Reference to external account, e.g. bank account
    Instrument ID For cash collateral Instrument ID=Ticker=Currency. (i.e. USD)

    For bond collateral it can be an ISIN code or other unique identifier for the instrument.
    Ticker Ticker symbol
    Quantity Collateral amount/quantity

    Collateral Transactions

    Sample CollateralTransactions CSV

    Operator,Owner,Account,Ext ID,Instrument ID,Ticker,Quantity
    OPERATOR,OWNER,ACCOUNT,286549088,USD,USD,30011000000
    
    Column Description
    Operator GCM or ICM as named in the clearing system
    Owner GCM, ICM or NCM as named in the clearing system
    Account Collateral Account-id in the clearing system
    Ext ID Reference to external account, e.g. bank account
    Instrument ID For cash collateral Instrument ID=Ticker=Currency. (i.e. USD)

    For bond collateral it can be an ISIN code or other unique identifier for the instrument.
    Ticker Ticker symbol
    Quantity Collateral amount/quantity.
    Changed Date and time the transaction was settled, YYYY-MM-DDTHH:MM:SS.SSSSSS

    Instruments

    Sample Instruments CSV

    Instrument ID,Ticker,Product code,Contract type,Put/Call,Strike,Maturity,Option style,Contract size,Currency,CFI,Dividend adjustment,Delivery type
    2235,GOMF24,GOM,FU,,,Dec-23,,10000,USD,FCEPSX,,P
    
    Column Description
    Instrument ID Unique identifier for the instrument
    Ticker Ticker symbol
    Product code Ticker of underlying instrument in relation to derivatives
    Contract type
    • OP - Options
    • FU - Futures
    Put/call
    • P - Put
    • C - Call

    (Only applicable for contract type OP)
    Strike Option strike price

    (Only applicable for contract type OP)
    Maturity Expiration month and year, Mon-YY

    (Only applicable for contract type FU, OP)
    Option style
    • AM - American
    • EU - European

    (Only applicable for contract type OP)
    Contract size Number of underlying instruments

    (Only applicable for contract type OP, FU)
    Currency Currency on instrument
    CFI Classification of Financial Instrument
    Dividend adj
    • S - Standard
    • F - Full dividend adjustment
    • N - no dividend adjustment

    Adjustment rules according to marketplace rulebook.
    Delivery type
    • P - Physical
    • C - Cash

    Instrument Prices

    Sample InstrumentPrices CSV

    Business date,Instrument ID,Ticker,Product code,Contract type,Put/Call,Strike,Maturity,Currency,Fixing price,Closing price,Expiry date,Contract size,Market flexibility
    20230313,2235,GOMF24,GOM,FU,,,Dec-23,USD,4.071,4.071,20231201,10000,STD
    
    Column Description
    Business date Trade Date, YYYYMMDD
    Instrument ID Unique identifier for the instrument
    Ticker Ticker symbol
    Product code Ticker of underlying instrument in relation to derivatives
    Contract type
    • OP - Options
    • FU - Futures
    Put/call
    • P - Put
    • C - Call

    (Only applicable for contract type OP)
    Strike Option strike price

    (Only applicable for contract type OP)
    Maturity Expiration month and year, Mon-YY (Only applicable for contract type FU, OP)
    Currency Currency on instrument
    Fixing price For contract type FU this will be the price used for M2M calculations.
    Closing price For contract type OP, FU this will be the closing price set by the exchange.
    Expiry date Expiry date for contract type FU and OP, YYYYMMDD
    Contract size Number of underlying instruments

    (Only applicable for contract type OP, FU)
    Market flexibility
    • STD - Standardized derivative instrument
    • TM - Tailor Made derivative instrument

    Odd Lot Adjustment

    Sample OddLotTransactions CSV

    sample
    
    Column Description
    Operator GCM or ICM as named in the clearing system
    Owner GCM, ICM or NCM as named in the clearing system
    Account Account-id in the clearing system
    Open/close Always Close
    Ticker Ticker symbol
    Quantity Quantity adjusted in order to have a position according to the number of contracts required for physical delivery
    Price Final settlement price
    Amount = Quantity * Price * No of underlying lots
    Currency Currency of the instrument
    Date Expiry date of the instrument, YYYYMMDD
    Transaction type ODD_LOTS

    Fee Transactions

    Sample CsvFeeTransactions CSV

    Business date,Instrument ID,Ticker,Product code,Contract type,Put/Call,Strike,Maturity,Currency,Fixing price,Closing price,Expiry date,Contract size,Market flexibility
    20230313,2235,GOMF24,GOM,FU,,,Dec-23,USD,4.071,4.071,20231201,10000,STD
    
    Column Description
    Fee date Trade date, YYYYMMDD
    Settlement date Settlement date for the fee, YYYYMMDD
    Ticker Ticker symbol
    Fee type Applicable fee types:
    • derivative-trade-fee
    • give-up-fee
    • take-up-fee
    • interest-admin-fee
    Operator GCM or ICM as named in the clearing system
    Owner GCM, ICM or NCM as named in the clearing system
    Account Account-id in the clearing system. For trade related fees it will be the clearing account, for collateral related fees it will be the
    Trading capacity Trading capacity as defined on the clearing account,
    • HOUSE
    • CLIENT
    Trade subtype Blank if no subtype is given in the trade. Subtypes can be Block or ERFP
    Qty traded Quantity in the trade. Only applicable for fees based on quantity in the trade.
    Currency Fee currency USD
    Fee rate The applicable fee rate
    Fee The calculated fee amount
    GST rate The applicable GST rate
    GST total Fee * GST rate
    Fee total Fee + GST total
    Fee code Fee code as defined in the clearing system for the fee

    Appendices

    Appendix A: WebSocket ErrorCodes

    ErrorCode Message
    1 One of:
    • Exchange is unavailable
    • Temporary failure to retrieve this data
    2 Stream disconnected
    1000 Missing fields: [Fieldname]
    1001 One of:
    • Order must contain a positive quantity
    • Market order must not specify price
    • Wrong orderType, side, mpOrderId, userId, timeInForce, expiryDate or [FieldName]
    • Latests expiryDate is one year
    • [FieldName] must be ≤ [maxLong/10^ fieldPrecision]
    • [FieldName] must ≥ [minLong/10^ fieldPrecision]
    1002 mpOrderId is already in use
    1003 Market is closed
    1004 Instrument trading is not allowed
    1005 One of:
    • Price precision is [PricePrecision]
    • Quantity precision is [QuantityPrecision]
    1006 One of:
    • Minimum order quantity is [MinOrderQuantity]
    • Maximum order quantity is [MaxOrderQuantity]
    • Quantity increment is [quantityIncrement]
    1007 Invalid session
    1008 This apiKey doesn’t have the right permission
    1009 Instrument trading is halt
    1010 Instrument [Instrument] not found
    1011 Permission denied for this instrument
    1012 Price breaches [FieldName] of [FieldValue]
    1013 Maximum order value is [maxOrderValue]
    1014 Price tick size is [tickSize]
    1015 You are not allowed place [orderSide] orders in current auction
    1016 [oppositeOrderSide] order was not yet placed
    1017 This order exceeds maxDepth
    1018 Trading is not allowed
    1030 One of:
    • Only [Allowed TIF] limit orders are allowed
    • Trading is not allowed during crossing
    1031 GAA is allowed only during auction
    1100 Order not found for that instrument
    1103 Missing fields: [FieldName]
    1104 Please use only one from orderId or mpOrderId
    1200 General error
    1201 Wrong trackingNumber
    1301 Quantity must be less than [remainaingActiveQuantity]
    6000 Authentication failed
    6001 Wrong timestamp
    6002 Missing fields: [FieldName]
    6003 Create session failed

    FAQs

    How to generate self-sign certificate?

     A. You can use OpenSSL to generate self-sign certificate, refer below for sample command:

    openssl req -x509 -newkey rsa:4096 \   -keyout /etc/stunnel/my-key.pem \   -out /etc/stunnel/my-cert.pem \   -days 365 \   -nodes \   -subj "/C=SG/ST=Singapore/L=Singapore/O=Abaxx/OU=IT/CN=abaxx.exchange"

    How to secure FIX Session with TLSv1.2?

     A. There are may possible ways to securing socket connection with TLSv1.2, the most common is by using stunnel to setup a tunnel using sample basic configuration below:

    output = /tmp/stunnel.log cert = /etc/stunnel/my-cert.pem key = /etc/stunnel/my-key.pem pid = /tmp/stunnel.pid debug = 7
    [ABAXX] client = yes accept = 8888 connect = fix.uat.xabx.net:8888 sslVersion = TLSv1.2

    Why I am not getting any ACK on my FIX Login(35=A) request?

     A. Please ensure that you have complied with all the mandatory connectivity requirements published here. In case the issue was not due to any of these mandatory requirements, please contact Technology Operations team @ [email protected]



    Disclaimer

    This API specification is provided on an "as is" basis. To the extent permitted by law, Abaxx Exchange Pte Ltd and Abaxx Clearing Pte Ltd ("Abaxx") make no other representations or warranties of any kind regarding the API specification, and Abaxx disclaims all other obligations and liabilities, or express or implied warranties regarding the API specification, including implied warranties of merchantability, quality, fitness for a particular purpose, title, non-infringement, or systems integration. Abaxx makes no warranty, representation or guarantee as to the API specification accuracy, reliability or completeness, use, or that the API specification will be free from errors or defects. Abaxx and its officers, directors, employees, contractors or agents shall not be liable for any loss or damage arising in any way, including by reason of negligence or any other reason whatsoever, from or in connection with the API specification, whether a party acts or refrains to act in reliance on such API specification.