---
updatedAt: 2025-11-27T11:02:40.000Z
agentTools:
  projectIndex: https://docs.tatum.io/llms.txt
---

# General Use Case

> ❗️ Attention
>
> Access to this feature is limited to existing Virtual Account users on PayGo and higher tiers who registered **before November 24, 2025**

## Introducing the Crypto Exchange Use Case

A crypto Exchange is a web application where end-users can trade their crypto assets. The Owner of the Exchange is the one who owns the private keys to all of the user's crypto assets - in this case, we are talking about a Custodial Exchange leveraging a Custodial Wallet.

‌Trades are not performed on the blockchain (on-chain), as this would be slow and expensive. All the trades are virtual transactions between end-user accounts (off-chain).

## Exchange Workflow

### Step\_1: Setting up the application

Includes prerequisites like blockchain wallet creation and creating exchange service accounts for gathering fees.

### Step\_2: Registration of new end-users in the application

The steps that need to be executed when new users register in the exchange

### Step\_3: End-user application journey

What kind of actions end-users can take while in the application

### Step\_4: Trading

Enabling end-users to trade their assets

### Step\_5: Observe Security Basics

Additional information is available in [the following article](https://docs.tatum.io/docs/virtual-accounts-security).

***

## Good to Know

* A custodial wallet is a wallet where a third party holds the private keys, not the crypto assets owner. The provider has full control over crypto assets, while end Users only have permission to send or receive payments.
* Every Exchange must have wallets for every crypto asset it supports.
* Every end-user of the Exchange must obtain accounts for every asset they are trading.
* The exchange operator defines the trading pairs that can be traded by users and usually charges a fee for every trade performed.

> 📘 Note
>
> Virtual Accounts can only handle one (1) single currency per Virtual Account.

***

## Important

The intended use case for **Virtual Accounts (VA)** is as a **Self-Custodial Exchange**, meaning all withdrawals are expected to be tracked in the VA ledger.

* **Tatum does not hold custody of mnemonics or private keys.** As a result, it is technically possible to sign transactions using VA ledger deposit addresses outside the VA ledger and Tatum endpoints. For more details, refer to [this article](https://docs.tatum.io/docs/lost-mnemonics-and-or-privatekeys).
* **The blockchain’s on-chain balance takes precedence** over the VA ledger. If unregistered transactions occur, the VA ledger will become misaligned, leading to **liquidity inconsistencies** between the on-chain balance and the off-chain VA ledger.
* Virtual Accounts are designed to hold a **limited number of deposit addresses (1-5)**. While adding many more deposit addresses may appear functional, this setup often leads to unrecoverable synchronisation issues across users over time.
* Any on-chain assets already present in a blockchain address to bind to a Virtual Account will be ignored. More information [HERE](https://docs.tatum.io/docs/deposit-address-blockchain-balance-not-reflected).
* Deposits are only "recognized" as long as the "currency" of the VA matches the on-chain asset deposited
* If a mistake occurs when creating or storing a withdrawal in the VA ledger, it can be deleted and retried. Check [this article](https://docs.tatum.io/docs/va-deleting-withdrawals) for addtional details.
* Withdrawals from a VA deposit address can be automated using VA [Blockchain Operations](https://docs.tatum.io/reference/btctransfer) endpoints, ensuring they are properly logged in the VA ledger.

> 🚧 Attention
>
> * You are expected to hold 1:1 asset liquidity between the VA off-chain ledger and your end-users on-chain assets.
> * To avoid potential disruptions and ensure consistent performance, we recommend adhering to the intended usage of 1-5 deposit addresses per Virtual Account.
> * Be mindful of [Tatum Derivation Path](https://docs.tatum.io/docs/mnemonic-derivation-path).

> ❗️ Warning
>
> * All withdrawals **must** be registered and executed through VA-specific endpoints.
> * Using standard blockchain transaction methods to sign and broadcast a transaction from a VA-linked deposit address **bypasses the VA ledger**, leadings to balance discrepancies. If this happens, the withdrawal must be [manually registered](https://docs.tatum.io/docs/va-creating-a-manual-withdrawal).