---
title: "Submit trade"
method: POST
path: "/trades"
tags: ["Trades"]
---

# Submit trade

`POST /trades`

Submits a trade for settlement that was matched and executed outside of zerohash.

## Headers

- `X-SCX-SIGNED` string, required
- `X-SCX-TIMESTAMP` string, required

## Request body

- PostTradesBody
  - `batch_trade_id` string, nullable — A unique identifier for a batch of trades. Null when the trade was not submitted as part of a batch.
  - `client_trade_id` string, required — A unique identifier for the trade, generally produced by the Platform on which the trade was executed. Note: this must be unique, per platform, per 72 hour period
  - `trade_reporter` string, required — A text field to indicate the name or identifier of the person or entity submitting the trade, e.g. an email address
  - `trade_reporter_code` string — A code to identify the person or entity submitting the trade
  - `reporting_party` string, nullable — The original reporter of the trade. This field is optional and must be a 6 digit participant code of which you have proper relationships with. Null when not supplied at trade submission.
  - `settlement_schedule` string, nullable — Instructs zerohash to settle trades according to a certain schedule. Null when not supplied at trade submission.
  - `platform_code` string, required — The unique identifier to the Platform on which the trade was executed, as provided by zerohash.
  - `market_identifier_code` string, nullable — The [ISO 10383](https://www.iso20022.org/market-identifier-codes) market identifier code for the platform. Null when not supplied at trade submission.
  - `symbol` string, required — A free text field to identify the pair being traded, e.g. `BTC/USD`
  - `product_type` 'spot' | 'forward', required — `spot` or `forward`
  - `trade_type` 'regular' | 'block', required — The type of trade to be settled. Valid values are `regular` or `block`
  - `trade_price` string, required — The price the trade was executed Note: if the `amount` is included per side, then this must equal to the seller's `amount` divided by the buyer's `amount` accurate for up to 20 figures.
  - `trade_quantity` string — The quantity purchased Note: if the `amount` is included per side, then this should not be included, otherwise it is required
  - `trade_state` 'accepted' | 'active' | 'terminated' — The current state of the trade; - `accepted` : The trade has been booked by zerohash and pending settlement in the next settlement cycle between the platform and zerohash. - `active` : The trades are eligible for settlement and there are pending payable and receivable obligations. - `terminated` : The trade has been terminated by settlement.
  - `physical_delivery` boolean, required — A boolean statement to indicate if the trade is physically delivered. Currently zerohash only supports physically-settled trades, i.e. a value of `true`
  - `transaction_timestamp` number, required — The unix timestamp the trade was executed on the external platform in milliseconds
  - `accepted_timestamp` number — The unix timestamp at which the trade was accepted by zerohash and entered into an `accepted` status.
  - `defaulted_timestamp` number, nullable — The unix timestamp in milliseconds at which the trade was defaulted. Null when the trade has not defaulted.
  - `settled_timestamp` number, nullable — The unix timestamp in milliseconds at which the trade entered a `settled` state. Trades are generally settled instantaneously. Null until the trade is settled.
  - `comment` string, nullable — Some comments about the trade for zerohash to store. Null when not supplied at trade submission.
  - `last_update` number — The unix timestamp of the last update to the trade object.
  - `parties_anonymous` boolean, required — A boolean flag to determine if the counterparties are known to each other (`false` if the `platform_code` is also a counterparty) to the trade.
  - `settlement_price_index_id` string, nullable — The unique identifier of the benchmark settlement price to be used when calculating settlement obligations on trades that are settled at zerohash - required for `forwards` only. Null for `spot` trades.
  - `contract_size` number — The contract size
  - `underlying` 'AAVE.ETH' | 'ADA' | 'ALGO' | 'AVAX' | 'BAT.ETH' | 'BCH' | 'BTC' | 'BUSD.ETH' | 'COMP.ETH' | 'DAI.ETH' | 'DOGE' | 'DOT' | 'EGLD' | 'EOS' | 'ETC' | 'ETH' | 'ETH.ARBITRUM' | 'GRT.ETH' | 'GYEN.ETH' | 'HBAR' | 'LINK.ETH' | 'LTC' | 'LUNA' | 'MATIC.ETH' | 'MATIC.POLYGON' | 'MKR.ETH' | 'MOB' | 'SAND.ETH' | 'SOL' | 'UNI.ETH' | 'USDC.ETH' | 'USDC.ALGO' | 'USDC.POLYGON' | 'USDC.SOL' | 'USDC.HBAR' | 'USDC.XLM' | 'USDC.AVAX' | 'USDT.ETH' | 'UST' | 'WBTC.ETH' | 'XEM' | 'XLM' | 'XRP' | 'XTZ' | 'ZUSD.ETH' — the underlying asset
  - `quoted_currency` 'CAD' | 'EUR' | 'GBP' | 'JPY' | 'MXN' | 'USD' — the quoted asset
  - `settlement_timestamp` number, nullable — The unix timestamp in milliseconds when final settlement will first be attempted - if not included, the standard platform settlement instructions will be applied. Null when not supplied at trade submission.
  - `expiry_timestamp` number, nullable — The last unix timestamp in milliseconds that the product can be traded, and the datetime that all final prices will be set, i.e. the fixing date - relevant for `forwards` only. Note: after this point, there is no more ability to exit the trade or change its economics. Null for `spot` trades.
  - `bank_fee` string, nullable — An optional field that clients can use to specify the fee taken by the banking partner (supports 2 decimal places). Null when not supplied at trade submission.
  - `spread_notional` string, nullable — The `spread_notional` is a field that shows the notional cost of the spread applied to the trade. This field is relevant for trades that are executed using the zerohash RFQ system. Returns null when no spread applied.
  - `spread_bps` string, nullable — The `spread_bps` is a field that shows the spread in basis points that was applied to the trade. This field is relevant for trades that are executed using the zerohash RFQ system. Returns null when no spread applied.
  - `issuer_fee_rate` string, nullable — The rate (in basis points) of the issuer fee applied to the trade. Returns null when no issuer fee applied.
  - `issuer_fee_amount` string, nullable — The notional amount of the issuer fee applied to the trade, denominated in the `quoted_currency`. Returns null when no issuer fee applied.
  - `issuer_fee_payor_type` 'null' | 'CUSTOMER' | 'PARTICIPANT' | 'PLATFORM', nullable — The type of payor that paid the issuer fee. Returns null when no issuer fee applied.
  - `origin` 'rest_api' | 'sdk' | 'secondary' | 'null', nullable — Specifies the method through which the movement was initiated, indicating whether it originated via our REST API, SDK, or Secondary Portal. Returns null for legacy/externally-reported trades.
  - `parties` object[], required
    - `side` 'buy' | 'sell', required — The `side` of the trade for the participant - `buy` or `sell`
    - `participant_code` string, required — The `participant_code` of the trade party.
    - `asset` string, required — The asset being traded by the party.
    - `amount` string, required — The amount of the `asset` being traded by the party.
    - `liquidity_indicator` 'added' | 'removed', nullable — Indicates whether the party added or removed liquidity from the market. This field is relevant for orders that were executed on the zerohash CLOB.
    - `client_order_id` string, nullable — A unique ID for the trade, preferably a UUID.
    - `order_id` string, nullable — The unique identifier of the order generated on the zerohash CLOB.
    - `obligations_outstanding_timestamp` number, nullable — The unix timestamp in milliseconds when the party entered an `obligations_outstanding` settlement state. Null when the party has not yet entered this state.
    - `current_obligations_met_timestamp` number, nullable — The unix timestamp in milliseconds when the party met its current obligations. Null when obligations have not yet been met.
    - `settlement_state` 'null' | 'obligations_outstanding' | 'current_obligations_met' | 'settled' | 'defaulted' | 'counterparty_defaulted', nullable — The current settlement state for this party. Null when the trade is in `accepted` state and settlement has not yet been attempted.
    - `execution_id` string, nullable — The unique identifier for the execution of the trade. Null when the trade was not executed on the zerohash CLOB.
    - `settling` boolean — Indicates whether this party is responsible for settling its side of the trade at zerohash.
    - `account_label` string, nullable — The `account_label` that the party executed the trade on, if applicable. This field is relevant for platforms integrated using custom `account_label` for the zerohash participants. If not provided, the trade will be associated with the default (`general`) account for the participant.
    - `collateral_percentage` string, nullable — The percentage of collateral required for the trade. Null when collateralization does not apply.
    - `account_profile` string, nullable — The account profile associated with the executing account (e.g. `nonprefunded`). Null when the party is not tied to a profiled account.
    - `trader` string, nullable — Participant who placed the order on the trading zerohash trading venue. This field is relevant for orders that were executed on the zerohash CLOB using the Multi Tenant Accounts. Null when not applicable.
    - `zrn` string, nullable — The `urn` associated with the account that executed the trade, if applicable. This field is relevant for platforms integrated with the zerohash Multi Tenant Accounts. Returns null when the trade was not executed by a multi-tenant account.
    - `manual_order_indicator` 'null' | 'manual' | 'automated', nullable — Indicates if the order was submitted manually via a user interface or via an API / Automated solution. Null when not applicable.
  - `session_id` string — A session identifier to group filled orders that were executed in the same trading session on the zerohash CLOB. An empty string is returned when the trade was not executed on the zerohash CLOB.
  - `payment_processor` object, nullable — Identifier for the payment service processor that funded the trade, when applicable. Null when the trade was not funded via a payment processor.
    - `name` string — The name of the payment processor
    - `id` string — The unique identifier of the payment according to the PSP
  - `fees` DynamicFee[]
    - `name` string, required
    - `amount` string, required

## Response `200`

Successfully created trade. Returns the created resource with generated IDs and timestamps.

- PostTradesResponse
  - `message` union
    - object
      - `batch_trade_id` string, nullable — A unique identifier for a batch of trades. Null when the trade was not submitted as part of a batch.
      - `client_trade_id` string — A unique identifier for the trade, generally produced by the Platform on which the trade was executed. Note: this must be unique, per platform, per 72 hour period
      - `trade_reporter` string — A text field to indicate the name or identifier of the person or entity submitting the trade, e.g. an email address
      - `trade_reporter_code` string — A code to identify the person or entity submitting the trade
      - `reporting_party` string, nullable — The original reporter of the trade. This field is optional and must be a 6 digit participant code of which you have proper relationships with. Null when not supplied at trade submission.
      - `settlement_schedule` string, nullable — Instructs zerohash to settle trades according to a certain schedule. Null when not supplied at trade submission.
      - `platform_code` string — The unique identifier to the Platform on which the trade was executed, as provided by zerohash.
      - `market_identifier_code` string, nullable — The [ISO 10383](https://www.iso20022.org/market-identifier-codes) market identifier code for the platform. Null when not supplied at trade submission.
      - `symbol` string — A free text field to identify the pair being traded, e.g. `BTC/USD`
      - `product_type` 'spot' | 'forward' — `spot` or `forward`
      - `trade_type` 'regular' | 'block' — The type of trade to be settled. Valid values are `regular` or `block`
      - `trade_price` string — The price the trade was executed Note: if the `amount` is included per side, then this must equal to the seller's `amount` divided by the buyer's `amount` accurate for up to 20 figures.
      - `trade_quantity` string — The quantity purchased Note: if the `amount` is included per side, then this should not be included, otherwise it is required
      - `trade_state` 'accepted' | 'active' | 'terminated' — The current state of the trade; - `accepted` : The trade has been booked by zerohash and pending settlement in the next settlement cycle between the platform and zerohash. - `active` : The trades are eligible for settlement and there are pending payable and receivable obligations. - `terminated` : The trade has been terminated by settlement.
      - `physical_delivery` boolean — A boolean statement to indicate if the trade is physically delivered. Currently zerohash only supports physically-settled trades, i.e. a value of `true`
      - `transaction_timestamp` number — The unix timestamp the trade was executed on the external platform in milliseconds
      - `accepted_timestamp` number — The unix timestamp at which the trade was accepted by zerohash and entered into an `accepted` status.
      - `defaulted_timestamp` number, nullable — The unix timestamp in milliseconds at which the trade was defaulted. Null when the trade has not defaulted.
      - `settled_timestamp` number, nullable — The unix timestamp in milliseconds at which the trade entered a `settled` state. Trades are generally settled instantaneously. Null until the trade is settled.
      - `comment` string, nullable — Some comments about the trade for zerohash to store. Null when not supplied at trade submission.
      - `last_update` number — The unix timestamp of the last update to the trade object.
      - `parties_anonymous` boolean — A boolean flag to determine if the counterparties are known to each other (`false` if the `platform_code` is also a counterparty) to the trade.
      - `settlement_price_index_id` string, nullable — The unique identifier of the benchmark settlement price to be used when calculating settlement obligations on trades that are settled at zerohash - required for `forwards` only. Null for `spot` trades.
      - `contract_size` number — The contract size
      - `underlying` 'AAVE.ETH' | 'ADA' | 'ALGO' | 'AVAX' | 'BAT.ETH' | 'BCH' | 'BTC' | 'BUSD.ETH' | 'COMP.ETH' | 'DAI.ETH' | 'DOGE' | 'DOT' | 'EGLD' | 'EOS' | 'ETC' | 'ETH' | 'ETH.ARBITRUM' | 'GRT.ETH' | 'GYEN.ETH' | 'HBAR' | 'LINK.ETH' | 'LTC' | 'LUNA' | 'MATIC.ETH' | 'MATIC.POLYGON' | 'MKR.ETH' | 'MOB' | 'SAND.ETH' | 'SOL' | 'UNI.ETH' | 'USDC.ETH' | 'USDC.ALGO' | 'USDC.POLYGON' | 'USDC.SOL' | 'USDC.HBAR' | 'USDC.XLM' | 'USDC.AVAX' | 'USDT.ETH' | 'UST' | 'WBTC.ETH' | 'XEM' | 'XLM' | 'XRP' | 'XTZ' | 'ZUSD.ETH' — the underlying asset
      - `quoted_currency` 'CAD' | 'EUR' | 'GBP' | 'JPY' | 'MXN' | 'USD' — the quoted asset
      - `settlement_timestamp` number, nullable — The unix timestamp in milliseconds when final settlement will first be attempted - if not included, the standard platform settlement instructions will be applied. Null when not supplied at trade submission.
      - `expiry_timestamp` number, nullable — The last unix timestamp in milliseconds that the product can be traded, and the datetime that all final prices will be set, i.e. the fixing date - relevant for `forwards` only. Note: after this point, there is no more ability to exit the trade or change its economics. Null for `spot` trades.
      - `bank_fee` string, nullable — An optional field that clients can use to specify the fee taken by the banking partner (supports 2 decimal places). Null when not supplied at trade submission.
      - `spread_notional` string, nullable — The `spread_notional` is a field that shows the notional cost of the spread applied to the trade. This field is relevant for trades that are executed using the zerohash RFQ system. Returns null when no spread applied.
      - `spread_bps` string, nullable — The `spread_bps` is a field that shows the spread in basis points that was applied to the trade. This field is relevant for trades that are executed using the zerohash RFQ system. Returns null when no spread applied.
      - `issuer_fee_rate` string, nullable — The rate (in basis points) of the issuer fee applied to the trade. Returns null when no issuer fee applied.
      - `issuer_fee_amount` string, nullable — The notional amount of the issuer fee applied to the trade, denominated in the `quoted_currency`. Returns null when no issuer fee applied.
      - `issuer_fee_payor_type` 'null' | 'CUSTOMER' | 'PARTICIPANT' | 'PLATFORM', nullable — The type of payor that paid the issuer fee. Returns null when no issuer fee applied.
      - `origin` 'rest_api' | 'sdk' | 'secondary' | 'null', nullable — Specifies the method through which the movement was initiated, indicating whether it originated via our REST API, SDK, or Secondary Portal. Returns null for legacy/externally-reported trades.
      - `parties` object[]
        - `side` 'buy' | 'sell', required — The `side` of the trade for the participant - `buy` or `sell`
        - `participant_code` string, required — The `participant_code` of the trade party.
        - `asset` string, required — The asset being traded by the party.
        - `amount` string, required — The amount of the `asset` being traded by the party.
        - `liquidity_indicator` 'added' | 'removed', nullable — Indicates whether the party added or removed liquidity from the market. This field is relevant for orders that were executed on the zerohash CLOB.
        - `client_order_id` string, nullable — A unique ID for the trade, preferably a UUID.
        - `order_id` string, nullable — The unique identifier of the order generated on the zerohash CLOB.
        - `obligations_outstanding_timestamp` number, nullable — The unix timestamp in milliseconds when the party entered an `obligations_outstanding` settlement state. Null when the party has not yet entered this state.
        - `current_obligations_met_timestamp` number, nullable — The unix timestamp in milliseconds when the party met its current obligations. Null when obligations have not yet been met.
        - `settlement_state` 'null' | 'obligations_outstanding' | 'current_obligations_met' | 'settled' | 'defaulted' | 'counterparty_defaulted', nullable — The current settlement state for this party. Null when the trade is in `accepted` state and settlement has not yet been attempted.
        - `execution_id` string, nullable — The unique identifier for the execution of the trade. Null when the trade was not executed on the zerohash CLOB.
        - `settling` boolean — Indicates whether this party is responsible for settling its side of the trade at zerohash.
        - `account_label` string, nullable — The `account_label` that the party executed the trade on, if applicable. This field is relevant for platforms integrated using custom `account_label` for the zerohash participants. If not provided, the trade will be associated with the default (`general`) account for the participant.
        - `collateral_percentage` string, nullable — The percentage of collateral required for the trade. Null when collateralization does not apply.
        - `account_profile` string, nullable — The account profile associated with the executing account (e.g. `nonprefunded`). Null when the party is not tied to a profiled account.
        - `trader` string, nullable — Participant who placed the order on the trading zerohash trading venue. This field is relevant for orders that were executed on the zerohash CLOB using the Multi Tenant Accounts. Null when not applicable.
        - `zrn` string, nullable — The `urn` associated with the account that executed the trade, if applicable. This field is relevant for platforms integrated with the zerohash Multi Tenant Accounts. Returns null when the trade was not executed by a multi-tenant account.
        - `manual_order_indicator` 'null' | 'manual' | 'automated', nullable — Indicates if the order was submitted manually via a user interface or via an API / Automated solution. Null when not applicable.
      - `session_id` string — A session identifier to group filled orders that were executed in the same trading session on the zerohash CLOB. An empty string is returned when the trade was not executed on the zerohash CLOB.
      - `payment_processor` object, nullable — Identifier for the payment service processor that funded the trade, when applicable. Null when the trade was not funded via a payment processor.
        - `name` string — The name of the payment processor
        - `id` string — The unique identifier of the payment according to the PSP
      - `fees` DynamicFee[]
        - `name` string, required
        - `amount` string, required
      - `trade_id` string — zerohash generated unique identifier for the trade.
      - `total_notional` string — Total notional value of the executed quote, denominated in the `quoted_currency`.
      - `asset_cost_notional` string — The `asset_cost_notional` is a field that shows the notional cost of the asset being traded, denominated in the `quoted_currency`.
      - `network_fee_notional` string, nullable — Notional value of the quoted network fee, denominated in the `quoted_currency`. This field is relevant for trades that are coupled with a withdrawal of digital assets. Null for trades that do not carry a network fee.
      - `network_fee_quantity` string, nullable — The `quantity` of the network fee quoted, denominated in the native chain's asset associated with the underlying asset. For example, if the underlying asset is `USDC.ETH`, then this would be denominated in `ETH`. Null for trades that do not carry a network fee.
    - object
      - `batch_trade_id` string, nullable — A unique identifier for a batch of trades. Null when the trade was not submitted as part of a batch.
      - `client_trade_id` string — A unique identifier for the trade, generally produced by the Platform on which the trade was executed. Note: this must be unique, per platform, per 72 hour period
      - `trade_reporter` string — A text field to indicate the name or identifier of the person or entity submitting the trade, e.g. an email address
      - `trade_reporter_code` string — A code to identify the person or entity submitting the trade
      - `reporting_party` string, nullable — The original reporter of the trade. This field is optional and must be a 6 digit participant code of which you have proper relationships with. Null when not supplied at trade submission.
      - `settlement_schedule` string, nullable — Instructs zerohash to settle trades according to a certain schedule. Null when not supplied at trade submission.
      - `platform_code` string — The unique identifier to the Platform on which the trade was executed, as provided by zerohash.
      - `market_identifier_code` string, nullable — The [ISO 10383](https://www.iso20022.org/market-identifier-codes) market identifier code for the platform. Null when not supplied at trade submission.
      - `symbol` string — A free text field to identify the pair being traded, e.g. `BTC/USD`
      - `product_type` 'spot' | 'forward' — `spot` or `forward`
      - `trade_type` 'regular' | 'block' — The type of trade to be settled. Valid values are `regular` or `block`
      - `trade_price` string — The price the trade was executed Note: if the `amount` is included per side, then this must equal to the seller's `amount` divided by the buyer's `amount` accurate for up to 20 figures.
      - `trade_quantity` string — The quantity purchased Note: if the `amount` is included per side, then this should not be included, otherwise it is required
      - `trade_state` 'accepted' | 'active' | 'terminated' — The current state of the trade; - `accepted` : The trade has been booked by zerohash and pending settlement in the next settlement cycle between the platform and zerohash. - `active` : The trades are eligible for settlement and there are pending payable and receivable obligations. - `terminated` : The trade has been terminated by settlement.
      - `physical_delivery` boolean — A boolean statement to indicate if the trade is physically delivered. Currently zerohash only supports physically-settled trades, i.e. a value of `true`
      - `transaction_timestamp` number — The unix timestamp the trade was executed on the external platform in milliseconds
      - `accepted_timestamp` number — The unix timestamp at which the trade was accepted by zerohash and entered into an `accepted` status.
      - `defaulted_timestamp` number, nullable — The unix timestamp in milliseconds at which the trade was defaulted. Null when the trade has not defaulted.
      - `settled_timestamp` number, nullable — The unix timestamp in milliseconds at which the trade entered a `settled` state. Trades are generally settled instantaneously. Null until the trade is settled.
      - `comment` string, nullable — Some comments about the trade for zerohash to store. Null when not supplied at trade submission.
      - `last_update` number — The unix timestamp of the last update to the trade object.
      - `parties_anonymous` boolean — A boolean flag to determine if the counterparties are known to each other (`false` if the `platform_code` is also a counterparty) to the trade.
      - `settlement_price_index_id` string, nullable — The unique identifier of the benchmark settlement price to be used when calculating settlement obligations on trades that are settled at zerohash - required for `forwards` only. Null for `spot` trades.
      - `contract_size` number — The contract size
      - `underlying` 'AAVE.ETH' | 'ADA' | 'ALGO' | 'AVAX' | 'BAT.ETH' | 'BCH' | 'BTC' | 'BUSD.ETH' | 'COMP.ETH' | 'DAI.ETH' | 'DOGE' | 'DOT' | 'EGLD' | 'EOS' | 'ETC' | 'ETH' | 'ETH.ARBITRUM' | 'GRT.ETH' | 'GYEN.ETH' | 'HBAR' | 'LINK.ETH' | 'LTC' | 'LUNA' | 'MATIC.ETH' | 'MATIC.POLYGON' | 'MKR.ETH' | 'MOB' | 'SAND.ETH' | 'SOL' | 'UNI.ETH' | 'USDC.ETH' | 'USDC.ALGO' | 'USDC.POLYGON' | 'USDC.SOL' | 'USDC.HBAR' | 'USDC.XLM' | 'USDC.AVAX' | 'USDT.ETH' | 'UST' | 'WBTC.ETH' | 'XEM' | 'XLM' | 'XRP' | 'XTZ' | 'ZUSD.ETH' — the underlying asset
      - `quoted_currency` 'CAD' | 'EUR' | 'GBP' | 'JPY' | 'MXN' | 'USD' — the quoted asset
      - `settlement_timestamp` number, nullable — The unix timestamp in milliseconds when final settlement will first be attempted - if not included, the standard platform settlement instructions will be applied. Null when not supplied at trade submission.
      - `expiry_timestamp` number, nullable — The last unix timestamp in milliseconds that the product can be traded, and the datetime that all final prices will be set, i.e. the fixing date - relevant for `forwards` only. Note: after this point, there is no more ability to exit the trade or change its economics. Null for `spot` trades.
      - `bank_fee` string, nullable — An optional field that clients can use to specify the fee taken by the banking partner (supports 2 decimal places). Null when not supplied at trade submission.
      - `spread_notional` string, nullable — The `spread_notional` is a field that shows the notional cost of the spread applied to the trade. This field is relevant for trades that are executed using the zerohash RFQ system. Returns null when no spread applied.
      - `spread_bps` string, nullable — The `spread_bps` is a field that shows the spread in basis points that was applied to the trade. This field is relevant for trades that are executed using the zerohash RFQ system. Returns null when no spread applied.
      - `issuer_fee_rate` string, nullable — The rate (in basis points) of the issuer fee applied to the trade. Returns null when no issuer fee applied.
      - `issuer_fee_amount` string, nullable — The notional amount of the issuer fee applied to the trade, denominated in the `quoted_currency`. Returns null when no issuer fee applied.
      - `issuer_fee_payor_type` 'null' | 'CUSTOMER' | 'PARTICIPANT' | 'PLATFORM', nullable — The type of payor that paid the issuer fee. Returns null when no issuer fee applied.
      - `origin` 'rest_api' | 'sdk' | 'secondary' | 'null', nullable — Specifies the method through which the movement was initiated, indicating whether it originated via our REST API, SDK, or Secondary Portal. Returns null for legacy/externally-reported trades.
      - `parties` object[]
        - `side` 'buy' | 'sell', required — The `side` of the trade for the participant - `buy` or `sell`
        - `participant_code` string, required — The `participant_code` of the trade party.
        - `asset` string, required — The asset being traded by the party.
        - `amount` string, required — The amount of the `asset` being traded by the party.
        - `liquidity_indicator` 'added' | 'removed', nullable — Indicates whether the party added or removed liquidity from the market. This field is relevant for orders that were executed on the zerohash CLOB.
        - `client_order_id` string, nullable — A unique ID for the trade, preferably a UUID.
        - `order_id` string, nullable — The unique identifier of the order generated on the zerohash CLOB.
        - `obligations_outstanding_timestamp` number, nullable — The unix timestamp in milliseconds when the party entered an `obligations_outstanding` settlement state. Null when the party has not yet entered this state.
        - `current_obligations_met_timestamp` number, nullable — The unix timestamp in milliseconds when the party met its current obligations. Null when obligations have not yet been met.
        - `settlement_state` 'null' | 'obligations_outstanding' | 'current_obligations_met' | 'settled' | 'defaulted' | 'counterparty_defaulted', nullable — The current settlement state for this party. Null when the trade is in `accepted` state and settlement has not yet been attempted.
        - `execution_id` string, nullable — The unique identifier for the execution of the trade. Null when the trade was not executed on the zerohash CLOB.
        - `settling` boolean — Indicates whether this party is responsible for settling its side of the trade at zerohash.
        - `account_label` string, nullable — The `account_label` that the party executed the trade on, if applicable. This field is relevant for platforms integrated using custom `account_label` for the zerohash participants. If not provided, the trade will be associated with the default (`general`) account for the participant.
        - `collateral_percentage` string, nullable — The percentage of collateral required for the trade. Null when collateralization does not apply.
        - `account_profile` string, nullable — The account profile associated with the executing account (e.g. `nonprefunded`). Null when the party is not tied to a profiled account.
        - `trader` string, nullable — Participant who placed the order on the trading zerohash trading venue. This field is relevant for orders that were executed on the zerohash CLOB using the Multi Tenant Accounts. Null when not applicable.
        - `zrn` string, nullable — The `urn` associated with the account that executed the trade, if applicable. This field is relevant for platforms integrated with the zerohash Multi Tenant Accounts. Returns null when the trade was not executed by a multi-tenant account.
        - `manual_order_indicator` 'null' | 'manual' | 'automated', nullable — Indicates if the order was submitted manually via a user interface or via an API / Automated solution. Null when not applicable.
      - `session_id` string — A session identifier to group filled orders that were executed in the same trading session on the zerohash CLOB. An empty string is returned when the trade was not executed on the zerohash CLOB.
      - `payment_processor` object, nullable — Identifier for the payment service processor that funded the trade, when applicable. Null when the trade was not funded via a payment processor.
        - `name` string — The name of the payment processor
        - `id` string — The unique identifier of the payment according to the PSP
      - `fees` DynamicFee[]
        - `name` string, required
        - `amount` string, required
    - object
      - `batch_trade_id` string, nullable — A unique identifier for a batch of trades. Null when the trade was not submitted as part of a batch.
      - `client_trade_id` string — A unique identifier for the trade, generally produced by the Platform on which the trade was executed. Note: this must be unique, per platform, per 72 hour period
      - `trade_reporter` string — A text field to indicate the name or identifier of the person or entity submitting the trade, e.g. an email address
      - `trade_reporter_code` string — A code to identify the person or entity submitting the trade
      - `reporting_party` string, nullable — The original reporter of the trade. This field is optional and must be a 6 digit participant code of which you have proper relationships with. Null when not supplied at trade submission.
      - `settlement_schedule` string, nullable — Instructs zerohash to settle trades according to a certain schedule. Null when not supplied at trade submission.
      - `platform_code` string — The unique identifier to the Platform on which the trade was executed, as provided by zerohash.
      - `market_identifier_code` string, nullable — The [ISO 10383](https://www.iso20022.org/market-identifier-codes) market identifier code for the platform. Null when not supplied at trade submission.
      - `symbol` string — A free text field to identify the pair being traded, e.g. `BTC/USD`
      - `product_type` 'spot' | 'forward' — `spot` or `forward`
      - `trade_type` 'regular' | 'block' — The type of trade to be settled. Valid values are `regular` or `block`
      - `trade_price` string — The price the trade was executed Note: if the `amount` is included per side, then this must equal to the seller's `amount` divided by the buyer's `amount` accurate for up to 20 figures.
      - `trade_quantity` string — The quantity purchased Note: if the `amount` is included per side, then this should not be included, otherwise it is required
      - `trade_state` 'accepted' | 'active' | 'terminated' — The current state of the trade; - `accepted` : The trade has been booked by zerohash and pending settlement in the next settlement cycle between the platform and zerohash. - `active` : The trades are eligible for settlement and there are pending payable and receivable obligations. - `terminated` : The trade has been terminated by settlement.
      - `physical_delivery` boolean — A boolean statement to indicate if the trade is physically delivered. Currently zerohash only supports physically-settled trades, i.e. a value of `true`
      - `transaction_timestamp` number — The unix timestamp the trade was executed on the external platform in milliseconds
      - `accepted_timestamp` number — The unix timestamp at which the trade was accepted by zerohash and entered into an `accepted` status.
      - `defaulted_timestamp` number, nullable — The unix timestamp in milliseconds at which the trade was defaulted. Null when the trade has not defaulted.
      - `settled_timestamp` number, nullable — The unix timestamp in milliseconds at which the trade entered a `settled` state. Trades are generally settled instantaneously. Null until the trade is settled.
      - `comment` string, nullable — Some comments about the trade for zerohash to store. Null when not supplied at trade submission.
      - `last_update` number — The unix timestamp of the last update to the trade object.
      - `parties_anonymous` boolean — A boolean flag to determine if the counterparties are known to each other (`false` if the `platform_code` is also a counterparty) to the trade.
      - `settlement_price_index_id` string, nullable — The unique identifier of the benchmark settlement price to be used when calculating settlement obligations on trades that are settled at zerohash - required for `forwards` only. Null for `spot` trades.
      - `contract_size` number — The contract size
      - `underlying` 'AAVE.ETH' | 'ADA' | 'ALGO' | 'AVAX' | 'BAT.ETH' | 'BCH' | 'BTC' | 'BUSD.ETH' | 'COMP.ETH' | 'DAI.ETH' | 'DOGE' | 'DOT' | 'EGLD' | 'EOS' | 'ETC' | 'ETH' | 'ETH.ARBITRUM' | 'GRT.ETH' | 'GYEN.ETH' | 'HBAR' | 'LINK.ETH' | 'LTC' | 'LUNA' | 'MATIC.ETH' | 'MATIC.POLYGON' | 'MKR.ETH' | 'MOB' | 'SAND.ETH' | 'SOL' | 'UNI.ETH' | 'USDC.ETH' | 'USDC.ALGO' | 'USDC.POLYGON' | 'USDC.SOL' | 'USDC.HBAR' | 'USDC.XLM' | 'USDC.AVAX' | 'USDT.ETH' | 'UST' | 'WBTC.ETH' | 'XEM' | 'XLM' | 'XRP' | 'XTZ' | 'ZUSD.ETH' — the underlying asset
      - `quoted_currency` 'CAD' | 'EUR' | 'GBP' | 'JPY' | 'MXN' | 'USD' — the quoted asset
      - `settlement_timestamp` number, nullable — The unix timestamp in milliseconds when final settlement will first be attempted - if not included, the standard platform settlement instructions will be applied. Null when not supplied at trade submission.
      - `expiry_timestamp` number, nullable — The last unix timestamp in milliseconds that the product can be traded, and the datetime that all final prices will be set, i.e. the fixing date - relevant for `forwards` only. Note: after this point, there is no more ability to exit the trade or change its economics. Null for `spot` trades.
      - `bank_fee` string, nullable — An optional field that clients can use to specify the fee taken by the banking partner (supports 2 decimal places). Null when not supplied at trade submission.
      - `spread_notional` string, nullable — The `spread_notional` is a field that shows the notional cost of the spread applied to the trade. This field is relevant for trades that are executed using the zerohash RFQ system. Returns null when no spread applied.
      - `spread_bps` string, nullable — The `spread_bps` is a field that shows the spread in basis points that was applied to the trade. This field is relevant for trades that are executed using the zerohash RFQ system. Returns null when no spread applied.
      - `issuer_fee_rate` string, nullable — The rate (in basis points) of the issuer fee applied to the trade. Returns null when no issuer fee applied.
      - `issuer_fee_amount` string, nullable — The notional amount of the issuer fee applied to the trade, denominated in the `quoted_currency`. Returns null when no issuer fee applied.
      - `issuer_fee_payor_type` 'null' | 'CUSTOMER' | 'PARTICIPANT' | 'PLATFORM', nullable — The type of payor that paid the issuer fee. Returns null when no issuer fee applied.
      - `origin` 'rest_api' | 'sdk' | 'secondary' | 'null', nullable — Specifies the method through which the movement was initiated, indicating whether it originated via our REST API, SDK, or Secondary Portal. Returns null for legacy/externally-reported trades.
      - `parties` object[]
        - `side` 'buy' | 'sell', required — The `side` of the trade for the participant - `buy` or `sell`
        - `participant_code` string, required — The `participant_code` of the trade party.
        - `asset` string, required — The asset being traded by the party.
        - `amount` string, required — The amount of the `asset` being traded by the party.
        - `liquidity_indicator` 'added' | 'removed', nullable — Indicates whether the party added or removed liquidity from the market. This field is relevant for orders that were executed on the zerohash CLOB.
        - `client_order_id` string, nullable — A unique ID for the trade, preferably a UUID.
        - `order_id` string, nullable — The unique identifier of the order generated on the zerohash CLOB.
        - `obligations_outstanding_timestamp` number, nullable — The unix timestamp in milliseconds when the party entered an `obligations_outstanding` settlement state. Null when the party has not yet entered this state.
        - `current_obligations_met_timestamp` number, nullable — The unix timestamp in milliseconds when the party met its current obligations. Null when obligations have not yet been met.
        - `settlement_state` 'null' | 'obligations_outstanding' | 'current_obligations_met' | 'settled' | 'defaulted' | 'counterparty_defaulted', nullable — The current settlement state for this party. Null when the trade is in `accepted` state and settlement has not yet been attempted.
        - `execution_id` string, nullable — The unique identifier for the execution of the trade. Null when the trade was not executed on the zerohash CLOB.
        - `settling` boolean — Indicates whether this party is responsible for settling its side of the trade at zerohash.
        - `account_label` string, nullable — The `account_label` that the party executed the trade on, if applicable. This field is relevant for platforms integrated using custom `account_label` for the zerohash participants. If not provided, the trade will be associated with the default (`general`) account for the participant.
        - `collateral_percentage` string, nullable — The percentage of collateral required for the trade. Null when collateralization does not apply.
        - `account_profile` string, nullable — The account profile associated with the executing account (e.g. `nonprefunded`). Null when the party is not tied to a profiled account.
        - `trader` string, nullable — Participant who placed the order on the trading zerohash trading venue. This field is relevant for orders that were executed on the zerohash CLOB using the Multi Tenant Accounts. Null when not applicable.
        - `zrn` string, nullable — The `urn` associated with the account that executed the trade, if applicable. This field is relevant for platforms integrated with the zerohash Multi Tenant Accounts. Returns null when the trade was not executed by a multi-tenant account.
        - `manual_order_indicator` 'null' | 'manual' | 'automated', nullable — Indicates if the order was submitted manually via a user interface or via an API / Automated solution. Null when not applicable.
      - `session_id` string — A session identifier to group filled orders that were executed in the same trading session on the zerohash CLOB. An empty string is returned when the trade was not executed on the zerohash CLOB.
      - `payment_processor` object, nullable — Identifier for the payment service processor that funded the trade, when applicable. Null when the trade was not funded via a payment processor.
        - `name` string — The name of the payment processor
        - `id` string — The unique identifier of the payment according to the PSP
      - `fees` DynamicFee[]
        - `name` string, required
        - `amount` string, required
      - `trade_id` string — zerohash generated unique identifier for the trade.
      - `network_fee_notional` string, nullable — Notional value of the quoted network fee, denominated in the `quoted_currency`. This field is relevant for trades that are coupled with a withdrawal of digital assets. Null for trades that do not carry a network fee.
      - `network_fee_quantity` string, nullable — The `quantity` of the network fee quoted, denominated in the native chain's asset associated with the underlying asset. For example, if the underlying asset is `USDC.ETH`, then this would be denominated in `ETH`. Null for trades that do not carry a network fee.
      - `total_notional` string — Total notional value of the executed quote, denominated in the `quoted_currency`.
      - `asset_cost_notional` string — The `asset_cost_notional` is a field that shows the notional cost of the asset being traded, denominated in the `quoted_currency`.

## Other responses

- `400` — Bad Request
- `403` — Forbidden
- `404` — Not Found
- `500` — Internal Server Error
- `503` — Service Unavailable

---

[API](https://skmtc.net/zerohash/apis/zerohash-api.md) · [All operations](https://skmtc.net/zerohash/apis/zerohash-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zerohash/zerohash-api/revisions/8b647d934363/schema)
