> ## Documentation Index
> Fetch the complete documentation index at: https://developers.uqpay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Travel Rule compliance

> Provide beneficiary and originator information with meta_data — field rules, conditional requirements, and reference data lookups.

[Stablecoin Account API Publisher Disclaimer](/stablecoin-account/v1.6/guide/stablecoin-account-api-publisher-disclaimer)

The FATF Travel Rule requires identifying the counterparty of a crypto transfer in certain cases. In the Stablecoin Account API, that information travels in one object — `meta_data` — used in three places:

* [Create Address Book](/stablecoin-account/v1.6/api-reference/create-address-book) and [Update Address Book](/stablecoin-account/v1.6/api-reference/update-address-book) — describing the **beneficiary** of a withdrawal destination.
* [Submit Deposit Sender Travel Rule](/stablecoin-account/v1.6/api-reference/create-deposit-sender) — describing the **originator** of an incoming deposit.

## When `meta_data` is required

`meta_data` is optional at the API level, but must be provided (and pass validation) when any of these apply:

| Scenario                                                            | Why                                                                                                                                       |
| ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| The address belongs to a third party (`address_party: third_party`) | Beneficiary identity is required                                                                                                          |
| The wallet is hosted by an exchange (`wallet_type: hosted`)         | The custodian VASP must be identified                                                                                                     |
| The address is a Binance-routed withdrawal destination              | The withdrawal is rejected until the address book entry carries Travel Rule data (error: `missing travel_rule_data for binance withdraw`) |
| A deposit arrives with `need_travel_rule: true`                     | The deposit is held until originator data is submitted                                                                                    |

Once you provide `meta_data`, its fields are validated — a provided-but-invalid object fails the request.

## Field reference

Top level — both fields are required whenever `meta_data` is present:

| Field                     | Type   | Values                       | Description                                                                                                        |
| ------------------------- | ------ | ---------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| `wallet_type`             | string | `hosted`, `unhosted`         | `hosted` for a custodial/exchange wallet (requires VASP details); `unhosted` for a self-custody wallet             |
| `address_party`           | string | `first_party`, `third_party` | `first_party` when the address belongs to the account holder; `third_party` when it belongs to another beneficiary |
| `beneficiary_information` | object | —                            | Required when `address_party` is `third_party` or `wallet_type` is `hosted`                                        |

Inside `beneficiary_information`, requirements depend on the entity and wallet type:

| Field                     | Required when                                           | Description                                                                                                                      |
| ------------------------- | ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `entity_type`             | Third party                                             | `individual` or `corporation`                                                                                                    |
| `first_name`, `last_name` | Third party and `entity_type: individual`               | Beneficiary given and family name                                                                                                |
| `company_name`            | Third party and `entity_type: corporation`              | Beneficiary company name                                                                                                         |
| `country`                 | Third party                                             | ISO 3166-1 alpha-2, lowercase — use a `countryCode` from [List Countries](/stablecoin-account/v1.6/api-reference/list-countries) |
| `city`                    | Third party                                             | Use a `regionName` from [List Regions](/stablecoin-account/v1.6/api-reference/list-regions)                                      |
| `vasp_id`                 | Hosted wallet (at least one of `vasp_id` / `vasp_name`) | Use an `identifier` from [List VASPs](/stablecoin-account/v1.6/api-reference/list-vasps)                                         |
| `vasp_name`               | Hosted wallet                                           | The VASP's name. If the exchange is not in the VASP list, put its name here and omit `vasp_id`                                   |
| `id_type`, `id_primary`   | Optional                                                | Beneficiary identity document type and number                                                                                    |

Typical validation errors: `invalid wallet_type`, `invalid address_party`, `invalid entity_type`, `individual third party requires first_name and last_name`, `corporation third party requires company_name`, `third party requires country and city`, `hosted wallet requires vasp_id or vasp_name`.

## Examples

An individual third-party beneficiary at an exchange (hosted):

```json theme={null}
{
  "wallet_type": "hosted",
  "address_party": "third_party",
  "beneficiary_information": {
    "entity_type": "individual",
    "first_name": "John",
    "last_name": "Doe",
    "country": "sg",
    "city": "Singapore",
    "vasp_id": "I1QNLP",
    "vasp_name": "Binance"
  }
}
```

A corporate third party using a self-custody wallet (unhosted):

```json theme={null}
{
  "wallet_type": "unhosted",
  "address_party": "third_party",
  "beneficiary_information": {
    "entity_type": "corporation",
    "company_name": "Acme Pte Ltd",
    "country": "sg",
    "city": "Singapore"
  }
}
```

The account holder's own self-custody wallet — beneficiary information can be omitted:

```json theme={null}
{
  "wallet_type": "unhosted",
  "address_party": "first_party"
}
```

## Look up reference data

Three read-only endpoints supply the values that `beneficiary_information` fields must come from:

<Steps>
  ### List VASPs

  [List VASPs](/stablecoin-account/v1.6/api-reference/list-vasps) returns the directory of Virtual Asset Service Providers. Search with `q` (matches `vaspName` and `identifier`) and cap results with `limit`. Use the `identifier` value as `vasp_id`.

  ```bash theme={null}
  curl "https://api-sandbox.uqpaytech.com/api/v1/ramp/wallet_address/vasps?q=binance&limit=10" \
    -H "x-auth-token: YOUR_API_TOKEN"
  ```

  ### List countries

  [List Countries](/stablecoin-account/v1.6/api-reference/list-countries) returns only currently selectable countries as `countryCode` (ISO alpha-2, lowercase) and `countryName` pairs. Use `countryCode` as `country`.

  ### List regions

  [List Regions](/stablecoin-account/v1.6/api-reference/list-regions) takes a required `country` code and returns that country's regions; use a `regionName` as `city`. Countries without regions return an empty array.
</Steps>

## Related

* [Address book](/stablecoin-account/v1.6/guide/address-book) — where withdrawal-side `meta_data` lives
* [Travel Rule for deposits](/stablecoin-account/v1.6/guide/travel-rule-for-deposits) — the originator-side flow
* [Send withdrawals](/stablecoin-account/v1.6/guide/send-withdrawals)
* [List VASPs API](/stablecoin-account/v1.6/api-reference/list-vasps)
