Straight Through Processing

FIX Straight Through Processing (STP) offers a streamlined path to the Zero Hash Settlement Service. Platform Operators can use our FIX STP Gateway to stream trade updates in the FIX protocol for settlement on-chain via zerohash.

FIX Connection Workflow

FIX API sessions are designed for maximum uptime and remain open on a reliable basis. However, there is no minimum connection time guarantee, as the server may undergo maintenance without notice.

To establish a connection, clients must initiate communication with a Logon <A> request. They must also send a Logout <5> message before disconnecting to properly conclude the session.

ℹ️

Reach out to a zerohash representative to obtain FIX connection details.

Messages

ℹ️

Reach out to a zerohash representative to obtain the FIX Data Dictionary.

Supported Messages

  • TradeCaptureReportRequest (AD)
  • TradeCaptureReportRequestAck (AQ)
  • TradeCaptureReport (AE)
  • TradeCaptureReportAck (AR)
  • SettlementStatusRequest (EC)
  • SettlementStatusRequestAck (ED)
  • SettlementStatusReport (EE)
  • SettlementStatusReportAck (EF)

TradeCaptureReportRequest (AD)

Used by the client to request and subscribe trade data from our system. We will process the request and reply with TradeCaptureReportRequestAck (AQ) to confirm receipt or report an error and TradeCaptureReport (AE) containing the trade details.

TagField NameData TypeRequiredDescription
568TradeRequestIDStringYTrade Capture Report Request ID
569TradeRequestTypeCharYType of Trade Capture Report.
0 (ALL_TRADES) → All Trades
263SubscriptionRequestTypeCharYSubscription Request Type

1 (SNAPSHOT_PLUS_UPDATES) → Snapshot + Updates (Subscribe)

2 (DISABLE_PREVIOUS_SNAPSHOT_PLUS_UPDATE_REQUEST) → Disable previous Snapshot + Update Request (Unsubscribe)

TradeCaptureReportRequestAck (AQ)

Sent by our system to the client to acknowledge the receipt and processing status of a previously submitted TradeCaptureReportRequest (AD). This confirms whether the request was accepted, rejected, or is pending resolution.

TagField NameData TypeRequiredDescription
568TradeRequestIDStringYTrade Capture Report Request ID
750TradeRequestStatusStringYStatus of Trade Request

0 (ACCEPTED) → Accepted

1 (COMPLETED) → Completed

2 (REJECTED) → Rejected

TradeCaptureReport (AE)

Used by our system to provide full details of executed trades to the client.

TagField NameData TypeRequiredDescription
571TradeReportIDStringNUnique identifier of trade capture report
568TradeRequestIDStringNTrade Capture Report Request ID
820TradeLinkIDStringNUsed to link a group of trades together
InstrumentComponentYComponent
32LastQtyQtyNTrade quantity
31LastPxPriceNTrade price
60TransactTimeUTC TimestampNTimestamp when the business transaction represented by the message occurred
TrdCapRptSideGrpComponentYComponent
1003TradeIDStringNTrade ID
1041FirmTradeIDStringNClient trade ID

TradeCaptureReportAck (AR)

This message is received by our system from the client. It serves as the client's confirmation, acknowledging the successful receipt and processing status of a TradeCaptureReport (AE).

The client must send a TradeCaptureReportAck (AR) message within 50 seconds of receiving the TradeCaptureReport (AE). Failure to acknowledge the message within this period will result in our system assuming the message was lost or unprocessed, triggering the redelivery of the original TradeCaptureReport (AE) message.

TagField NameData TypeRequiredDescription
571TradeReportIDStringYUnique identifier of trade capture report

SettlementStatusRequest (EC)

Used by the client to inquire about the current settlement status of trades.

TagField NameData TypeRequiredDescription
2965SettlStatusRequestIDStringYUnique identifier of the SettlementStatusRequest(35=EC)
263SubscriptionRequestTypeCharYSubscription Request Type

1 (SNAPSHOT_PLUS_UPDATES) → Snapshot + Updates (Subscribe)

2 (DISABLE_PREVIOUS_SNAPSHOT_PLUS_UPDATE_REQUEST) → Disable previous Snapshot + Update Request (Unsubscribe)

SettlementStatusRequestAck (ED)

Sent by our system to the client to acknowledge the receipt and processing status of a previously submitted SettlementStatusRequest (EC).

TagField NameData TypeRequiredDescription
2965SettlStatusRequestIDStringYUnique identifier of the SettlementStatusRequest(35=EC)
2966SettlStatusRequestStatusIntYStatus of the SettlementStatusRequest(35=EC) message being responded to.

