Travel Rule

🚧

The effective date of this field will be September 25, 2025. Failure to pass the relevant parameters before September 25, 2025 may cause the Transfer transaction to fail.

When you initiate an On-Ramp transfer (Fiat → Stablecoin) with a value exceeding USD 3,000, you are required to provide additional Travel Rule information in the destination object.


Field

Description

Allowed values

Required

residential_country_code

ISO 3166-1 alpha-2 code of the beneficiary’s residential country

Yes

residential_state

State/Province/Region of the beneficiary’s residence

Yes

residential_city

City of the beneficiary’s residence

Yes

_residential_address_1

Primary street address of the beneficiary_

Yes

residential_address_2

Secondary address details (e.g., apartment, suite, unit)

No

residential_postal_code

Postal/ZIP code of the beneficiary’s residence

Yes

beneficiary_type

Type of beneficiary

individual, company

Yes

beneficiary_dob

Date of birth of the beneficiary (YYYY-MM-DD)

No

beneficiary_id_doc_type

Type of identification document

when beneficiary_type: individual: ID_CARD, PASSPORT, DRIVERS, PAYMENT_SOURCE, BANK_CARD, OTHER

when beneficiary_type: company : COMPANY_DOC, TRANSPARENCY_REGISTRY_EXTRACT, POWER_OF_ATTORNEY

No

beneficiary_id_doc_country_code

Country code where the identification document was issued

No

beneficiary_id_doc_number

Identification document number

No

beneficiary_receiving_wallet_type

Receiving wallet type

personalWallet, thirdPartyCustodian, other

Yes

beneficiary_institution_name

Name of the wallet provider or institution (e.g., MetaMask)

Yes

Case 1: Transfer to third-party recipients

when is_self_transfer = false

curl --location --request POST 'https://harbor-sandbox.owlpay.com/api/v1/transfer' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'X-API-KEY: {{API_KEY}}' \
--header 'Idempotency-Key: {{Idempotency-Key}}' \
--data-raw '{
    ...,
    "destination": {
        ...,
        "is_self_transfer": false,
        "residential_country_code": "US",
        "residential_state": "DE",
        "residential_city": "Wilmington",
        "residential_address_1": "100 Market Street",
        "residential_address_2": "Suite 200",
        "residential_postal_code": "62704",
        "beneficiary_type": "individual",
        "beneficiary_dob": "1990-01-01",
        "beneficiary_id_doc_type": "PASSPORT",
        "beneficiary_id_doc_country_code": "US",
        "beneficiary_id_doc_number": "123456789",
        "beneficiary_receiving_wallet_type": "personalWallet",
        "beneficiary_institution_name": "MetaMask"
    }
}'

Case 2: Transfer to self

when is_self_transfer = false

curl --location --request POST 'https://harbor-sandbox.owlpay.com/api/v1/transfer' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'X-API-KEY: {{API_KEY}}' \
--header 'Idempotency-Key: {{Idempotency-Key}}' \
--data-raw '{
    ...,
    "destination": {
        ...,
        "is_self_transfer": true,
        "beneficiary_receiving_wallet_type": "personalWallet",
        "beneficiary_institution_name": "MetaMask"
    }
}'