> ## Documentation Index
> Fetch the complete documentation index at: https://docs.daya.co/llms.txt
> Use this file to discover all available pages before exploring further.

# USD Virtual Accounts

> USD virtual accounts for tier-2-verified customers

## 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](/api-reference/merchant-balance/get-merchant-balance) and a [webhook](/api-reference/webhooks/events) is sent.

USD virtual accounts are separate from funding accounts. Use [Funding Accounts](/concepts/funding-accounts) when customers need to send NGN or crypto into Daya. Use USD virtual accounts when customers need US dollar bank details.

***

## Prerequisites

<Warning>
  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](/api-reference/customers/submit-tier2-verification) for individual KYC and business/entity KYB.
</Warning>

Individual verification flow:

1. Create a customer via [`POST /v1/customers`](/api-reference/customers/create-customer)
2. Complete tier 1 verification (BVN + selfie) via [`POST /v1/customers/{id}/tier1-verification`](/api-reference/customers/submit-tier1-verification)
3. Complete tier 2 verification (KYC documents) via [`POST /v1/customers/{id}/tier2-verification`](/api-reference/customers/submit-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`](/api-reference/customers/create-customer)
2. Submit business KYB via [`POST /v1/customers/{id}/tier2-verification`](/api-reference/customers/submit-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:

| Property               | Description                                                              |
| ---------------------- | ------------------------------------------------------------------------ |
| `id`                   | Unique USD virtual account identifier                                    |
| `customer_id`          | The customer this account belongs to                                     |
| `currency`             | Source currency (`usd`)                                                  |
| `status`               | Account status (`active` or `inactive`)                                  |
| `developer_fee`        | Developer fee percentage used for deposits received through this account |
| `deposit_instructions` | Bank details for receiving deposits (see below)                          |

### `deposit_instructions` fields

| Field                      | Description                                           |
| -------------------------- | ----------------------------------------------------- |
| `bank_beneficiary_name`    | Name of the beneficiary on the receiving account      |
| `bank_beneficiary_address` | Beneficiary mailing address                           |
| `bank_name`                | Name of the receiving bank                            |
| `bank_address`             | Address of the receiving bank                         |
| `bank_account_number`      | Account number to deposit into                        |
| `bank_routing_number`      | US routing number (ACH/domestic wire)                 |
| `payment_rails`            | Supported rails for this account (e.g. `ach`, `wire`) |

***

## 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](/api-reference/merchant-balance/get-merchant-balance)
4. A [webhook](/api-reference/webhooks/events) is sent to notify you of the deposit
5. The payment appears in the [USD account deposits API](/api-reference/virtual-account-deposits/list-usd-account-deposits) with type `USD_DEPOSIT`

<Info>
  Use `/v1/virtual-account-deposits` for USD virtual account payments. Use `/v1/deposits` for NGN and crypto funding-account deposits.
</Info>

## 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:

| Feature                          | Requires Tier 2 |
| -------------------------------- | :-------------: |
| USD virtual accounts             |       Yes       |
| `US_BANK_ACCOUNT` recipients     |       Yes       |
| `SWIFT_BANK_ACCOUNT` recipients  |       Yes       |
| USD transfers (ACH, wire, SWIFT) |       Yes       |

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-reference/customers/submit-tier2-verification).

***

## API Routes

* [Create USD Virtual Account](/api-reference/virtual-accounts/create-virtual-account)
* [List USD Virtual Accounts](/api-reference/virtual-accounts/list-virtual-accounts)
* [Get USD Virtual Account](/api-reference/virtual-accounts/get-virtual-account)
* [List Customer USD Virtual Accounts](/api-reference/virtual-accounts/list-customer-virtual-accounts)
* [List USD Virtual Account Deposits](/api-reference/virtual-account-deposits/list-usd-account-deposits)

***

## Next Steps

<CardGroup cols={3}>
  <Card title="Create USD Virtual Account" icon="building-columns" href="/api-reference/virtual-accounts/create-virtual-account">
    Provision a USD account for a customer
  </Card>

  <Card title="Tier 2 Verification" icon="shield-check" href="/api-reference/customers/submit-tier2-verification">
    Complete the prerequisite KYC step
  </Card>

  <Card title="USD Virtual Account Deposits" icon="arrow-down" href="/api-reference/virtual-account-deposits/list-usd-account-deposits">
    View payments into USD virtual accounts
  </Card>
</CardGroup>
