Skip to main content

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

The customer must have completed tier 2 verification before a virtual account can be created. For businesses, tier 2 business KYB satisfies the tier 2 requirement.See Submit Tier 2 Verification for individual KYC and business/entity KYB.
Individual verification flow:
  1. Create a customer via POST /v1/customers
  2. Complete tier 1 verification (BVN + selfie) via POST /v1/customers/{id}/tier1-verification
  3. Complete tier 2 verification (KYC documents) via POST /v1/customers/{id}/tier2-verification
  4. Once tier 2 status reaches VERIFIED, create the USD virtual account
Business/entity verification flow:
  1. Create a customer record via POST /v1/customers
  2. Submit business KYB via POST /v1/customers/{id}/tier2-verification with customer_type: "business"
  3. Wait for tier_2_kyc_complete to become true
  4. 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:
  1. The deposit is received at the bank details in deposit_instructions
  2. Supported payment rails include ACH and wire transfers
  3. Funds settle into the merchant collection balance
  4. A webhook is sent to notify you of the deposit
  5. 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. Add developer_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


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