1 (ACCEPTED) → Accepted

2 (REJECTED) → Rejected

SettlementStatusReport (EE)

Used by our system to provide current settlement status updates to the client.

TagField NameData TypeRequiredDescription
2967SettlStatusReportIDStringYUnique identifier of the SettlementStatusReport(35=EE)
2965SettlStatusRequestIDStringYUnique identifier of the SettlementStatusRequest(35=EC)
2968SettlStatusStringYTrade state:

- accepted
- terminated
60TransactTimeUTC TimestampYTimestamp when the business transaction represented by the message occurred
RegulatoryTradeIDGrpComponentYComponent

SettlementStatusReportAck (EF)

This message is received by our system from the client. It acknowledges the successful receipt and processing status of a SettlementStatusReport (EE) that our system previously sent to them.

The client must send a SettlementStatusReportAck (EF) message within 50 seconds of receiving the SettlementStatusReport (EE). Failure to acknowledge the message within this period will result in our system assuming the message was lost or unprocessed, triggering the redelivery of the original SettlementStatusReport (EE) message.

TagField NameData TypeRequiredDescription
2967SettlStatusReportIDStringYUnique identifier of the SettlementStatusReport(35=EE)

Components

Instrument

TagField NameData TypeRequiredDescription
55SymbolStringNTicker symbol. Common, human understood representation of the security
48SecurityIDStringNSecurity identifier value

TrdCapRptSideGrp

Repeating group

TagField NameData TypeRequiredDescription
552NoSidesNumInGroup (Repeating group)YNumber of Side repeating group instances.

0 (ONE_SIDE) → One Side

1 (BOTH_SIDES) → Both Sides
54SideCharYSide of order.

1 (BUY) → Buy

2 (SELL) → Sell
PartiesComponentNComponent
1AccountStringNAccount details

CUST01/PLAT01/label ({participant_code}/{account_group}/{account_label})
119SettlCurrAmtAmtNTotal amount due expressed in settlement currency
MiscFeesGrpComponentNComponent
1154SideCurrencyCurrencyNUsed to identify the trading currency on the Trade Capture Report Side
TradeReportOrderDetailComponentNComponent
1427SideExecIDStringNWhen reporting trades, used to reference the identifier of the execution (ExecID) being reported if different ExecIDs were assigned to each side of the trade

Parties

Repeating Group

TagField NameData TypeRequiredDescription
453NoPartyIDsNumingroupNNumber of PartyID (448)
448PartyIDStringNParty identifier/code
447PartyIDSourceCharNIdentifies class or source of the PartyID (448) value

C (GENERALLY_ACCEPTED_MARKET_PARTICIPANT_IDENTIFIER) → Generally accepted market participant identifier (e.g. NASD mnemonic)
452PartyRoleIntN3 (CLIENT_ID) → Client ID

MiscFeesGrp

Repeating group

TagField NameData TypeRequiredDescription
136NoMiscFeesNumingroupNNumber of repeating groups of miscellaneous fees
137MiscFeeAmtAmtNTrade fee amount
138MiscFeeCurrCurrencyNTrade fee currency
139MiscFeeTypeStringNIndicates type of miscellaneous fee

7 (OTHER) → Other
891MiscFeeBasisIntNDefines the unit for a miscellaneous fee.

0 (ABSOLUTE) → Absolute

1 (PER_UNIT) → Per Unit

2 (PERCENTAGE) → Percentage
2713MiscFeeDescStringNTrade fee name

TradeReportOrderDetail

TagField NameData TypeRequiredDescription
37OrderIDStringNUnique identifier for Order as assigned by sell-side
11ClOrdIDStringNUnique identifier for Order as assigned by the buy-side

RegulatoryTradeIDGrp

Repeating group

TagField NameData TypeRequiredDescription
1907NoRegulatoryTradeIDsNumingroupYNumber of regulatory IDs in the repeating group
1903RegulatoryTradeIDStringYClient trade ID
1905RegulatoryTradeIDSourceStringYIdentifies the reporting entity that originated the value in RegulatoryTradeID(1903)

1 (UNIQUE_TRANSACTION_IDENTIFIER) → Unique Transaction Identifier
1906RegulatoryTradeIDTypeIntYSpecifies the type of trade identifier provided in RegulatoryTradeID(1903).

