---
title: Virtual Accounts
description: Dedicated bank accounts issued in your customers' names for sending and receiving payments.
---

## What it is

A virtual account is a dedicated bank account that can be generated for each of your customers. US virtual accounts come with their own unique **routing number** and **account number**, enabling customers to send and receive payments throughout the United States banking system. Brazilian virtual accounts support local payment rails such as PIX. These accounts function like regular bank accounts but are managed through the BlindPay platform.

::c-alert{icon="circle-info"}
All incoming payments to a virtual account automatically generate a payin. Transaction fees are charged on your invoice at the end of each billing cycle.
::

## How it works

### Available virtual accounts

| Banking Partner | Use Case | Payment Methods | Countries | SLA | Cost |
|---|---|---|---|---|---|
| US Bank 1 | Individuals and Businesses | ACH, Wire, SWIFT | US and Foreign | 24 hours | $1.50 / mo per account |
| US Bank 2 | Businesses | ACH, RTP, Wire, SWIFT | Foreign only | 3–5 business days | $1.50 / mo per account |
| US Bank 3 | Businesses | ACH, Wire, SWIFT | US only | 3–5 business days | $1.50 / mo per account |
| Blind Pay LTDA | Individuals and Businesses | PIX, TED, Boleto | Brazil and Foreign | Instant | TBD |

**Named payouts:** When a virtual account is issued to an end user, all payouts originating from that account are sent under the end user's name (named payouts), rather than a pooled or omnibus account name. This ensures the recipient sees the actual payer on incoming transfers and aligns with originator-information requirements for payment-rail compliance.

::c-alert{icon="circle-info"}
These accounts are allowed to send and collect third-party payments.
::

### Approval process

After a virtual account is created via the API, it goes through a **two-step review**:

1. **Compliance review** — The virtual account starts in `pending_review` status while BlindPay's compliance team reviews the application.
2. **Bank review** — Once approved by compliance, the virtual account is submitted to the banking partner for final approval.

Issuance SLAs vary by virtual account type — see the table above. Approval is **not guaranteed** at either stage; both BlindPay's compliance team and the banking partner reserve the right to reject any application.

### Statuses

| Status           | Description                                                                 |
| ---------------- | --------------------------------------------------------------------------- |
| `pending_review` | The virtual account has been created and is awaiting compliance review.      |
| `verifying`      | Compliance approved — the virtual account has been submitted to the bank.   |
| `approved`       | The bank has approved the virtual account. It is now active and operational. |
| `rejected`       | The virtual account was rejected during compliance or bank review.           |

### Additional data for businesses

To issue virtual accounts, make sure the following data is filled for customers:

- Business: `account_purpose`, `business_type`, `business_description`, `business_industry`, `estimated_annual_revenue`, `source_of_wealth`, `publicly_traded`
- Business owners: `ownership_percentage`, `title`

::c-alert{icon="circle-info"}
Make sure all business owners living in the US have their SSN in the `tax_id` field. You can find `business_industry` (NAICS code) [here](https://api.blindpay.com/reference#tag/available/GET/v1/available/naics).
::

To update these fields, call the following endpoint:

::c-code-group

```bash [cURL]
curl --request PUT \
  --url https://api.blindpay.com/v1/instances/in_000000000000/customers/re_000000000000 \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "email": "john@doe.com",
    "tax_id": "000000000",
    "country": "US",
    "owners": [
        {
            "ownership_percentage": 50,
            "title": "CTO",
            "id": "ub_000000000000"
        }
    ],
    "account_purpose": "business_expenses",
    "business_type": "corporation",
    "business_description": "description",
    "business_industry": "541511",
    "estimated_annual_revenue": "0_99999",
    "source_of_wealth": "business_dividends_or_profits",
    "publicly_traded": false
}'
```

::

### Additional data for individuals

To issue virtual accounts for individual customers (sole proprietors), the following fields are required in the virtual account creation request:

- `sole_proprietor_doc_type`: type of supporting document (one of `master_service_agreement`, `salary_slip`, `bank_statement`)
- `sole_proprietor_doc_file`: a URL pointing to the uploaded document

## Prerequisites

::c-prerequisites
::

You must also [create a customer](/docs/essentials/customers#create-a-customer) and [add a blockchain wallet](/docs/essentials/blockchain-wallets) before generating a virtual account.

## Generate a virtual account

::c-auth-note{customer}
::

::c-alert{icon="circle-info"}
After creation, the virtual account will have a `pending_review` status. It will be reviewed by our compliance team before being submitted to the banking partner. You will receive a webhook notification when the status changes.
::

### For businesses

::c-code-group

```bash [cURL]
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/customers/re_000000000000/virtual-accounts \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "banking_partner": "cfsb",
  "token": "USDC",
  "blockchain_wallet_id": "ba_000000000000"
}'
```

::

### For individuals (sole proprietors)

::c-code-group

```bash [cURL]
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/customers/re_000000000000/virtual-accounts \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "banking_partner": "cfsb",
  "token": "USDC",
  "blockchain_wallet_id": "ba_000000000000",
  "sole_proprietor_doc_type": "master_service_agreement",
  "sole_proprietor_doc_file": "https://example.com/document.pdf"
}'
```

::

## Related

- [Customers](/docs/essentials/customers) · [Blockchain Wallets](/docs/essentials/blockchain-wallets) · [Bank Accounts](/docs/essentials/bank-accounts)
