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

# Virtual Accounts

> Fund worker wallets via dedicated ACH accounts

export const ApiExample = ({method = "GET", path, params, body, reference, tenantKey}) => {
  const baseUrl = "https://api.cadanapay.com";
  const query = params ? "?" + Object.entries(params).map(([k, v]) => `${k}=${v}`).join("&") : "";
  const url = `${baseUrl}${path}${query}`;
  const isPlatformPath = (/^\/(v1\/)?platform(\/|$)/).test(path || "");
  const includeTenantKey = tenantKey === undefined ? !isPlatformPath : tenantKey;
  let curl = `curl -X ${method} '${url}' \\\n  -H 'Authorization: Bearer YOUR_API_KEY'`;
  if (includeTenantKey) {
    curl += ` \\\n  -H 'X-MultiTenantKey: YOUR_BUSINESS_TENANT_KEY'`;
  }
  if (body) {
    const formatted = JSON.stringify(body, null, 2);
    curl += ` \\\n  -H 'Content-Type: application/json' \\\n  -d '${formatted}'`;
  }
  return <div>
      <CodeBlock language="bash" filename="bash" wrap>
        {curl}
      </CodeBlock>
      {reference && <div style={{
    marginTop: "-0.5rem",
    marginBottom: "1rem"
  }}>
          <a href={reference} style={{
    fontSize: "0.875rem"
  }}>
            Try it in the playground →
          </a>
        </div>}
    </div>;
};

Virtual accounts let you provision unique ACH routing and account numbers for each worker's wallet. External parties (employers, clients, platforms) can fund wallets directly via ACH credit — no payroll required.

```mermaid theme={null}
flowchart TD
    subgraph PLATFORM
        direction TB
        P[Platform onboards workers]

        subgraph USER_WALLETS
            direction LR
            W1[User Wallet #1<br /><small>USD virtual acct</small>]
            W2[User Wallet #2<br /><small>USD virtual acct</small>]
            Wn[User Wallet …]
        end
    end

    Bank[(External Bank)]

    Bank -- "ACH credit" --> W1
    Bank -- "ACH credit" --> W2
    Bank -- "ACH credit" --> Wn
```

***

## Prerequisites

<Steps>
  <Step title="Worker wallet set up">
    The worker must have a User account with a provisioned wallet. See [Set Up Worker Wallets](/wallets/worker-wallets).
  </Step>

  <Step title="KYC approved">
    Both `identity` and `address` KYC must be approved before you can provision a virtual account. See [KYC Verification](/platform/kyc-verification).
  </Step>

  <Step title="Virtual accounts enabled">
    Work with your account manager to enable virtual accounts for your platform.
  </Step>
</Steps>

***

## Create a Virtual Account

Once KYC is approved, provision a virtual account for the worker's wallet.

<ApiExample method="POST" path="/v1/users/{userId}/virtual-accounts" body={{ currency: "USD", jobInformation: { employerName: "Acme Inc", address: { line1: "123 Main St", city: "Anytown", postalCode: "12345", state: "CA", countryCode: "US" }, title: "Software Engineer", type: "full-time", netPay: { amount: 10000, currency: "USD" }, frequency: "monthly", contractStartDate: "2024-01-01" } }} reference="/api-reference/payments/virtual-accounts/create-virtual-account" />

The account is created in a `Requested` state. Cadana submits it to the bank for processing, and it moves to `Approved` once provisioning is complete.

***

## Retrieve Account Details

Fetch the virtual account details including the routing and account numbers.

<ApiExample method="GET" path="/v1/users/{userId}/virtual-accounts" reference="/api-reference/payments/virtual-accounts/get-virtual-accounts" />

**Response:**

```json theme={null}
{
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef0123456789",
      "currency": "USD",
      "status": "Approved",
      "accountInformation": {
        "accountNumber": "9876543210",
        "routingNumber": "000000000",
        "bankName": "Example Bank",
        "accountName": "John Doe",
        "bankCode": "000000000",
        "countryCode": "US",
        "accountType": "checking"
      },
      "createdTimestamp": 1690339130,
      "lastUpdatedTimestamp": 1690339230
    }
  ]
}
```

| Field                              | Description                                           |
| :--------------------------------- | :---------------------------------------------------- |
| `accountInformation.accountNumber` | Unique account number for ACH credits                 |
| `accountInformation.routingNumber` | Bank routing number                                   |
| `accountInformation.bankName`      | Name of the custodial bank                            |
| `status`                           | `Requested`, `Approved`, `Rejected`, or `Deactivated` |

