Skip to main content
POST
/
v1
/
virtual-accounts
Create virtual account
curl --request POST \
  --url https://api.daya.co/v1/virtual-accounts \
  --header 'Content-Type: application/json' \
  --header 'X-Api-Key: <x-api-key>' \
  --data '
{
  "customer_id": "<string>",
  "source_currency": "<string>",
  "developer_fee_percent": "<string>"
}
'
{
  "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_percent": "0.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",
    "deposit_message": "BRGXXXXXXXX",
    "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"
}

Overview

Creates a new USD virtual account for a customer. The customer must have completed tier 2 verification before creating a virtual account. Deposits into the virtual account settle into the merchant collection balance and a webhook is sent.
Prerequisite: The customer must have completed tier 2 verification (POST /v1/customers/{id}/tier2-verification).

Authentication

X-Api-Key
string
required
Your merchant API key

Request Body

customer_id
string
required
Customer ID (UUID). The customer must have completed tier 2 verification.Example: 650e8400-e29b-41d4-a716-446655440000
source_currency
string
Source currency for the virtual account. Defaults to usd if omitted. Currently only usd is supported.Example: usd
developer_fee_percent
string
Optional developer fee percentage to apply on deposits.Example: 0.5

Request Example

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",
    "source_currency": "usd",
    "developer_fee_percent": "0.5"
  }'

Response

id
string
required
Virtual account ID (UUID)
customer_id
string
required
Associated customer ID
merchant_id
string
required
Merchant ID
currency
string
required
Source currency (e.g. usd)
status
string
required
Account status (e.g. active)
provider
string
required
Virtual account provider (e.g. bridge)
developer_fee_percent
string
Developer fee percentage
deposit_instructions
object
Bank deposit instructions for funding the virtual account.
destination
object
Crypto destination where settled funds are sent.
created_at
string
required
When the account was created (ISO 8601)
updated_at
string
required
When the account was last updated (ISO 8601)
{
  "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_percent": "0.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",
    "deposit_message": "BRGXXXXXXXX",
    "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"
}