Bridge Travel Rule API
The Travel Rule API from Bridge — 1 operation(s) for travel rule.
The Travel Rule API from Bridge — 1 operation(s) for travel rule.
openapi: 3.0.2
info:
title: Bridge API Keys Travel Rule API
description: APIs to move into, out of, and between any form of a dollar
version: '1'
servers:
- url: https://api.bridge.xyz/v0
description: The base path for all resources
security:
- ApiKey: []
tags:
- name: Travel Rule
paths:
/travel_rule_data/{id}:
post:
summary: Submit travel rule data.
tags:
- Travel Rule
description: 'Use this endpoint to submit originator, beneficiary, and transfer purpose data for travel rule compliance.
'
parameters:
- $ref: '#/components/parameters/IdempotencyKeyParameter'
- name: id
in: path
required: true
description: The ID of the resource to associate with this Travel Rule payload. Supported IDs include transfer IDs, virtual account IDs, virtual account event IDs, liquidation address IDs, bridge wallet event IDs, and drain IDs.
schema:
type: string
requestBody:
description: The Travel Rule payload to associate with the specified resource.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TravelRuleData'
responses:
'200':
description: Travel Rule data processed successfully
content:
application/json:
schema:
type: object
required:
- message
properties:
message:
type: string
description: Message indicating the status of the request.
examples:
TravelRuleDataProcessed:
summary: A successful Travel Rule submission
value:
message: Travel rule data processed successfully
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
'500':
$ref: '#/components/responses/UnexpectedError'
components:
schemas:
TravelRuleData:
type: object
description: Travel Rule data for a crypto movement. Send this on create or update when the same counterparty should apply to every future use of a reusable resource, or send the same payload with `POST /travel_rule_data/{id}` when it belongs to one specific movement.
properties:
originator:
description: The party sending the crypto.
allOf:
- $ref: '#/components/schemas/TravelRuleOriginator'
beneficiary:
description: The party receiving the crypto.
allOf:
- $ref: '#/components/schemas/TravelRuleBeneficiary'
example:
originator:
name: Jane Smith
address:
street_line_1: 123 Market St
street_line_2: null
city: San Francisco
state: CA
postal_code: '94105'
country: USA
identifying_information:
type: national_id
number: '1234567890'
issuing_country: USA
birth_date: '2000-01-31'
place_of_birth:
city: San Francisco
country: USA
wallet_type: self_custodied
wallet_attested_ownership_at: '2026-04-01T12:00:00Z'
beneficiary:
is_self: true
wallet_type: external
TravelRuleName:
type: string
description: Legal name of the originator or beneficiary. Usually omitted when `is_self` is `true`.
TravelRuleIsSelf:
type: boolean
description: Set to `true` when this party is the same person or business as the Bridge customer on the resource. When `true`, Bridge uses the customer's name and address on file instead of relying on `name` and `address` in this payload.
Error:
required:
- code
- message
properties:
code:
type: string
minLength: 1
maxLength: 256
message:
type: string
minLength: 1
maxLength: 512
source:
title: ErrorSource
required:
- location
- key
properties:
location:
type: string
enum:
- path
- query
- body
- header
key:
type: string
description: Comma separated names of the properties or parameters causing the error
TravelRuleWalletAttestedOwnershipAt:
type: string
format: date-time
description: Required when `wallet_type` is `self-custodied` or `hosted`. Must be a timestamp in the past indicating when wallet ownership was attested.
PlaceOfBirthInput:
type: object
description: 'Country (and optionally city) of birth. **EEA / BBSA in-scope customers:** supply when onboarding individuals or associated persons under the [EEA updated requirements](https://apidocs.bridge.xyz/platform/customers/customers/eea-updated-requirements#country-of-birth-and-city-of-birth). This is a sparse address — no street address. At least `country` should be present when the object is sent; `city` is recommended and will be required by EU law in 2027.
'
properties:
country:
type: string
minLength: 3
maxLength: 3
description: ISO 3166-1 alpha-3 country code for the place of birth.
city:
type: string
minLength: 1
description: City of birth (recommended for EEA).
TravelRuleAddress:
type: object
description: Address for travel rule submissions. All fields are optional to support partial address data (e.g. country-only).
properties:
street_line_1:
type: string
street_line_2:
type: string
city:
type: string
state:
type: string
description: ISO 3166-2 subdivision code.
postal_code:
type: string
country:
description: Three-letter alpha-3 country code as defined in the ISO 3166-1 spec.
type: string
minLength: 3
maxLength: 3
TravelRuleOriginator:
type: object
description: Travel Rule details for originator crypto movement.
properties:
is_self:
$ref: '#/components/schemas/TravelRuleIsSelf'
name:
$ref: '#/components/schemas/TravelRuleName'
address:
description: Mailing or legal address of the originator. Usually omitted when `is_self` is `true`.
allOf:
- $ref: '#/components/schemas/TravelRuleAddress'
wallet_type:
$ref: '#/components/schemas/TravelRuleWalletType'
wallet_attested_ownership_at:
$ref: '#/components/schemas/TravelRuleWalletAttestedOwnershipAt'
identifying_information:
allOf:
- $ref: '#/components/schemas/IdentifyingInformation'
description: 'List of identification objects for the originator. Do **not** include `image_front` or `image_back` fields in this context; those are not accepted in Travel Rule submissions.
'
birth_date:
type: string
description: Date of birth in format yyyy-mm-dd.
minLength: 10
maxLength: 10
place_of_birth:
$ref: '#/components/schemas/PlaceOfBirthInput'
legal_entity_identifier:
type: string
description: The Legal Entity Identifier (LEI) or equivalent (e.g. VAT number) of the originator. Provide this when the originator is a legal entity rather than an individual.
TravelRuleBeneficiary:
type: object
description: Travel Rule details for beneficiary crypto movement.
properties:
is_self:
$ref: '#/components/schemas/TravelRuleIsSelf'
name:
$ref: '#/components/schemas/TravelRuleName'
address:
description: Mailing or legal address of the beneficiary. Usually omitted when `is_self` is `true`.
allOf:
- $ref: '#/components/schemas/TravelRuleAddress'
wallet_type:
$ref: '#/components/schemas/TravelRuleWalletType'
wallet_attested_ownership_at:
$ref: '#/components/schemas/TravelRuleWalletAttestedOwnershipAt'
legal_entity_identifier:
type: string
description: The Legal Entity Identifier (LEI) or equivalent (e.g. VAT number) of the beneficiary. Provide this when the beneficiary is a legal entity rather than an individual.
TravelRuleWalletType:
type: string
description: Indicates the custody model for the wallet. Use `self_custodied` for customer-owned wallets (customer controls private keys), `hosted` for wallets managed by a developer or regulated entity on behalf of the customer, or `external` for wallets belonging to external exchanges or smart contracts.
enum:
- hosted
- external
- self_custodied
IdentifyingInformation:
writeOnly: true
type: array
title: Identification Information
items:
type: object
required:
- issuing_country
- type
properties:
type:
type: string
description: 'Tax identification number type or government-issued ID document type (see enum). Country-specific tax and national ID lists: [Individuals](https://apidocs.bridge.xyz/docs/individual-tax-identification-numbers-by-country), [Businesses](https://apidocs.bridge.xyz/docs/business-tax-identification-numbers-by-country).
**EEA / BBSA (policy in `eea_requirements.rb`):** In-scope individuals and UBOs need **both** a valid national-ID-type entry and a valid TIN per [EEA updated requirements](https://apidocs.bridge.xyz/platform/customers/customers/eea-updated-requirements). In-scope businesses need business registration **and** business tax ID types per country tables there. **TIN issuing country** must match residence (individuals) or incorporation (businesses). **Foreign tax** outside the incorporation country: set `has_foreign_tax_registration` on the business customer and add TIN objects per jurisdiction ([foreign tax / tax residency](https://apidocs.bridge.xyz/platform/customers/customers/eea-updated-requirements#tax-residency-status-foreign-tax-registry)).
'
enum:
- drivers_license
- matriculate_id
- military_id
- national_id
- passport
- permanent_residency_id
- state_or_provincial_id
- visa
- abn
- acn
- ahv
- ak
- aom
- arbn
- avs
- bc
- bce
- bin
- bir
- bp
- brn
- bsn
- bvn
- cc
- cdi
- cedula_juridica
- cf
- cif
- cin
- cipc
- cn
- cnp
- cnpj
- cpf
- cpr
- crc
- crib
- crn
- cro
- cui
- cuil
- curp
- cuit
- cvr
- edrpou
- ein
- embg
- emirates_id
- en
- fin
- fn
- gstin
- gui
- hetu
- hkid
- hn
- ic
- ico
- id
- id_broj
- idno
- idnp
- idnr
- if
- iin
- ik
- inn
- ird
- itin
- itr
- iva
- jmbg
- kbo
- kvk
- matricule
- mf
- mn
- ms
- mst
- nic
- nicn
- nie
- nif
- nin
- nino
- nip
- nipc
- nipt
- nit
- npwp
- nric
- nrn
- nrt
- ntn
- nuit
- nzbn
- oib
- orgnr
- other
- pan
- partita_iva
- pesel
- pib
- pin
- pk
- ppsn
- qid
- rc
- regon
- rfc
- ricn
- rif
- rn
- rnc
- rnokpp
- rp
- rrn
- rtn
- ruc
- rut
- si
- sin
- siren
- siret
- spi
- ssm
- ssn
- steuer_id
- strn
- tckn
- tfn
- tin
- tpin
- trn
- ucn
- uen
- uic
- uid
- usc
- ust_idnr
- utr
- vat
- vkn
- voen
- y_tunnus
issuing_country:
type: string
description: The ISO 3166-1 (three-character) country code that issued the provided document.
number:
type: string
description: The unique identifier of the document. Required if this document is being used as a tax identification number (e.g., you are providing a passport or national_id with no other identification).
description:
type: string
description: A description describing the provided document. This field is required when `other` is selected.
expiration:
type: string
description: The expiration date of the given document in yyyy-mm-dd format.
image_front:
type: string
description: 'This field is optionally accepted for tax_id types, but required for government_id types. Base64 encoded image* of the front side of the provided document, following the data-uri scheme i.e. data:image/[type];base64,[base_64_encoded_file_contents], with a minimum size of 200px x 200px \n\n*Maximum File Size: 15MB\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif
_Note: When combined with an `image_back`, the combined size of both images must not exceed 24MB._
'
image_back:
type: string
description: 'Base64 encoded image* of the back side of the provided document, following the data-uri scheme i.e. data:image/[type];base64,[base_64_encoded_file_contents], with a minimum size of 200px x 200px \n\n*Maximum File Size: 15MB\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif
_Note: When combined with an `image_front`, the combined size of both images must not exceed 24MB._
'
responses:
AuthenticationError:
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
MissingTokenError:
summary: No Api-Key header
description: The header may be missing or misspelled.
value:
code: required
location: header
name: Api-Key
message: Missing Api-Key header
InvalidTokenError:
summary: Invalid key in Api-Key header
value:
code: invalid
location: header
name: Api-Key
message: Invalid Api-Key header
NotFoundError:
description: No resource found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
NotFoundErrorExample:
summary: Invalid customer id
value:
code: Invalid
message: Unknown customer id
BadRequestError:
description: Request containing missing or invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
BadCustomerRequestErrorExample:
summary: Bad customer request
value:
code: bad_customer_request
message: fields missing from customer body.
name: first_name,ssn
UnexpectedError:
description: Unexpected error. User may try and send the request again.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
UnexpectedError:
summary: An unexpected error
value:
errors:
- code: unexpected
message: An expected error occurred, you may try again later
parameters:
IdempotencyKeyParameter:
in: header
name: Idempotency-Key
required: true
schema:
type: string
securitySchemes:
ApiKey:
type: apiKey
name: Api-Key
in: header