# Allowlist tokens

Allowlisting tokens approves them for use in Ripple Custody. Use the `v0_ValidateTickers` intent to allowlist one or more tokens. Allowlisted tokens become visible in the UI and can be used in transfer orders.

## How it works

When you allowlist a token:

1. The token's `validationStatus` changes from `NonValidated` to `Validated`
2. The token's `lock` status remains `Unlocked`
3. The token becomes visible in standard UI views
4. The token can be used in transfer orders


## Prerequisites

Before allowlisting tokens, you need the following:

| Prerequisite | Additional information |
|  --- | --- |
| Token details including ID and ledger | [View tokens](/products/custody/v1.36/accounts-and-assets/tokenization/token-management/api/view-tokens) |
| API authentication | [Authenticate API requests](/products/custody/v1.36/identity-and-access/authentication/authenticate-api-requests) |
| A new intent ID in UUID format |  |


## Allowlist tokens

To allowlist tokens, follow the steps in [Manage intents and approvals](/products/custody/v1.36/governance/intents/manage-intents-and-approvals), with a payload similar to the following example.

### Payload example


```json
{
  "payload": {
    "tickers": [
      {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
        "ledgerId": "ethereum-mainnet",
        "kind": "Contract",
        "name": "USD Coin",
        "decimals": 6,
        "symbol": "USDC",
        "lock": "Unlocked",
        "ledgerDetails": {
          "properties": {
            "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
            "type": "ERC20"
          }
        },
        "customProperties": {}
      }
    ],
    "type": "v0_ValidateTickers"
  }
}
```

### Payload fields

| Field | Type | Required | Description |
|  --- | --- | --- | --- |
| `tickers` | array | Yes | Array of tokens to allowlist |
| `tickers[].id` | UUID | Yes | Token ID from [Get ticker](/products/custody/v1.36/reference/api/openapi/tickers/getticker) |
| `tickers[].ledgerId` | string | Yes | Ledger identifier |
| `tickers[].kind` | string | Yes | `Native` or `Contract` |
| `tickers[].name` | string | Yes | Token display name |
| `tickers[].decimals` | integer | Yes | Decimal precision |
| `tickers[].symbol` | string | Yes | Token ticker symbol |
| `tickers[].lock` | string | Yes | Set to `Unlocked` for allowlisting |
| `tickers[].ledgerDetails` | object | Yes | Ledger-specific token details |
| `tickers[].customProperties` | object | Yes | Custom string metadata. Use `{}` when empty. |
| `type` | string | Yes | Must be `v0_ValidateTickers` |


## Bulk allowlisting

You can allowlist multiple tokens in a single intent by including multiple objects in the `tickers` array. This is useful when reviewing a batch of unclassified tokens.


```json
{
  "payload": {
    "tickers": [
      {
        "id": "token-1-uuid",
        "ledgerId": "ethereum-mainnet",
        "kind": "Contract",
        "name": "Token One",
        "decimals": 18,
        "symbol": "TK1",
        "lock": "Unlocked",
        "ledgerDetails": { "properties": { "address": "0x...", "type": "ERC20" } },
        "customProperties": {}
      },
      {
        "id": "token-2-uuid",
        "ledgerId": "ethereum-mainnet",
        "kind": "Contract",
        "name": "Token Two",
        "decimals": 18,
        "symbol": "TK2",
        "lock": "Unlocked",
        "ledgerDetails": { "properties": { "address": "0x...", "type": "ERC20" } },
        "customProperties": {}
      }
    ],
    "type": "v0_ValidateTickers"
  }
}
```

The tokens are allowlisted when the intent is successfully approved and executed. You can now use these tokens in transfer orders.

## Verify the result

After the intent is executed, verify the tokens are allowlisted:


```http
GET /v1/tickers?validationStatus=Validated&lock=Unlocked
```

See [List tickers](/products/custody/v1.36/reference/api/openapi/tickers/gettickers) for the complete API reference.

## Related topics

- [Token Management concepts](/products/custody/v1.36/accounts-and-assets/tokenization/token-management)
- [View tokens](/products/custody/v1.36/accounts-and-assets/tokenization/token-management/api/view-tokens)
- [Denylist tokens](/products/custody/v1.36/accounts-and-assets/tokenization/token-management/api/denylist-token)
- [Manage intents and approvals](/products/custody/v1.36/governance/intents/manage-intents-and-approvals)
- [API reference: List tickers](/products/custody/v1.36/reference/api/openapi/tickers/gettickers)