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

# Create USD virtual account

> Create a USD virtual account for a customer

## Overview

Creates a new USD virtual account for a customer. The customer must have completed tier 2 verification before creating a USD virtual account. Payments into the account settle into the merchant [collection balance](/api-reference/merchant-balance/get-merchant-balance), are listed as [USD virtual account deposits](/api-reference/virtual-account-deposits/list-usd-account-deposits), and send a [webhook](/api-reference/webhooks/events).

<Note>
  **Prerequisite:** The customer must have completed tier 2 verification (`POST /v1/customers/{id}/tier2-verification`).
</Note>

## Authentication

<ParamField header="X-Api-Key" type="string" required>
  Your merchant API key
</ParamField>

## Request Body

<ParamField body="customer_id" type="string" required>
  Customer ID (UUID). The customer must have completed tier 2 verification.

  **Example:** `650e8400-e29b-41d4-a716-446655440000`
</ParamField>

<ParamField body="currency" type="string">
  Currency for the virtual account. Defaults to `usd` if omitted. Currently only `usd` is supported.

  **Example:** `usd`
</ParamField>

<ParamField body="developer_fee" type="object">
  Optional fee that your merchant account keeps from each USD deposit received through this virtual account. Omit to use `0%`.

  <Expandable title="developer_fee properties">
    <ParamField body="developer_fee.percentage" type="string" required>
      Percentage of each received USD deposit that your merchant account keeps. Use a decimal string from `0` to `50`. This is a percentage value, not basis points: `0.5` means `0.5%`, `2` means `2%`, and `50` means `50%`.

      **Example:** `"1.5"`
    </ParamField>
  </Expandable>
</ParamField>

## Request Example

<CodeGroup>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.daya.co/v1/virtual-accounts \
    --header 'X-Api-Key: YOUR_API_KEY' \
    --header 'Content-Type: application/json' \
    --data '{
      "customer_id": "650e8400-e29b-41d4-a716-446655440000",
      "currency": "usd",
      "developer_fee": {
        "percentage": "1.5"
      }
    }'
  ```
</CodeGroup>

## Response

<ResponseField name="id" type="string" required>
  Virtual account ID (UUID)
</ResponseField>

<ResponseField name="customer_id" type="string" required>
  Associated customer ID
</ResponseField>

<ResponseField name="merchant_id" type="string" required>
  Merchant ID
</ResponseField>

<ResponseField name="currency" type="string" required>
  Source currency (e.g. `usd`)
</ResponseField>

<ResponseField name="status" type="string" required>
  Account status (e.g. `active`)
</ResponseField>

<ResponseField name="provider" type="string" required>
  Virtual account provider (e.g. `bridge`)
</ResponseField>

<ResponseField name="developer_fee" type="object" required>
  Developer fee percentage used for deposits received through this virtual account.

  <Expandable title="developer_fee properties">
    <ResponseField name="developer_fee.percentage" type="string">
      Configured percentage as a decimal string.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="deposit_instructions" type="object">
  Bank deposit instructions for funding the virtual account.

  <Expandable title="deposit_instructions properties">
    <ResponseField name="deposit_instructions.bank_beneficiary_name" type="string">
      Beneficiary name
    </ResponseField>

    <ResponseField name="deposit_instructions.bank_beneficiary_address" type="string">
      Beneficiary address
    </ResponseField>

    <ResponseField name="deposit_instructions.bank_name" type="string">
      Bank name
    </ResponseField>

    <ResponseField name="deposit_instructions.bank_address" type="string">
      Bank address
    </ResponseField>

    <ResponseField name="deposit_instructions.bank_routing_number" type="string">
      Bank routing number (US domestic ACH/wire)
    </ResponseField>

    <ResponseField name="deposit_instructions.bank_account_number" type="string">
      Bank account number
    </ResponseField>

    <ResponseField name="deposit_instructions.payment_rails" type="array">
      Supported payment rails (e.g. `ach`, `wire`)
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="destination" type="object">
  Crypto destination where settled funds are sent.

  <Expandable title="destination properties">
    <ResponseField name="destination.payment_rail" type="string">
      Payment rail (e.g. `base`)
    </ResponseField>

    <ResponseField name="destination.currency" type="string">
      Destination currency (e.g. `usdc`)
    </ResponseField>

    <ResponseField name="destination.address" type="string">
      Destination address
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="created_at" type="string" required>
  When the account was created (ISO 8601)
</ResponseField>

<ResponseField name="updated_at" type="string" required>
  When the account was last updated (ISO 8601)
</ResponseField>

<ResponseExample>
  ```json 201 Created theme={null}
  {
    "id": "650e8400-e29b-41d4-a716-446655440000",
    "customer_id": "650e8400-e29b-41d4-a716-446655440002",
    "merchant_id": "650e8400-e29b-41d4-a716-446655440001",
    "currency": "usd",
    "status": "active",
    "provider": "bridge",
    "developer_fee": {
      "percentage": "1.5"
    },
    "deposit_instructions": {
      "bank_beneficiary_name": "Bridge Trust",
      "bank_beneficiary_address": "123 Finance St, New York, NY",
      "bank_name": "Lead Bank",
      "bank_address": "1801 Main St, Kansas City, MO",
      "bank_routing_number": "101019644",
      "bank_account_number": "1234567890",
      "payment_rails": ["ach", "wire"]
    },
    "destination": {
      "payment_rail": "base",
      "currency": "usdc",
      "address": "0x1234567890abcdef1234567890abcdef12345678"
    },
    "created_at": "2026-01-05T15:04:05Z",
    "updated_at": "2026-01-05T15:04:05Z"
  }
  ```

  ```json 400 Bad Request theme={null}
  {
    "error": {
      "code": "TIER2_NOT_VERIFIED",
      "message": "Customer has not completed tier 2 verification",
      "request_id": "550e8400-e29b-41d4-a716-446655440000"
    }
  }
  ```
</ResponseExample>
