# Register assets

You can register different asset types for different ledgers.

After you register the asset, to finalize the registration, you need to validate the asset, as described in [Validate assets](/products/custody/v1.26/api/accounting-entities/asset/validate).

New asset registration can result in the allocation of a specific reserved amount on the account, depending on the ledger. For example, XRPL asset registration creates a reserved amount of 2 XRP. This amount is released when the asset is deleted.

For more information on the reserve amount, see [Check account balances](/products/custody/v1.26/api/accounting-entities/account/balances#check-account-balances).

## Prerequisites

Before you register your asset, you need the following:

| Prerequisite | Additional information |
|  --- | --- |
| The ID of the ledger | [List ledgers](/products/custody/v1.26/api/reference/openapi/ledgers/getledgers) |
| The following new IDs, in a standard UUID format:An asset IDAn intent ID |  |


## Register an asset

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.26/resources/tutorials/intent) tutorial.

To register a new asset, follow the steps in [Request a change with an intent](/products/custody/v1.26/resources/tutorials/intent), with a payload similar to one of the following examples.

After you register the asset, to finalize the registration, you need to validate the asset. For more details, see [Validate assets](/products/custody/v1.26/api/accounting-entities/asset/validate).

### Payload example - native currency ticker


```json
"payload": {
   "ledgerId": "dash-testnet",
   "kind": "Native",
   "name": "Dash test",
   "decimals": 8,
   "symbol": "tDash",
   "ledgerDetails": {
      "properties": {
         "type": "Native"
      }
      "type": "Bitcoin"
   }
   "type": "v0_CreateTicker"
}
```

### Payload example - smart contract

Smart contract assets are only available for Ethereum ledgers.


```json
"payload": {
   "ledgerId": "polygon-testnet-amoy",
   "kind": "Contract",
   "name": "Immobilienanleihe Berlin-Mitte",
   "decimals": null,
   "symbol": "KWP-4",
   "ledgerDetails": {
      "properties": {
         "address": "0x176ffec00d31ff2989031b6646ab852e6fba2315",
         "type": "ERC20"
      }
      "type": "Ethereum"
   }
   "type": "v0_CreateTicker"
}
```

### Payload example - token

Token assets are only available for some ledgers.

The following payload shows an example Hedera fungible token:


```json
"payload": {
   "ledgerId": "hedera-testnet-january-2024",
   "kind": "Token",
   "name": "HC-TokenTest281",
   "decimals": 0,
   "symbol": "HC-281",
   "ledgerDetails": {
      "properties": {
         "id": "0.0.3635456",
         "type": "FungibleToken"
      }
      "type": "Hedera"
   }
   "type": "v0_CreateTicker"
}
```

The following payload shows an example XRPL fungible token:


```json
"payload": {
   "ledgerId": "xrpl",
   "kind": "Token",
   "name": "USD",
   "decimals": 81,
   "symbol": "USD",
   "ledgerDetails": {
      "properties": {
         "type": "FungibleToken",
            "issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",
            "currencyCode": "USD",
         },
         "type": "XRPL"
   },
   "type": "v0_CreateTicker"
}
```

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

| Field | Description |
|  --- | --- |
| `type` | `v0_CreateTicker` |
| `ledgerId` | ID of the ledger the ticker belongs to. |
| `kind` | The kind of asset: `Native`: The native currency for the ledger.`Contract`: Smart contract`Token`: Fungible or non-fungible token. |
| `decimals` | Number of decimals used. Only used for native currency tickers and tokens associated with an amount. For XRPL fungible tokens, this value is always `81`. For more information, see [XRPL token decimals and amounts](/products/custody/v1.26/api/accounting/tokens/xrpl#xrpl-token-decimals-and-amounts). |
| `ledgerDetails.properties` | Ledger and asset-specific details. For example, for non-fungible tokens on Hedera, you need to add a serial number. |
| `ledgerDetails.type` | Blockchain ledger type, used to determine valid values for `kind`, `decimals`, and the `ledgerDetails.properties` fields. |


The asset is registered when the ticker creation intent is successfully approved and executed.