# Transaction workflow

Executive summary
**Most transaction workflows start with either a *transfer order* for asset movement or a *transaction order* for ledger-specific operations.**

- Transfer orders: Specify *what* you want to send. The platform handles blockchain details.
- Transaction orders: Full control over ledger-specific parameters (gas, data payload, staking).
- Both methods are available via Web UI and API.
- Transfer orders are converted to transaction orders internally. Use transaction order ID for tracking.


Why this matters
Choosing the right initiation method affects integration complexity and operational flexibility. *Transfer orders* provide a unified API across all blockchains—ideal for standard payments and withdrawals. *Transaction orders* unlock advanced capabilities (smart contracts, staking, custom parameters) but require ledger-specific knowledge. Most integrations start with transfer orders and add transaction orders for specific use cases.

**For architects and operators**: Standardize on *transfer orders* for common flows to simplify integration and training. Reserve *transaction orders* for operations that genuinely require ledger-specific parameters. Document which use cases require which method.

Prerequisites
Before reading this page, you should understand:

- [Transactions and transfers](/products/custody/v1.36/transactions/overview) - The overall transaction lifecycle and flow
- [Accounts](/products/custody/v1.36/accounts-and-assets/accounts/overview) - How accounts and addresses work in Ripple Custody




## Transactions workflow

Use these pages to perform the major transaction and transfer actions in Ripple Custody:

| Action | Start here | What it covers |
|  --- | --- | --- |
| Send assets | [Sending assets](/products/custody/v1.36/transactions/send-and-receive/sending-assets) | Create outbound transfer workflows in the UI or API. |
| Receive assets | [Receiving assets](/products/custody/v1.36/transactions/send-and-receive/receiving-assets) | Receive incoming assets and release quarantined transfers. |
| View transactions and transfers | [Viewing assets](/products/custody/v1.36/transactions/viewing-assets) | View transaction orders, transactions, transfers, and status details. |
| Cancel or replace a transaction | [Cancel or replace a transaction](/products/custody/v1.36/transactions/cancel-and-replace) | Cancel a transaction before resources are fully allocated, or replace supported Bitcoin and Ethereum transactions. |
| Track transaction status | [Transaction status](/products/custody/v1.36/transactions/processing) | Understand processing statuses, ledger statuses, signing flows, fees, and finality. |
| Look up transaction details | [Transaction reference](/products/custody/v1.36/transactions/reference) | Check fee strategies, finality settings, status definitions, and troubleshooting notes. |
| Use smart contracts or DApps | [Smart contracts + DApps](/products/custody/v1.36/transactions/smart-contracts) | Call or deploy smart contracts and connect supported WalletConnect DApps. |


You can initiate transaction workflows in Ripple Custody through the UI or API. The UI is best for interactive operations, approvals, and monitoring. The API is best for automation and integration, and state mutation operations are submitted as intents.

## Key concepts

| Concept | Description | Why it matters |
|  --- | --- | --- |
| **Transfer order** | A simplified, ledger-agnostic request to send assets. You specify *what* you want to send (amount, destination, asset), and Ripple Custody handles the blockchain-specific details. | Use this for most transfers—it works the same way across all blockchains |
| **Transaction order** | A detailed, ledger-specific request with full parameter control. You specify *how* the blockchain transaction should be constructed (gas limits, data payloads, custom parameters). | Use this when you need features not available in transfer orders (smart contracts, staking, custom parameters) |
| **Transaction** | Ripple Custody's internal record of the blockchain transaction | Tracks status, hash, confirmations, and links to the on-chain record |
| **Transfer** | Individual financial movements within a transaction | Separates the amount sent from fees paid for clear accounting |


### How transfer orders and transaction orders relate

When you submit a transfer order, Ripple Custody automatically creates a transaction order with the appropriate ledger-specific parameters. This means:

- **Transfer orders are simpler**: You specify what you want to send, and Ripple Custody handles the technical details
- **Transaction orders give you control**: You specify exactly how the blockchain transaction should be constructed


Transfer orders are not stored separately — Ripple Custody converts them to transaction orders immediately. **Use the transaction order ID returned from your API call to track the transaction status.**

### When objects are created

Ripple Custody creates transaction and transfer objects in two scenarios:

