Manually Handling Withdrawals in Virtual Accounts (VA)
Creating a Manual Virtual Account Withdrawal
Virtual Accounts (VA) include dedicated endpoints to automatically process on-chain withdrawals while logging these actions in the VA ledger.
However, in certain situations, you may need to handle withdrawals manually.
Steps
Step 1: Execute a Blockchain Transfer
- Example: BTC transfer using the v3 REST API endpoint.
- Send crypto assets to the recipient’s blockchain address.
- The source address of the blockchain transaction can be any address from your blockchain wallet.
Step 2: Create a Withdrawal in the VA Ledger
- Use the
StoreWithdrawal
API endpoint.
- This logs a virtual account transaction from the source account.
- The specified amount is debited from the VA ledger.
Step 3: Complete the Withdrawal Transaction
- Use the
CompleteWithdrawal
API endpoint.
- Mark the withdrawal as successful.
- Store the blockchain transaction hash/ID in the VA ledger to finalize the process.
Attention
Ensure that the asset amount, fees, and all parameters match the expected values on both the blockchain and the VA ledger. Skipping this step can result in inconsistencies.
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.
- 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 the blockchain address to bind to the Virtual Account will be ignored. More information HERE.
- 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 for addtional details.
- Withdrawals from a VA deposit address can be automated using the VA Blockchain Operationsendpoints, 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.
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
Updated 30 days ago