Overview
You can withdraw funds from a subaccount’s USD balance in two ways:- Fiat Payouts: Convert USD 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’s USD balance to the created recipient. The system will automatically convert the USD amount to the recipient’s local currency.
Example: Withdraw to NGN Recipient
Note: The amount field specifies the amount in the destination currency (e.g., NGN). The equivalent USD will be deducted from the subaccount.
Response:
4. Stablecoin Off-ramp (Crypto Withdrawal)
Endpoint:POST /v1/ramp/{subaccountId}/banking/withdrawals/stablecoin
You can also withdraw the USD balance 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 USD balance to cover the withdrawal amount plus fees.
- Unverified KYC: Withdrawals are only permitted for subaccounts with approved KYC.
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.