Overview
You can withdraw funds from a subaccount in two ways:- Fiat Payouts: Convert currency balances to local currency (e.g., NGN, BRL, EUR) and send it to a bank account.
- Stablecoin Off-ramp: Withdraw USD as stablecoins (USDC/USDT) to an external crypto wallet.
1. Validate Recipient Details (Fiat)
Endpoint:POST /v1/banking/{currency}/validate
Before adding a recipient for fiat withdrawals, it is crucial to validate the account details. This ensures the account exists and prevents failed transactions or lost funds.
Always validate account numbers and bank codes before attempting to create a recipient.
Example: Validate NGN Account
2. Create Recipient
Endpoint:POST /v1/ramp/{subaccountId}/banking/recipients
Once validated, save the details as a recipient. This recipient id will be used to initiate withdrawals.
Example: Create NGN Recipient
3. Initiate Fiat Payout
Endpoint:POST /v1/ramp/{subaccountId}/banking/withdrawals
Send funds from the subaccount to the created recipient. The system will deduct the appropriate currency balance from the subaccount.
Example: Withdraw to NGN Recipient
Note: The amount field specifies the amount in the destination currency (e.g., NGN). The equivalent balance will be deducted from the subaccount’s currency holdings.
Response:
4. Stablecoin Off-ramp (Crypto Withdrawal)
Endpoint:POST /v1/ramp/{subaccountId}/banking/withdrawals/stablecoin
You can also withdraw balances directly as stablecoins (USDC or USDT) to an external wallet address.
Example: Withdraw USDT on Ethereum
Common Mistakes
- Skipping Validation: Failing to validate bank account details often leads to failed withdrawals and unnecessary delays.
- Incorrect Network: When withdrawing stablecoins, ensure the
chainmatches the destination wallet (e.g., sending ERC-20 USDT to a TRC-20 address will result in loss of funds). - Insufficient Balance: Ensure the subaccount has enough balance in the relevant currency to cover the withdrawal amount plus fees.
- Unverified subaccounts: Withdrawals are only permitted for subaccounts with approved verification.
Webhook Events
Listen to webhook events to track the status of your withdrawals in real-time.withdrawal.status.completed: The funds have successfully reached the destination.withdrawal.status.failed: The withdrawal could not be processed.