What is a Virtual Account?
A virtual account is a USD bank account provisioned for a customer. Customers can receive USD deposits into their virtual account — deposits settle into the merchant collection balance and a webhook is sent. Virtual accounts are separate from the NGN virtual accounts used in onramps. These are USD-denominated accounts designed for customers who need to receive US dollar payments.Prerequisites
The verification flow:- Create a customer via
POST /v1/customers - Complete tier 1 verification (BVN + selfie) via
POST /v1/customers/{id}/tier1-verification - Complete tier 2 verification (KYC documents) via
POST /v1/customers/{id}/tier2-verification - Once tier 2 status reaches
VERIFIED, create the virtual account
Virtual Account Properties
Each virtual account includes:| Property | Description |
|---|---|
id | Unique virtual account identifier |
customer_id | The customer this account belongs to |
currency | Source currency (usd) |
status | Account status (active or inactive) |
developer_fee_percent | Optional fee percentage on deposits |
deposit_instructions | Bank details for receiving deposits (routing number, account number, payment rails) |
How Deposits Work
When a USD deposit is received into the virtual account:- The deposit is received at the bank details in
deposit_instructions - Supported payment rails include ACH and wire transfers
- Funds settle into the merchant collection balance
- A webhook is sent to notify you of the deposit
- The deposit appears in the Deposits API with type
USD_DEPOSIT
Relationship to Tier 2 Verification
Tier 2 verification is the gateway for customer banking features:| Feature | Requires Tier 2 |
|---|---|
| USD virtual accounts | Yes |
US_BANK_ACCOUNT recipients | Yes |
SWIFT_BANK_ACCOUNT recipients | Yes |
| USD transfers (ACH, wire, SWIFT) | Yes |
API Routes
Next Steps
Create Virtual Account
Provision a USD account for a customer
Tier 2 Verification
Complete the prerequisite KYC step
List Deposits
View deposits including USD virtual account deposits