The Tailor Made Software Suite for FX Options

Microsoft Word - eFXO Trade STP Websocket XML.docx



eFXO Trade STP Websocket XML Version 1

10 March 2025


eFXO Trade STP Websocket XML

Copyright 2025 eFXO All rights reserved.

Information contained herein is for Internal use and may only be used for business purposes authorized by eFXO.


eFXO Trade STP Websocket XML

Contents

  1. Introduction 3

    1. Revision 3

    2. Purpose 3

    3. Content 3

    4. Feedback 3

    5. Websocket 3

    6. Workflow 3

    7. Counterparty codes 4

    8. Expiry Cuts 4

    9. Trading Hours 4

    10. UAT Servers 4

    11. Production Servers 4

  2. Websocket XML Implementation 5

    1. Protocol Version 5

    2. Message Formats 5

    3. Connection / Disconnection 5

  3. Session Level Message Definitions 6

    1. Standard Message Header 6

    2. Logon from client 6

    3. Logon from server 6

    4. Logout 6

    5. Reject 7

  4. Business Message Definitions 8

    1. TradeCaptureReport 8

      ProductData FX 9

      ProductData European 9

    2. TradeCaptureReportAck 9

  1. Introduction


    1. Revision


      Version

      Date

      Remarks

      1

      10-March-2025

      First version


    2. Purpose


      This document provides the XML messages for Trade STP of FX Options. You have the ability to receive and send trade booking messages.


    3. Content


      Included in this document are the following:

      • General definitions and specifications for clients using XML to perform trade bookings.

      • XML message formats to be used and details of their expected parameters.

      • Workflow logic.

      • Counterparty and cut definition logic.

      • Websocket setup details.


    4. Feedback


      Feedback and questions can be directed to: support@efxo.com


    5. Websocket


      To turn a connection into a websocket, please use:


      Sec-WebSocket-Protocol: tradestpxml Sec-WebSocket-Version: 13


    6. Workflow


      eFXO Trade STP Websocket XML

      On sending an TradeCaptureReport message, you can expect 6 responses: An TradeCaptureReportAck with TradeReportStatus:

      0 = Delivered to counterparty, so they are connected. This is not an end state.

      1 = Format Error: you message has technical problems and cannot be processed. 2= System Error: eFXO has internal issue and message cannot be processed.

      3 = NotConnected: Counterparty is not connected, so message could not be delivered.

      4 = Success: Counterparty accepts trade booking.

      5 = Failed: Counterparty rejects trade booking. Text will have the reason they provided.

      6 = Pending: Trade needs to be enriched, so booking timeout increased from 1 minute to 15 minutes.

    7. Counterparty codes


      Counterparties are identified by the LEI code: https://www.lei-lookup.com/


    8. Expiry Cuts


      To standardize expiry cut times, we require the expiry cut to be set with the UTC time of the expiry. Example: New York cut is 10am New York time.

      Depending on the time of year, that will be 15:00 UTC (wintertime) or 14:00 UTC (summertime). The value for expiry cut must be set to value “15:00” or “14:00” depending on the summertime/wintertime.


    9. Trading Hours


      The system will be available from:


      Start Time: 7am Singapore time. End Time: 5pm New York time.


      On Monday through Friday. System maintenance will be performed after 5pm New York time or during weekends.


    10. UAT Servers


      Servers are:

      tradestpuat1.efxo.com and tradestpuat2.efxo.com

      Connection must be made on port 7433. IP whitelisting is required. Port 7433 requires TLS 1.2 encryption.


      There will be 2 robots active for testing:

      LEI: PT3QB789TSUIDF371261 : This robot rejects every booking. LEI: L3I9ZG2KFGXZ61BMYR72 : This robot accepts every booking.


      eFXO Trade STP Websocket XML

    11. Production Servers


      Servers are:

      tradestpprd1.efxo.com and tradestpprd2.efxo.com

      Connection must be made on port 7433. IP whitelisting is required. Port 7433 requires TLS 1.2 encryption.

  2. Websocket XML Implementation


    1. Protocol Version


      The protocol is based on Websocket standard version 13.


    2. Message Formats


      This document defines the set of supported messages, the expected fields to be contained in those messages and the range of accepted values which the fields may take. Any messages that it receives which are not in the supported message set, will be ignored. Messages not adhering to the specified format, containing fields with values outside the set defined here or containing any additional fields other than those defined in this document will be rejected.


    3. Connection / Disconnection


      eFXO Trade STP Websocket XML

      Connection should be initiated by the client. The eFXO trade STP process will act as the server. The client should send a logon message containing a username and password. The server will reply with a logon message. The client can terminate the connection by sending a logout message or it can terminate the network connection.

  3. Session Level Message Definitions


    1. Standard Message Header


      This is the standard header that must be used for every message.


      <message>

      <type>Command</type>

      <data>Content</data>

      </message>


    2. Logon from client


      First message from client to logon to the server.


      <message>

      <type>Logon</type>

      <data>

      <username>Provided by eFXO</username>

      <password>Provided by eFXO</password>

      <version>Must be 1</version>

      <lei>Your LEI code</lei>

      </data>

      </message>


    3. Logon from server


      This is the reply from the server on a successful logon:


      <message>

      <type>Logon</type>

      <data></data>

      </message>


    4. Logout


      Both sides can send a logout.


      <message>

      <type>Logout</type>

      eFXO Trade STP Websocket XML

      <data>

      <text>Logout reason</text>

      </data>

      </message>

    5. Reject


      This message is a respond to a message that is in wrong format.


      <message>

      <type>Reject</type>

      <data>

      <text>Readable text saying what is wrong</text>

      </data>

      eFXO Trade STP Websocket XML

      </message>

  4. Business Message Definitions


    1. TradeCaptureReport


      This message is provided by the PartyId who is the IntroducingFirm and transmitted to the PartyId who is the ClientId.


      <message>

      <type>TradeCaptureReport</type>

      <data>

      <tradereportid>Unique identifier</tradereportid>

      <parties>

      <party>

      <id>LEI code of counterparty</id>

      <role>ClientId, ClearingFirm, IntroducingFirm, ExecutingTrader, ContraFirm or ContraClearingFirm</role>

      </party>

      <party>

      <id>LEI code of counterparty</id>

      <role>ClientId, ClearingFirm, IntroducingFirm, ExecutingTrader, ContraFirm or ContraClearingFirm</role>

      </party>

      </parties>

      <venue>SEF, MTF, OTF, Other, OTC, RMO or UKMTF</venue>

      <executiontype>Unknown, Voice or Electronic</executiontype>

      <symbol> Symbol in EURUSD format</symbol>

      <premiumccy>Premium Currency</premiumccy>

      <tradefeeccy>Trade Fee currency</tradefeeccy>

      <transacttime>2025-03-10T14:55:23.594Z</transacttime>

      <miccode>MIFID 2 MIC code</miccode>

      <investmentdecisionwithinfirm>Trader e-mail address or system AlgoId

      </investmentdecisionwithinfirm>

      <executiondecisionwithinfirm>Trader e-mail address or system AlgoId

      </executiondecisionwithinfirm>

      <legs>

      <leg>

      <producttype>FX or European</producttype>

      <productdata>See product data leg specs</productdata>

      <premiumdate>Required for Options</premiumdate>

      <premium> Required for Options, can be 0</premium>

      <volatility>10.0</volatility>

      <tradefee>Brokerage fee</tradefee>

      <usiprefix>Dodd Frank USI prefix</usiprefix>

      <usivalue>Dodd Frank USI value</usivalue>

      <upicode>Dodd Frank UPI</upicode>

      <complextradecomponentid>MIFID2 ComplexTradeComponentId</complextradecomponentid>

      <instrumentidentificationcode>MIFID2 InstrumentIdentificationCode

      </instrumentidentificationcode>

      eFXO Trade STP Websocket XML

      <waiverindicator>MIFID2 WaiverIndicator</waiverindicator>

      <otcposttradeindicator>MIFID2 OtcPostTradeIndicator</otcposttradeindicator>

      <rtn>MIFID2 RTN</rtn>

      <leg>

      </legs>

      </data>

      </message>

      ProductData FX


      Product data for FX product in the TradeCaptureReport


      <productdata>

      <side>Buy or Sell; Left side currency for ClientID</side>

      <settledate>2025-03-10</settledate>

      <fxrate>1.04</fxrate>

      <notional>1000000.00</notional>

      <notionalccy>EUR</notionalccy>

      <settlement>Cash EUR, Cash USD or Delivery</settlement>

      <fixingdate>If cash settled then we need a fixing date</fixingdate>

      <fixingtime>UTC fixing time in YY:MM format<fixingtime>

      </productdata>


      ProductData European


      Product data for European product in the TradeCaptureReport


      <productdata>

      <side>Buy or Sell; Left side currency for ClientID</side>

      <expirydate>2025-03-06</expirydate>

      <expirytime> UTC expiry time in YY:MM format </expirytime>

      <settledate>2025-03-10</settledate>

      <strike>1.04</strike>

      <callput>Call or Put; on first currency of pair</callput>

      <notional>1000000.00</notional>

      <notionalccy>EUR</notionalccy>

      <settlement>Cash EUR, Cash USD or Delivery</settlement>

      </productdata>


    2. TradeCaptureReportAck


This message can be used by the client to confirm or reject a request to book a trade.


<message>

<type>TradeCaptureReportAck</type>

<data>

<tradereportid>Unique identifier</tradereportid>

<tradereportstatus>See section 1.5</tradereportstatus>

<text>Readable text saying what is wrong or trade id</text>

</data>

eFXO Trade STP Websocket XML

</message>

Copyright © 2025 eFXO