1. **Outgoing transactions**: When you submit a transfer order or transaction order
2. **Incoming transactions**: When the system detects assets arriving at one of your addresses


## When to use transfer orders vs transaction orders

Both transfer orders and transaction orders ultimately result in blockchain transactions, but they serve different purposes and offer different levels of control.

### Transfer order

Use a **transfer order** when you need to:

- Send native currency (ETH, BTC, XRP, etc.) to an external address
- Send tokens to an external address
- Perform simple asset transfers without special parameters


Transfer orders provide:

- A **ledger-agnostic API** - the same request format works across all supported blockchains
- **Automatic transaction construction** - Ripple Custody handles all ledger-specific details
- **Built-in fee handling** - priority-based fee strategy is applied automatically
- **Simpler integration** - fewer parameters to specify


### Transaction order

Use a **transaction order** when you need to:

- Execute smart contract functions
- Perform staking operations (delegate, undelegate, claim rewards)
- Submit ledger-specific operations not supported by transfer orders
- Specify custom transaction parameters (gas limit, data payload, etc.)


Transaction orders provide:

- **Full control** over transaction parameters
- **Access to ledger-specific features** not abstracted by transfer orders
- **Custom fee strategies** including specified rate and EIP 1559
- **Raw transaction data** for advanced use cases


### Decision guide

| Scenario | Recommended Method |
|  --- | --- |
| Send ETH to a user | Transfer order |
| Send ERC-20 tokens | Transfer order |
| Call a smart contract function | Transaction order |
| Stake SOL to a validator | Transaction order |
| Send BTC to an exchange | Transfer order |
| Deploy a smart contract | Transaction order |
| Claim staking rewards | Transaction order |
| Internal transfer between accounts | Transfer order (or virtual ledger for off-chain tracking) |


What is a virtual ledger?
A **virtual ledger***_ is an internal accounting system within Ripple Custody that tracks asset movements between accounts without creating blockchain transactions. Use virtual ledgers for:

- Internal transfers between your own accounts (no blockchain fees)
- Off-chain record keeping and reconciliation
- Tracking assets that haven't yet been settled on-chain


Virtual ledger transfers are instant and free, but they don't move assets on the blockchain — they only update internal balances.

Recommendation
**Start with transfer orders** for simple asset transfers. They are easier to implement, more portable across blockchains, and sufficient for most use cases. Use transaction orders only when you need capabilities that transfer orders don't provide.

## Transaction objects

Understanding the objects Ripple Custody creates helps you track transactions and troubleshoot issues. The following diagrams show the relationship between the objects you create and the objects the system creates automatically.

### Outgoing transactions

#### Transfer order

When you submit a transfer order, Ripple Custody creates a transaction order, a transaction record, and one or more transfer records:

![](/assets/transfer-order-objects.8155a84371822ccf6cc0996584493a828824c838f58930f28da959a0adbcb962.7e88c1bd.png)

#### Transaction order

When you submit a transaction order directly, Ripple Custody creates a transaction record and transfer records:

![](/assets/transaction-order-objects.2b50e423f470659f57671c09794ee4bec202cbfd3f6a852321c7dcbac40a9dd4.7e88c1bd.png)

### Incoming transactions

When assets arrive at one of your addresses, Ripple Custody automatically creates transaction and transfer records to track the incoming funds:

![](/assets/incoming-transaction-objects.f3ac9046865bafac25cf1c09432920df0a047131b98e62f25dc210b66e786c5a.7e88c1bd.png)

## What happens next

After you submit a transaction, Ripple Custody begins processing it through the governance and signing workflow. The transaction progresses through several statuses as it moves from submission to blockchain confirmation.

To understand what happens after initiation, see [Transaction processing](/products/custody/v1.36/transactions/processing).

## Next steps

- [Transaction processing](/products/custody/v1.36/transactions/processing) - Learn what happens after you initiate a transaction
- Send assets: [UI](/products/custody/v1.36/transactions/send-and-receive/send-assets-ui) | [API](/products/custody/v1.36/transactions/send-and-receive/send-assets-api) - Step-by-step instructions
- [Transactions reference](/products/custody/v1.36/transactions/reference) - Detailed tables for fees, finality, and statuses