---
title: "Submit Travel Rule information"
method: POST
path: "/travel-rule/submit"
tags: ["Travel Rule"]
---

# Submit Travel Rule information

`POST /travel-rule/submit`

## Request

- Base URL: `https://api.cert.zerohash.com`
- URL: `https://api.cert.zerohash.com/travel-rule/submit`
- Auth: API key in header `X-SCX-API-KEY` and API key in header `X-SCX-PASSPHRASE`

Submits Travel Rule information about the owner of a crypto address, either for a deposit (send `deposit_id`) or for a withdrawal address (send `address`). Requires an API key with `travel_rule` write permission. The caller must operate for `participant_code`. Requests are rate limited to 60 per minute per participant across all /travel-rule endpoints. A successful submission returns `200` with an empty body.

## Headers

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

## Request body

- PostTravelRuleSubmitBody: Travel Rule information for a deposit or a withdrawal address. - **Deposit mode:** send `deposit_id` and do not send `address`. - **Withdrawal mode:** send `address` and do not send `deposit_id`. Rules that depend on other fields: - `casp_did` is required when `wallet_type` is `hosted`, and must not be sent when it is `self_custody`. - In deposit mode, when `address_belongs_to` is `third_party`, send `individual_pii`/`business_pii` only when `wallet_type` is `self_custody`; it is optional when `wallet_type` is `hosted` (Exchange counterparty verification does not rely on it). - In withdrawal mode, when `address_belongs_to` is `third_party`, always send `individual_pii` for an `individual` owner or `business_pii` for a `business` owner, regardless of `wallet_type`. - When `address_belongs_to` is `zh_participant`, do not send `individual_pii` or `business_pii`. zerohash fills them in from the participant's KYC data. - `individual_pii` and `business_pii` cannot be sent together.
  - `participant_code` string, required: The participant the Travel Rule information is submitted for. 6 uppercase alphanumeric characters.
  - `address` string: The on-chain address the information applies to. Required in withdrawal mode and not allowed in deposit mode.
  - `deposit_id` string, uuid: The crypto deposit the information applies to. Sending it selects deposit mode. The deposit must belong to `participant_code`.
  - `address_belongs_to` 'zh_participant' | 'third_party', required: Whether the address belongs to the participant (`zh_participant`) or to someone else (`third_party`).
  - `address_owner_type` 'individual' | 'business', required: Whether the address owner is a person or a business.
  - `wallet_type` 'self_custody' | 'hosted', required: Whether the wallet is self-custodied or hosted by a VASP.
  - `casp_did` string: The `id` of the VASP hosting the wallet, from GET /travel-rule/vasps. Required when `wallet_type` is `hosted`, and not allowed when it is `self_custody`.
  - `individual_pii` TravelRuleIndividualPII: Identity of an individual owner. In deposit mode (`deposit_id` present), required when `address_owner_type` is `individual`, `address_belongs_to` is `third_party`, and `wallet_type` is `self_custody` — optional when `wallet_type` is `hosted`. In withdrawal mode (`address` present), required whenever `address_owner_type` is `individual` and `address_belongs_to` is `third_party`, regardless of `wallet_type`.
    - `full_name` string, required: Full legal name of the address owner.
    - `address` string: Residential address of the address owner.
    - `date_of_birth` string: Date of birth of the address owner, as `YYYY-MM-DD`.
    - `place_of_birth` string: Place of birth of the address owner.
    - `identification_number` string: Government-issued identification number of the address owner.
  - `business_pii` TravelRuleBusinessPII: Identity of a business owner. In deposit mode (`deposit_id` present), required when `address_owner_type` is `business`, `address_belongs_to` is `third_party`, and `wallet_type` is `self_custody` — optional when `wallet_type` is `hosted`. In withdrawal mode (`address` present), required whenever `address_owner_type` is `business` and `address_belongs_to` is `third_party`, regardless of `wallet_type`.
    - `legal_entity_name` string, required: Registered legal name of the business.
    - `legal_entity_identifier` string: Optional registration identifier of the business, such as an LEI or company registration number. Provide it when the business has one.
    - `legal_entity_address` string: Registered address of the business.
  - `wallet_proof_of_ownership` TravelRuleWalletProofOfOwnership: A document proving the owner controls the wallet. The decoded document must not exceed 10 MB.
    - `document` string, byte, required: The proof document, base64-encoded.
    - `mime` string, required: MIME type of the decoded document.

## Response `200`

Travel Rule information accepted. The response body is empty.

## Other responses

- `400`: Bad Request
- `403`: Forbidden. Returned when authentication fails, the caller does not operate for `participant_code`, or `deposit_id` does not belong to `participant_code`.
- `404`: Not Found
- `413`: `wallet_proof_of_ownership.document` is larger than 10 MB after decoding.
- `429`: Rate limit exceeded. Retry after the number of seconds in the `RateLimit-Reset` header.
- `500`: Internal Server Error
- `503`: Service Unavailable

## Changes

- **2026-11-03** `47cf70ae701c`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/zerohash/apis/zerohash-api/changes/travel-rule/submit/post.md)

---

[API](https://skmtc.dev/zerohash/apis/zerohash-api.md) - [All operations](https://skmtc.dev/zerohash/apis/zerohash-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zerohash/apis/zerohash-api/revisions/47cf70ae701c?raw)
