# Reveal Tezos accounts

Before you can send assets from a new Tezos account, you need to reveal the account public key on chain to allow validators to check transactions.

Since the reveal operation incurs some fees, you can receive funds first before performing the operation.

[Learn more about receiving assets](/products/custody/v1.19/api/accounting/receive-assets)

## Prerequisites

To reveal your Tezos account, you need the following:

| Prerequisite | Additional information |
|  --- | --- |
| The account ID of the account to reveal | [View account details](/products/custody/v1.19/api/accounting-entities/account/view) |
| Enough funds in the account to cover the transaction fees and the amount | [Check account balances](/products/custody/v1.19/api/accounting-entities/account/balances#check-account-balances) |
| The following new IDs, in a standard UUID format:A transaction order IDAn intent ID |  |


## Reveal the public key

System change process
All new requests to change the system state follow the same process. To familiarize yourself with this process first, follow the [Request a change with an intent](/products/custody/v1.19/resources/tutorials/intent) tutorial.

To reveal a Tezos account public key:

1. Prepare the request body in the standard intent proposal format, with a `payload` block similar to the example shown in [Payload example](#payload-example). For more information, see [Propose an intent request body](/products/custody/v1.19/api/reference/intent-structure#propose-an-intent-request-body).
2. Call the [Perform a dry run for an intent](/products/custody/v1.19/api/reference/openapi/intents/intentdryrun) operation, with the `request` field excluded. For more information, see [Dry run intents](/products/custody/v1.19/api/get-started/key-operations/update/dry-run).
This step is optional, but highly recommended. A dry run can reveal errors or unintended consequences of the intent, as well as estimate the fees incurred by the transaction.
You can repeat this step more than once to obtain the required result.
3. Sign the request body and call the [Perform a dry run for an intent](/products/custody/v1.19/api/reference/openapi/intents/createintent) operation. For more information, see [Propose an intent to create an entity](/products/custody/v1.19/api/get-started/key-operations/update/intent-proposal#propose-an-intent-to-create-an-entity).
4. Check the update. For more information, see [Check updates](/products/custody/v1.19/api/get-started/key-operations/update/check).


When the transaction order is successfully approved, Ripple Custody does the following:

- Creates a transaction, to reveal the account public key on the blockchain.
- Creates one or more transfers, to represent the separate amounts associated with the transaction, such as the cryptocurrency amount and the fees.


### Payload example


```json
"payload": {
    "id": "953d75b2-e384-46e9-8a72-a1ce753a50e2",
    "accountId": "953d75b2-e384-46e9-8a72-a1ce753a50e2",
    "parameters": {
        "operation": {
            "type": "Reveal"
        },
        "feeStrategy": {
            "priority": "Low",
            "type": "Priority"
        },
        "maximumFee": "4000",
        "type": "Tezos"
    },
    "description": "",
    "customProperties": {},
    "type": "v0_CreateTransactionOrder"
}
```

Fields of the `payload` block to note are as follows:

| Field | Description |
|  --- | --- |
| `accountId` | Internal account ID of the Tezos account to reveal. |
| `operation.type` | `Reveal` |
| `parameters.feeStrategy` | The fee strategy to use for the transaction. For more information, see [Fee strategy and maximum fee](/products/custody/v1.19/overview/blockchain/transactions/transaction-fees#fee-strategy-and-maximum-fee). |
| `parameters.maximumFee` | The maximum fee, in micro tez. For more information, see [Fee strategy and maximum fee](/products/custody/v1.19/overview/blockchain/transactions/transaction-fees#fee-strategy-and-maximum-fee). |
| `type` | `v0_CreateTransactionOrder` |