Setting up an Exchange or Application

How to set up an Exchange with Virtual Accounts

This phase is usually a one-time step that must be done before the launch of your Crypto Exchange or Application.

The setting up phase involves creating the Master Exchange wallets that your application will support and or creating service fee accounts for the wallet provider.

Generating the Exchange Master Wallets

Based on the chains to support, you will have to generate a wallet per chain.

Generating Wallets:

Generating Service Accounts

For every supported blockchain wallet, a service ledger account should be created.

Service ledger accounts will be used to gather fees from the trading of your end-users. A fee may be charged for every trade performed by end-users, and the fee can be transferred to the service account.

Within the Virtual Account ledger, an end-user (parameter "customer") is an entity containing information about the end-user of your application, such as the customer's country of residence, accounting currency, etc. The customer is only created during the creation of a new account, and the only required field is the external_ID. For service accounts, all accounts can be grouped into one service customer.

Every Virtual Account should have a properly set up accounting currency. It should be the FIAT currency of the country where the accounting is performed. For example, for an exchange in Germany, accounting should be in EUR, so the accounting currency is EUR. More details are available Create a Virtual Account - v3 REST API

curl --location --request POST 'https://api.tatum.io/v3/ledger/account' \
--header 'x-api-key: {YOUR_API_KEY}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "currency": "BTC",
    "accountingCurrency": "EUR",
    "customer": {
      "externalId": "SERVICE_CUSTOMER_EXTERNAL_ID"
    }
}'
//Response:
{
    "currency": "BTC",
    "active": true,
    "balance": {
        "accountBalance": "0",
        "availableBalance": "0"
    },
    "frozen": false,
    "accountingCurrency": "EUR",
    "customerId": "5fb7bdf6e96d9ab593e191a6"
    "id": "5fb7bdf6e96d9ab593e191a5"
}

Good to Know

  • β€ŒEvery Virtual Account can belong to a specific customer in Tatum.
  • Virtual Accounts can only handle one (1) single currency per Virtual Account.
  • To generate a wallet for any ERC-20 token, like USDT or others, you can use the same endpoint as for Ethereum.
  • Accounting currency is part of Tatum's built-in compliance engine. It's enabled by default.
  • Be mindful of Tatum Derivation Path.
  • For Mainnet and/or a Production Environment, it is recommended to use KMS to generate and store your Mnemonics and PrivateKeys.
  • It is your responsibility to ensure on-chain asset liquidity.

❗️

When generaring wallets, you are expected to store the Mnemonics. Additional information is available at the following link.