5 (TRADING_VENUE_TRANSACTION_IDENTIFIER) → Trading Venue Transaction Identifier
2397RegulatoryTradeIDScopeIntYSpecifies the scope to which the RegulatoryTradeID(1903) applies.

2 (CLIENT) → Client

API Integration Workflow

Trade Capture Report

To start receiving trade updates through the FIX protocol, the platform should follow this flow:

1. Initiator sends TradeCaptureReportRequest (35=AD)

Sample Message

8=FIXT.1.1|9=119|35=AD|34=2|49=STP-PLAT01-1|52=20251022-20:44:37.098|56=ZERO|369=0|263=1|568=b5a83f29-f6ee-4f48-afbe-1734f4c07caa|569=0|10=118|

2. Acceptor sends TradeCaptureReportRequestAck (35=AQ)

Sample Message

8=FIXT.1.1|9=113|35=AQ|34=2|49=ZERO|52=20251020-20:09:43.531|56=STP-PLAT01-1|369=1|568=57e7ed51-4e73-4920-8ff2-0e0865475838|750=0|10=196|

3. Acceptor starts streaming trade updates using TradeCaptureReport (35=AE)

Sample Message

8=FIXT.1.1|9=651|35=AE|34=3|49=ZERO|52=20251020-20:09:43.857|56=STP-PLAT01-1|369=1|31=111714.6565399221266164|32=0.00041606|48=BTC/USD|55=BTC/USD|60=20251020-20:09:31.000|552=2|54=1|453=1|448=PLAT01|447=C|452=3|1=PLAT01/PLAT01/general|119=0.00041606|136=3|137=1.11|138=USD|139=7|891=0|2713=fee1|137=2.22|138=USD|139=7|891=0|2713=fee2|137=3.33|138=USD|139=7|891=0|2713=fee3|1154=BTC|54=2|453=1|448=00SCXM|447=C|452=3|1=00SCXM/00SCXM/inventory|119=46.48|1154=USD|568=57e7ed51-4e73-4920-8ff2-0e0865475838|571=92c5d28c-e4c6-5c3d-8215-14fec631918f|820=f1cfc6a7-bf85-4e3a-bf86-29ae62745770|1003=60441cac-f515-4b35-9293-542201ca9816|1041=f1cfc6a7-bf85-4e3a-bf86-29ae62745770|10=052|

4. For each trade update received, the initiator acknowledges the message using TradeCaptureReportAck (35=AR)

Sample Message

8=FIXT.1.1|9=107|35=AR|34=4|49=STP-PLAT01-1|52=20251020-20:09:45.907|56=ZERO|369=2|571=92c5d28c-e4c6-5c3d-8215-14fec631918f|10=116|

Settlement Status Report

To start receiving trade state updates through the FIX protocol, the platform should follow this flow:

1. Client sends SettlementStatusRequest (35=EC)

Sample Message

8=FIXT.1.1|9=114|35=EC|34=3|49=STP-PLAT01-1|52=20251020-20:09:42.132|56=ZERO|369=0|263=1|2965=3132cc1b-6fef-4471-a5bb-10fd286f4d9f|10=027|

2. Acceptor sends SettlementStatusRequestAck (35=ED)

Sample Message

8=FIXT.1.1|9=115|35=ED|34=5|49=ZERO|52=20251022-20:44:40.329|56=STP-PLAT01-1|369=2|2965=06f29329-efae-44df-8870-96683c38d364|2966=1|10=151|

3. Acceptor starts streaming trade state updates using SettlementStatusReport (35=EE)

Sample Message

8=FIXT.1.1|9=259|35=EE|34=6|49=ZERO|52=20251022-20:44:40.663|56=STP-PLAT01-1|369=2|60=20251022-18:15:05.000|1907=1|1903=d14081e4-83c8-4ede-a11c-1c4d0a5686ab|1905=1|1906=5|2397=2|2965=06f29329-efae-44df-8870-96683c38d364|2967=a833cb75-dcf5-512a-af6c-a3c43086f4ca|2968=accepted|10=040|

4. For each trade state update received, the client acknowledges the message using SettlementStatusReportAck (35=EF)

Sample Message

8=FIXT.1.1|9=108|35=EF|34=6|49=STP-PLAT01-1|52=20251020-20:08:16.163|56=ZERO|369=5|2967=a275eef8-c158-53e0-936f-dc278ba0befe|10=100|

Support

For assistance with integrating your trading systems with the FIX STP Gateway or any questions related to the API documentation, please contact our support team at [email protected]. We're here to help you streamline your settlement process and optimize your trading operations with FIX STP integration.