# Supported blockchain ledgers

The following tables list the blockchain ledgers and tokens supported by Ripple Custody, along with the types of operations supported for each.

Testnet names are subject to change, for example, when a reset occurs on the ledger. If a testnet is reset, the month-year of the reset is appended to the name, for example: `xrpl-testnet-april-2024`.

## Bitcoin-type ledgers

Bitcoin network events, August-September 2026
For the Ripple Custody position on the BIP-110 proposal and the anticipated eCash fork, including the eCash airdrop policy, see [Bitcoin network events: BIP-110 and eCash fork](/pt-br/products/custody/support/change-history/bitcoin-bip-110-ecash-fork).

The following table gives an overview of the supported networks and operations for Bitcoin-type ledgers in Ripple Custody.

| Ledger | Symbol | Networks | Send/Receive | Stake | Smart Contract Calls | Cancel/Replace Transaction | Empty Account | Send to Multiple Destinations |
|  --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Bitcoin | BTC | Mainnet / Testnet3 | Yes | N/A | N/A | Yes | Yes | Yes |
| Bitcoin Cash | BCH | Mainnet / Testnet | Yes | N/A | N/A | Yes | Yes | Yes |
| Litecoin | LTC | Mainnet / Testnet | Yes | N/A | N/A | Yes | Yes | Yes |
| Dogecoin | DOGE | Mainnet / Testnet | Yes | N/A | N/A | Yes | Yes | Yes |
| Dash | DASH | Mainnet / Testnet | Yes | N/A | N/A | Yes | Yes | Yes |


Important
In the case of Bitcoin-type ledgers, Ripple Custody does not support transactions where the destination is a pay-to-taproot (P2TR) address.

## Ethereum Virtual Machine (EVM) ledgers

The following table gives an overview of the supported networks and operations for EVM ledgers in Ripple Custody.

| Ledger | Symbol | Networks | Send/Receive | Stake | Smart Contract Calls | Cancel/Replace Transaction | Empty Account | Send to Multiple Destinations |
|  --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Arbitrum | ARB | Mainnet / Sepolia | Yes | N/A | Yes | Yes | Yes ** | No |
| Arc | USDC | Mainnet / Testnet | Yes | N/A | Yes | Yes | Yes ** | No |
| Avalanche C-Chain | AVAX | Mainnet / Fuji | Yes | N/A | Yes | Yes | Yes ** | No |
| Base | ETH | Mainnet / Sepolia | Yes | N/A | Yes | Yes | Yes ** | No |
| Binance Smart Chain | BNB | Mainnet / Testnet | Yes | N/A | Yes | Yes | Yes ** | No |
| Celo | CELO | Mainnet | Yes | N/A | Yes | Yes | Yes ** | No |
| Ethereum | ETH | Mainnet / Holesky / Sepolia | Yes | N/A | Yes | Yes | Yes** | No |
| Linea | ETH | Mainnet | Yes | N/A | Yes | Yes | Yes ** | No |
| Optimism | OP | Mainnet / Sepolia | Yes | N/A | Yes | Yes | Yes ** | No |
| Polygon | MATIC | Mainnet / Amoy | Yes | N/A | Yes | Yes | Yes ** | No |
| Scroll | ETH | Mainnet | Yes | N/A | Yes | Yes | Yes ** | No |
| Sei | SEI | Mainnet | Yes | N/A | Yes | Yes | Yes ** | No |


Notes:

