# 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.34/api/accounting-entities/token-management/view) |
| API authentication | [Authentication](/products/custody/v1.34/api/authentication) |
| A new intent ID in UUID format |  |


## Allowlist tokens

To allowlist tokens, follow the steps in [Request a change with an intent](/products/custody/v1.34/resources/tutorials/intent), 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"
          }
        }
      }
    ],
    "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](https://docs.ripple.com/products/custody/api/reference/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 |
| `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" } }
      },
      {
        "id": "token-2-uuid",
        "ledgerId": "ethereum-mainnet",
        "kind": "Contract",
        "name": "Token Two",
        "decimals": 18,
        "symbol": "TK2",
        "lock": "Unlocked",
        "ledgerDetails": { "properties": { "address": "0x...", "type": "ERC20" } }
      }
    ],
    "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](https://docs.ripple.com/products/custody/api/reference/openapi/tickers/gettickers) for the complete API reference.

## Related topics

- [Token Management concepts](/products/custody/v1.34/concepts/token-management)
- [View tokens](/products/custody/v1.34/api/accounting-entities/token-management/view)
- [Denylist tokens](/products/custody/v1.34/api/accounting-entities/token-management/denylist)
- [Request a change with an intent](/products/custody/v1.34/resources/tutorials/intent)
- [API reference: List tickers](https://docs.ripple.com/products/custody/api/reference/openapi/tickers/gettickers)