***

## Fund the Wallet

Once the virtual account is `Approved`, external parties can send ACH credits to the account number. Funds appear in the worker's wallet once the transfer settles (typically 1–3 business days for ACH).

### Sandbox testing

In sandbox mode, simulate a deposit to test the funding flow without a real ACH transfer.

<ApiExample method="POST" path="/v1/sandbox/users/{userId}/virtual-accounts/{virtualAccountId}/deposit" body={{ amount: { amount: 10000, currency: "USD" }, reference: "c06f3427-3bbe-4d70-9a54-28acda267e48", description: "Payroll 10/10" }} reference="/api-reference/payments/virtual-accounts/simulate-virtual-account-deposit" />

Returns `204` on success. The deposit is reflected in the worker's wallet balance immediately.

***

## Webhook Events

Subscribe to virtual account events for real-time status updates:

| Event                       | Description                                     |
| :-------------------------- | :---------------------------------------------- |
| `virtual-account.requested` | Virtual account is in review                    |
| `virtual-account.submitted` | Sent to bank for processing                     |
| `virtual-account.created`   | Account is active with full account information |

See [Events](/reference/events) for webhook payloads and [Webhooks](/reference/webhooks) to configure your endpoint.

***

## Supported Countries

**Restricted**

Virtual account services are available for these jurisdictions with additional monitoring and controls.

| Country                                      | ISO Code | US ACH/FedWire |
| :------------------------------------------- | :------- | :------------- |
| Aland Islands                                | ALA      | Yes            |
| Angola                                       | AGO      | Yes            |
| Antarctica                                   | ATA      | Yes            |
| Barbados                                     | BRB      | Yes            |
| Benin                                        | BEN      | Yes            |
| Bolivia                                      | BOL      | Yes            |
| Bouvet Island                                | BVT      | Yes            |
| British Indian Ocean Territory               | IOT      | Yes            |
| Bulgaria                                     | BGR      | Yes            |
| Burkina Faso                                 | BFA      | Yes            |
| Cabo Verde                                   | CPV      | Yes            |
| Cambodia                                     | KHM      | Yes            |
| Cameroon                                     | CMR      | Yes            |
| Central African Republic                     | CAF      | Yes            |
| Chad                                         | TCD      | Yes            |
| Christmas Island                             | CXR      | Yes            |
| Cocos (Keeling) Islands                      | CCK      | Yes            |
| Comoros                                      | COM      | Yes            |
| Congo                                        | COG      | Yes            |
| Cook Islands                                 | COK      | Yes            |
| Cote d'Ivoire                                | CIV      | Yes            |
| Djibouti                                     | DJI      | Yes            |
| Equatorial Guinea                            | GNQ      | Yes            |
| Eritrea                                      | ERI      | Yes            |
| Eswatini                                     | SWZ      | Yes            |
| Ethiopia                                     | ETH      | Yes            |
| Falkland Islands                             | FLK      | Yes            |
| Faroe Islands                                | FRO      | Yes            |
| French Southern Territories                  | ATF      | Yes            |
| Gabon                                        | GAB      | Yes            |
| Gibraltar                                    | GIB      | Yes            |
| Guinea                                       | GIN      | Yes            |
| Heard Island and McDonald Islands            | HMD      | Yes            |
| Indonesia                                    | IDN      | Yes            |
| Jamaica                                      | JAM      | Yes            |
| Kiribati                                     | KIR      | Yes            |
| Kuwait                                       | KWT      | Yes            |
| Kyrgyzstan                                   | KGZ      | Yes            |
| Lao PDR                                      | LAO      | Yes            |
| Lesotho                                      | LSO      | Yes            |
| Liberia                                      | LBR      | Yes            |
| Madagascar                                   | MDG      | Yes            |
| Maldives                                     | MDV      | Yes            |
| Mali                                         | MLI      | Yes            |
| Mauritania                                   | MRT      | Yes            |
| Monaco                                       | MCO      | Yes            |
| Montserrat                                   | MSR      | Yes            |
| Namibia                                      | NAM      | Yes            |
| Nigeria                                      | NGA      | Yes            |
| Norfolk Island                               | NFK      | Yes            |
| Palau                                        | PLW      | Yes            |
| Panama                                       | PAN      | Yes            |
| Papua New Guinea                             | PNG      | Yes            |
| Philippines                                  | PHL      | Yes            |
| Pitcairn                                     | PCN      | Yes            |
| Saint Helena, Ascension and Tristan da Cunha | SHN      | Yes            |
| Saint Kitts and Nevis                        | KNA      | Yes            |
| Sao Tome and Principe                        | STP      | Yes            |
| Senegal                                      | SEN      | Yes            |
| Sierra Leone                                 | SLE      | Yes            |
| Solomon Islands                              | SLB      | Yes            |
| South Africa                                 | ZAF      | Yes            |
| South Georgia and the South Sandwich Islands | SGS      | Yes            |
| Sri Lanka                                    | LKA      | Yes            |
| Suriname                                     | SUR      | Yes            |
| Svalbard and Jan Mayen                       | SJM      | Yes            |
| Tajikistan                                   | TJK      | Yes            |
| Tanzania                                     | TZA      | Yes            |
| Thailand                                     | THA      | Yes            |
| Togo                                         | TGO      | Yes            |
| Tokelau                                      | TKL      | Yes            |
| Tonga                                        | TON      | Yes            |
| Trinidad & Tobago                            | TTO      | Yes            |
| Turkey                                       | TUR      | Yes            |
| Turkmenistan                                 | TKM      | Yes            |
| Tuvalu                                       | TUV      | Yes            |
| Uganda                                       | UGA      | Yes            |
| United Arab Emirates                         | ARE      | Yes            |
| United States Minor Outlying Islands         | UMI      | Yes            |
| Vanuatu                                      | VUT      | Yes            |
| Vietnam                                      | VNM      | Yes            |
| Virgin Islands (British)                     | VGB      | Yes            |
| Western Sahara                               | ESH      | Yes            |