- For Ethereum and other EVM ledgers, all assets that follow the ERC-20, ERC-721, and ERC-1155 (or chain-equivalent) standard specifications are supported.
- ERC-20 tokens must implement the `IERC20Metadata` interface — that is, the contract must expose the `name()`, `symbol()`, and `decimals()` methods. Contracts that omit any of these methods are not supported. This applies to all EVM ledgers. See [ERC-20 metadata requirement](#erc-20-metadata-requirement) for details.
- Wallet emptying is possible for native coin transfers, by calculating the expected fee and subtracting it from the sent amount.
- On Arc, USDC is the native currency and pays for gas. Arc also exposes the same USDC balance through an optional ERC-20 interface contract at `0x3600000000000000000000000000000000000000`. The native balance uses 18 decimals, and the ERC-20 interface uses 6 decimals. Both represent one balance, not two assets. For more information, see [Arc gas and fees](https://docs.arc.io/arc/references/gas-and-fees).
- For the payloads required to add these EVM ledgers, see [Dynamic ledger payloads](/pt-br/products/custody/accounts-and-assets/blockchains/dynamic-ledgers-payloads).


## Other ledgers

The following table gives an overview of the supported networks and operations for other ledgers in Ripple Custody.

| Ledger | Symbol | Networks | Send/Receive | Stake | Smart Contract Calls | Cancel/Replace Transaction | Empty Account | Send to Multiple Destinations |
|  --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Algorand | ALGO | Mainnet / Testnet | Yes | N/A | N/A | No | No | No |
| Canton | CC | MainNet / TestNet / DevNet | Yes | N/A | No | No | No | No |
| Cardano | ADA | Mainnet / Preprod | Yes | Yes | N/A | No | Yes | Yes |
| Hedera | HBAR | Mainnet / Testnet Jan 2024 | Yes | N/A | N/A | No | No | No |
| Polkadot | DOT | Mainnet / Westend | Yes | Yes | N/A | No | No | No |
| Solana | SOL | Mainnet / Devnet | Yes | No | N/A | No | No | Yes |
| Stellar | XLM | Mainnet / Testnet Sept 2024 | Yes | N/A | N/A | No | No | No |
| Sui | SUI | Mainnet / Testnet | Yes | No | No | No | No | No |
| Tezos | XTZ | Mainnet / Ithaca | Yes | Yes | Yes (with limitations) | No | No | No |
| Tron | TRX | Mainnet / Shasta | Yes | No | N/A | No | No | No |
| XRPL | XRP | Mainnet / Testnet Aug 2024 | Yes | N/A | N/A | No | No | No |


Notes:

- For Canton ledgers, Canton Coin and CIP-56 tokens published through the DA Registry are supported, starting in version 1.43. For more information, see [Canton Network](/pt-br/products/custody/accounts-and-assets/blockchains/canton).
- For Hedera ledgers, fungible and non-fungible tokens are supported.
- For Solana ledgers, SPL and Token-2022 fungible tokens are supported. To sign Solana transactions from a cold vault, see [Set up Solana durable nonce accounts](/pt-br/products/custody/accounts-and-assets/accounts/ledger-specific-settings/solana-api).
- For Tron ledgers, TRC-20 fungible tokens are supported.
- For XRPL ledgers, fungible tokens are supported.
- For Sui ledgers, native SUI and fungible Sui coins are supported, including regulated coins, starting in version 1.43. Manage Sui through the API only. For more information, see [Sui](/pt-br/products/custody/accounts-and-assets/blockchains/sui).


## Ledger types

Every ledger in Ripple Custody has a ledger type, which is the `type` value in its ledger record. Ledgers that share a protocol share a type. For example, a Litecoin or Dogecoin ledger has the type `Bitcoin`, and every EVM ledger has the type `Ethereum`. Ledger records and transactions report this type, not the network name.

| Ledger type | Ledgers |
|  --- | --- |
| `Algorand` | Algorand |
| `Bitcoin` | Bitcoin, Bitcoin Cash, Dash, Dogecoin, Litecoin |
| `Canton` | Canton |
| `Cardano` | Cardano |
| `Ethereum` | Arbitrum, Arc, Avalanche C-Chain, Base, Binance Smart Chain, Celo, Ethereum, Linea, Optimism, Polygon, Scroll, Sei, Soneium |
| `Hedera` | Hedera |
| `Solana` | Solana |
| `Stellar` | Stellar |
| `Substrate` | Polkadot Asset Hub, Westend Asset Hub |
| `Sui` | Sui |
| `Tezos` | Tezos |
| `Tron` | Tron |
| `XRPL` | XRP Ledger |


For the full ledger record of each network, see [Dynamic ledger payloads](/pt-br/products/custody/accounts-and-assets/blockchains/dynamic-ledgers-payloads).

## Currency details by ledger

The following table gives an overview of native currencies by ledger, with the number of decimal places the currency is divisible by to arrive at its smallest denomination. The currencies listed apply to the ledger's mainnet.

Disclaimer
This list is given for guidance only, and may be subject to change. You must check the latest ledger and network documentation for up-to-date information.

| Ledger | Currency | Smallest denomination | Decimal places |
|  --- | --- | --- | --- |
| Algorand | ALGO | MicroAlgo | 6 |
| Bitcoin | BTC | Satoshi | 8 |
| Canton | CC | Smallest unit (10-10 CC) | 10 |
| Cardano | ADA | Lovelace | 6 |
| Ethereum | ETH | Wei | 18 |
| Hedera | HBAR | Tinybar | 8 |
| Polkadot | DOT | Planck | 10 |
| Stellar | XLM | Stroop | 7 |
| Sui | SUI | MIST | 9 |
| Solana | SOL | Lamport | 9 |
| Tezos | XTZ | Microtez | 6 |
| Tron | TRX | Sun | 6 |
| XRPL | XRP | Drop | 6 |


## Address formats by ledger

Ripple Custody checks that an address matches the selected ledger's format in two places, through two separate validations:

- **Transaction-order destinations** of type `Address`, on every supported ledger. An invalid address is rejected; a dry run returns a failure with `hint: "InvalidDestination"`, `reason: "Invalid address"`, and `type: "Failure"`. See [Send assets with the API](/pt-br/products/custody/transactions/send-and-receive/send-assets-api).
- **Endpoint creation and update**, starting in version 1.41, on EVM ledgers, Solana, Stellar, Tron, and XRPL only. An invalid address is refused at submission with an HTTP 400 response and `reason: "InvalidEndpointAddressError"`; a dry run returns the failure in the `errors` array, for example `"The provided address (...) does not match the expected format for a <ledger> address."`. Endpoints on other ledgers are accepted without address validation. See [Manage endpoints](/pt-br/products/custody/accounts-and-assets/endpoints/manage-endpoints#register-an-endpoint-with-the-api).


Where a ledger accepts more than one valid address format, Ripple Custody accepts all of them. Use the formats below to prepare a valid address and to diagnose a rejection.

| Ledger | Accepted address format |
|  --- | --- |
| Ethereum and EVM networks | A 20-byte hexadecimal address: 40 hexadecimal characters, with or without the `0x` prefix. Case-insensitive. Ripple Custody accepts EIP-55 mixed-case addresses but doesn't verify the checksum. |
| XRP Ledger | A classic address that starts with `r`, in Base58Check encoding with a verified checksum. Ripple Custody doesn't accept X-addresses. To specify a destination tag, use the `destinationTag` field. |
| Stellar | A public key in StrKey encoding that starts with `G`: 56 characters, with a verified checksum. Ripple Custody doesn't accept muxed addresses (`M...`) or contract addresses (`C...`). To specify a memo, use the `memo` field. |
| Sui | `0x` followed by 64 hexadecimal characters: a 32-byte address, 66 characters in total. |
| Canton | A party ID in the form `<hint>::<fingerprint>`, for example `c::1220...`. Parties that Ripple Custody creates use the hint `c`. The receiver party must exist on the network. |
| Solana | A Base58-encoded 32-byte public key: 32 to 44 characters. For SPL and Token-2022 transfers, supply the wallet address. Ripple Custody derives the token account automatically. |
| Tron | A Base58Check address that starts with `T`: 34 characters, case-sensitive, with a verified checksum. Ripple Custody also accepts the bare hexadecimal form, 42 hexadecimal characters with the `41` network prefix and no `0x`, and returns it normalized to the Base58 address. Ripple Custody rejects a `0x`-prefixed hexadecimal address. |


## ERC-20 metadata requirement

Important
ERC-20 tokens are only supported if they implement the [`IERC20Metadata`](https://docs.openzeppelin.com/contracts/api/token/ERC20#IERC20Metadata) interface.

The ERC-20 token contract must expose all three of the following methods:

| Method | Description |
|  --- | --- |
| `name()` | Returns the name of the token (e.g., "USD Coin"). |
| `symbol()` | Returns the ticker symbol (e.g., "USDC"). |
| `decimals()` | Returns the number of decimal places (e.g., 6). |


These methods were optional in the original [EIP-20](https://eips.ethereum.org/EIPS/eip-20) specification. Since OpenZeppelin Contracts 4.x, they are defined in the `IERC20Metadata` interface and are implemented by virtually all modern tokens.

Contracts deployed before the `IERC20Metadata` standard that omit one or more of these methods are not supported. If such a token is sent to a Ripple Custody managed address, the system will not emit detected or confirmed events for it and the token will not appear in the platform.

**Expected behavior for non-compliant tokens:**

- No `detected` or `confirmed` events are emitted.
- The token does not appear in account balances or transaction history.
- No manual intervention or on-call action is required — the token is silently ignored.


This requirement applies to all EVM-compatible ledgers (Ethereum, Polygon, Arbitrum, Arc, Avalanche C-Chain, Base, Binance Smart Chain, Celo, Linea, Optimism, Scroll, and Sei).

## Limitations

The supported blockchain ledgers have the following limitations:

- Solana transactions reference a short-lived recent blockhash, so signing from a cold vault requires a durable nonce account owned by the cold vault account. A hot vault account can create one and delegate the nonce authority to the cold vault account. See [Set up Solana durable nonce accounts](/pt-br/products/custody/accounts-and-assets/accounts/ledger-specific-settings/solana-api).
- EVM ledgers require either Geth nodes with traces enabled, or BESU nodes.
- Sending BTC to Taproot addresses is not supported.