# Send assets

You can send assets from a Ripple Custody account to one of the following destinations:

- Other Ripple Custody accounts: With an internal account ID or ledger address.
- External accounts: With a ledger address.
- Endpoint addresses: With an endpoint ID.


The assets you can send are blockchain-dependent, and include assets such as native cryptocurrency, non-fungible tokens (NFT), and other tokens, including tokens hosted by a smart contract.

## Overview

The steps below describe how to send assets with a transfer order, which is the standard way of sending assets in Ripple Custody. Transfer orders provide a way to send assets to any ledger using the same format and minimal information.

You can use a transfer order if:

- You want to send assets to a destination account, and you have a validated asset that is a native asset or a token.
- You want to send assets to a destination account via a smart contract that hosts tokens and includes a `transfer` method, and you have a validated asset that is a smart contract address.


You can only use transfer orders for smart contracts in the limited scenario described above. For all other smart contract transactions, you need a transaction order. For more information, see [Work with smart contracts](/products/custody/v1.34/ui/accounting/smart-contracts).

- You want to use a priority fee strategy instead of a custom fee strategy. For more details, see [Fee strategy types](/products/custody/v1.34/concepts/transactions-reference#fee-strategy-types).


For all other asset transfer transactions, you need to use a transaction order.

[Learn more about transfer orders and transaction orders](/products/custody/v1.34/concepts/transactions-initiation)

## Prerequisites

To send assets, you need the following:

- An account associated with the ledger to which you want to send assets.
To view available accounts, see [View account details](/products/custody/v1.34/ui/accounting-entities/account/view).
- An allowlisted token of the type you want to send. If the token you want to send is not allowlisted, you can allowlist it during transfer order creation, or by following the instructions in [Allowlist tokens](/products/custody/v1.34/ui/accounting-entities/token-management/allowlist).
To view available tokens, see [View tokens](/products/custody/v1.34/ui/accounting-entities/token-management/view).
- An account balance that can cover the transaction amount and fees. If the balance of the account is too low to cover the transaction amount and fees, Ripple Custody displays a warning when you create the transfer order.
To view the account balance, see [Check account balances](/products/custody/v1.34/ui/accounting-entities/account/view#check-account-balances).


### Ledger-specific prerequisites

In addition to the prerequisites above, some ledgers require you to perform some additional tasks for specific asset sending operations. For more information, see [Ledger-specific account settings](/products/custody/v1.34/ui/accounting/account-settings).

## Create a transfer order

To create a transfer order:

1. Navigate to **Transactions**.
2. Click **Create an order**.
3. Click the **Transfer order** tab.
4. Select the source account.
5. Select an asset that is validated for this ledger. You can select an asset of type native currency, token, or smart contract.
If you select an unvalidated asset, Ripple Custody prompts you to validate it.
6. Enter the amount in the currency of the asset.
7. Select the destination account or endpoint to which to send the asset. You can also manually specify an address.
If you specified a smart contract asset, this is the destination address the smart contract needs to use to transfer the funds.
8. Enter the priority: The higher the priority, the faster the processing time and the higher the fees paid.
Ripple Custody displays an estimate of the fees based on the priority you choose.
For Bitcoin-type ledgers, if the amount is lower than the fees, the ledger may consider the transaction as dust and reject it.
[Learn more about how Ripple Custody calculates transaction fees](/products/custody/v1.34/concepts/transactions-reference#fee-strategies-by-ledger)
9. Enter a maximum fee as a percentage or amount, if required. The maximum fee must take into consideration the fee calculation method for the ledger. The transaction is not broadcast if the fees are higher than this cap.
[Learn more about the maximum fee](/products/custody/v1.34/concepts/transactions-reference#maximum-fee)
10. Click **Submit for approval** and [sign the operation with the app](/products/custody/v1.34/ui/get-started/key-operations/intent-signature).


The new transfer order, along with its associated transaction order, transaction, and transfers, is created when the intent is successfully executed.

When the intent is successfully executed, Ripple Custody broadcasts the transaction on-chain.

You can now check details of all of the transaction objects created during your send operation, including their statuses, as described in [View transactions](/products/custody/v1.34/ui/accounting/transactions/view).