# Restore tokens

Restoring a token returns it from the Denylisted state to the Allowlisted state. Use the `v0_UnlockTicker` intent to restore a blocked token.

## How it works

When you restore a token:

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


Restoring a token returns it directly to the Allowlisted state, not to Unclassified. This is because the token was previously validated before being denylisted.

## Prerequisites

Before restoring a token, you need the following:

| Prerequisite | Additional information |
|  --- | --- |
| Token ID and current revision | [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 |  |


## Restore a token

To restore a denylisted token, 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": {
    "type": "v0_UnlockTicker"
  },
  "reference": {
    "id": "ticker-uuid",
    "revision": 2
  }
}
```

### Payload fields

| Field | Type | Required | Description |
|  --- | --- | --- | --- |
| `payload.type` | string | Yes | Must be `v0_UnlockTicker` |
| `reference.id` | UUID | Yes | Token ID from [Get ticker](https://docs.ripple.com/products/custody/api/reference/openapi/tickers/getticker) |
| `reference.revision` | integer | Yes | Current token revision (from the ticker response) |


`v0_UnlockTicker` only supports one token per intent. To restore multiple tokens, submit individual intents for each token.

The token is restored when the intent is successfully approved and executed. The token is now visible in standard views and can be used in transfer orders.

## Verify the result

After the intent is executed, verify the token is restored to the Allowlisted state:


```http
GET /v1/tickers/{tickerId}
```

The response should show `validationStatus: Validated` and `lock: Unlocked`.

See [Get ticker](https://docs.ripple.com/products/custody/api/reference/openapi/tickers/getticker) 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)
- [Allowlist tokens](/products/custody/v1.34/api/accounting-entities/token-management/allowlist)
- [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)
- [API reference: Get ticker](https://docs.ripple.com/products/custody/api/reference/openapi/tickers/getticker)