**Standard**

Virtual account services are available for these jurisdictions with regular monitoring and controls.

| Country                          | ISO Code | US ACH/FedWire |
| :------------------------------- | :------- | :------------- |
| Albania                          | ALB      | Yes            |
| American Samoa                   | ASM      | Yes            |
| Andorra                          | AND      | Yes            |
| Anguilla                         | AIA      | Yes            |
| Antigua and Barbuda              | ATG      | Yes            |
| Argentina                        | ARG      | Yes            |
| Armenia                          | ARM      | Yes            |
| Aruba                            | ABW      | Yes            |
| Australia                        | AUS      | Yes            |
| Austria                          | AUT      | Yes            |
| Azerbaijan                       | AZE      | Yes            |
| Bahamas                          | BHS      | Yes            |
| Bahrain                          | BHR      | Yes            |
| Belgium                          | BEL      | Yes            |
| Belize                           | BLZ      | Yes            |
| Bermuda                          | BMU      | Yes            |
| Bonaire, Sint Eustatius and Saba | BES      | Yes            |
| Bosnia-Herzegovina               | BIH      | Yes            |
| Botswana                         | BWA      | Yes            |
| Brazil                           | BRA      | Yes            |
| Brunei Darussalam                | BRN      | Yes            |
| Canada                           | CAN      | Yes            |
| Cayman Islands                   | CYM      | Yes            |
| Chile                            | CHL      | Yes            |
| Colombia                         | COL      | Yes            |
| Costa Rica                       | CRI      | Yes            |
| Croatia                          | HRV      | Yes            |
| Curacao                          | CUW      | Yes            |
| Cyprus                           | CYP      | Yes            |
| Czechia                          | CZE      | Yes            |
| Denmark                          | DNK      | Yes            |
| Dominica                         | DMA      | Yes            |
| Dominican Republic               | DOM      | Yes            |
| Ecuador                          | ECU      | Yes            |
| Egypt                            | EGY      | Yes            |
| El Salvador                      | SLV      | Yes            |
| Estonia                          | EST      | Yes            |
| Fiji                             | FJI      | Yes            |
| Finland                          | FIN      | Yes            |
| France                           | FRA      | Yes            |
| French Guiana                    | GUF      | Yes            |
| French Polynesia                 | PYF      | Yes            |
| Gambia                           | GMB      | Yes            |
| Georgia                          | GEO      | Yes            |
| Germany                          | DEU      | Yes            |
| Ghana                            | GHA      | Yes            |
| Greece                           | GRC      | Yes            |
| Greenland                        | GRL      | Yes            |
| Grenada                          | GRD      | Yes            |
| Guadeloupe                       | GLP      | Yes            |
| Guam                             | GUM      | Yes            |
| Guatemala                        | GTM      | Yes            |
| Guernsey                         | GGY      | Yes            |
| Guyana                           | GUY      | Yes            |
| Holy See                         | VAT      | Yes            |
| Honduras                         | HND      | Yes            |
| Hong Kong                        | HKG      | Yes            |
| Hungary                          | HUN      | Yes            |
| Iceland                          | ISL      | Yes            |
| India                            | IND      | Yes            |
| Ireland                          | IRL      | Yes            |
| Isle of Man                      | IMN      | Yes            |
| Israel                           | ISR      | Yes            |
| Italy                            | ITA      | Yes            |
| Japan                            | JPN      | Yes            |
| Jersey                           | JEY      | Yes            |
| Jordan                           | JOR      | Yes            |
| Kazakhstan                       | KAZ      | Yes            |
| Korea (Republic of)              | KOR      | Yes            |
| Latvia                           | LVA      | Yes            |
| Liechtenstein                    | LIE      | Yes            |
| Lithuania                        | LTU      | Yes            |
| Luxembourg                       | LUX      | Yes            |
| Macau                            | MAC      | Yes            |
| Malawi                           | MWI      | Yes            |
| Malaysia                         | MYS      | Yes            |
| Malta                            | MLT      | Yes            |
| Marshall Islands                 | MHL      | Yes            |
| Martinique                       | MTQ      | Yes            |
| Mauritius                        | MUS      | Yes            |
| Mayotte                          | MYT      | Yes            |
| Mexico                           | MEX      | Yes            |
| Micronesia                       | FSM      | Yes            |
| Moldova                          | MDA      | Yes            |
| Mongolia                         | MNG      | Yes            |
| Montenegro                       | MNE      | Yes            |
| Nauru                            | NRU      | Yes            |
| Netherlands                      | NLD      | Yes            |
| New Caledonia                    | NCL      | Yes            |
| New Zealand                      | NZL      | Yes            |
| Niue                             | NIU      | Yes            |
| Northern Mariana Islands         | MNP      | Yes            |
| Norway                           | NOR      | Yes            |
| Oman                             | OMN      | Yes            |
| Paraguay                         | PRY      | Yes            |
| Peru                             | PER      | Yes            |
| Poland                           | POL      | Yes            |
| Portugal                         | PRT      | Yes            |
| Puerto Rico                      | PRI      | Yes            |
| Reunion                          | REU      | Yes            |
| Romania                          | ROU      | Yes            |
| Rwanda                           | RWA      | Yes            |
| Saint Barthelemy                 | BLM      | Yes            |
| Saint Lucia                      | LCA      | Yes            |
| Saint Martin (French part)       | MAF      | Yes            |
| Saint Pierre and Miquelon        | SPM      | Yes            |
| Saint Vincent and the Grenadines | VCT      | Yes            |
| Samoa                            | WSM      | Yes            |
| San Marino                       | SMR      | Yes            |
| Saudi Arabia                     | SAU      | Yes            |
| Serbia                           | SRB      | Yes            |
| Seychelles                       | SYC      | Yes            |
| Singapore                        | SGP      | Yes            |
| Sint Maarten                     | SXM      | Yes            |
| Slovakia                         | SVK      | Yes            |
| Slovenia                         | SVN      | Yes            |
| Spain                            | ESP      | Yes            |
| Sweden                           | SWE      | Yes            |
| Switzerland                      | CHE      | Yes            |
| Taiwan                           | TWN      | Yes            |
| Timor-Leste                      | TLS      | Yes            |
| Tunisia                          | TUN      | Yes            |
| Turks and Caicos Islands         | TCA      | Yes            |
| United Kingdom                   | GBR      | Yes            |
| United States of America         | USA      | Yes            |
| Uruguay                          | URY      | Yes            |
| Uzbekistan                       | UZB      | Yes            |
| Virgin Islands (U.S.)            | VIR      | Yes            |
| Wallis and Futuna                | WLF      | Yes            |
| Zambia                           | ZMB      | Yes            |

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Set Up Worker Wallets" icon="wallet" href="/wallets/worker-wallets">
    Create Users and complete KYC
  </Card>

  <Card title="Payout" icon="paper-plane" href="/wallets/payout">
    Send funds from wallets to beneficiaries
  </Card>

  <Card title="Payments API Reference" icon="code" href="/api-reference/payments">
    Virtual accounts API documentation
  </Card>
</CardGroup>
