What is a USD virtual account?
A USD virtual account is a US dollar bank account provisioned for a customer. Customers can receive USD deposits into this account. Deposits settle into the merchant collection balance and a webhook is sent. USD virtual accounts are separate from funding accounts. Use Funding Accounts when customers need to send NGN or crypto into Daya. Use USD virtual accounts when customers need US dollar bank details.Prerequisites
Individual 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 USD virtual account
- Create a customer record via
POST /v1/customers - Submit business KYB via
POST /v1/customers/{id}/tier2-verificationwithcustomer_type: "business" - Wait for
tier_2_kyc_completeto becometrue - Create the USD virtual account for that
customer_id
USD Virtual Account Properties
Each virtual account includes:deposit_instructions fields
How USD Deposits Work
When a USD deposit is received into the 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 payment appears in the USD account deposits API with type
USD_DEPOSIT
Use
/v1/virtual-account-deposits for USD virtual account payments. Use /v1/deposits for NGN and crypto funding-account deposits.Developer Fees
Developer fees let you keep a percentage of each USD deposit received through a virtual account. Adddeveloper_fee.percentage when creating the virtual account.
Use a decimal string from 0 to 50. Omit developer_fee to use 0%.
developer_fee.percentage uses percentage values, not basis points. For example, 0.5 means 0.5%, 2 means 2%, and 50 means 50%.
Virtual account responses include developer_fee.percentage. USD virtual account deposit responses and deposit webhooks include developer_fee and customer_amount after Daya calculates the split.
Relationship to Tier 2 Verification
Tier 2 verification is the gateway for customer banking features:
For individual customers, submit tier 2 KYC. For business/entity customers, submit tier 2 KYB with
customer_type: "business". Both use Submit Tier 2 Verification.
API Routes
- Create USD Virtual Account
- List USD Virtual Accounts
- Get USD Virtual Account
- List Customer USD Virtual Accounts
- List USD Virtual Account Deposits
Next Steps
Create USD Virtual Account
Provision a USD account for a customer
Tier 2 Verification
Complete the prerequisite KYC step
USD Virtual Account Deposits
View payments into USD virtual accounts