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

# Virtual Accounts

> Which customers can open a virtual account, depending on their country of residence and the account currency

A virtual account is opened by our banking partner for your customer. Whether it can be opened depends on the
**country of residence** of the customer (the `country` of the customer, and the `state` in the United States)
and on the **currency** of the account.

**Every country not listed on this page is supported**, subject to the identity verification (KYC) and proof of
address of the customer.

> [!NOTE]
>
> Last updated: October 21, 2026. Our banking partner updates this list from time to time: we keep this page and
> the API checks in line with it.

## Residence, not nationality

The rule applies to the country where your customer **lives**, not to their nationality or to the country that
issued their ID document. The country checked is the `country` of the customer (their residential address, which
must match their proof of address).

| Customer | Nationality | Lives in | Result |
| - | - | - | - |
| Ivan | Russian | France (`FRA`) | ✅ Supported: France is not on the list |
| Anna | French | Russia (`RUS`) | ❌ Refused: Russia is on the list, whatever her nationality |
| Bilal | Pakistani | Germany (`DEU`) | ✅ Supported in every currency, USD included |
| Sara | German | Pakistan (`PAK`) | ⚠️ EUR, BRL and MXN supported; USD refused (currency restriction) |
| John | American | New York (`USA`, state `NY`) | ❌ Refused: the State of New York is not supported |

> [!WARNING]
>
> The country of residence must be the real one. It is checked against the proof of address of the customer: a
> declared address that does not match the documents leads to the refusal of the account.

> [!NOTE]
>
> **Every application is reviewed case by case by our banking partner.** Passing the country check above does not
> guarantee that the account will be opened: our banking partner runs its own verifications on every customer
> (identity, documents, sanctions screening) and may refuse an application, even for a customer living in a
> supported country. In the examples above, Ivan and Bilal are accepted by the API, but their accounts are opened
> only after this review. A refused account moves to the status `failed`, you receive the
> `virtual_account.failed` webhook, and the creation fee is refunded.

## How the API checks it

`POST /virtual-accounts` checks the country of the customer **before** any fee is charged. If the country is not
supported for the requested currency, the request is refused with `422 COUNTRY_NOT_SUPPORTED`, and no creation fee
is debited:

```json theme={null}
{
  "success": false,
  "error": {
    "code": "COUNTRY_NOT_SUPPORTED",
    "message": "USD virtual accounts are not available for residents of Pakistan.",
    "details": { "country": "PAK", "currency": "USD" }
  }
}
```

A customer refused for one currency may be accepted for another one (for example, a resident of Pakistan can open
an EUR account, not a USD account).

## Countries not supported

Virtual accounts are not available, in any currency, for residents of:

| Country | Code |
| - | - |
| Afghanistan | `AFG` |
| Algeria | `DZA` |
| Belarus | `BLR` |
| Burundi | `BDI` |
| China | `CHN` |
| Congo, Democratic Republic of the | `COD` |
| Cuba | `CUB` |
| Guinea-Bissau | `GNB` |
| Iran | `IRN` |
| Iraq | `IRQ` |
| Japan | `JPN` |
| Lebanon | `LBN` |
| Libya | `LBY` |
| Myanmar | `MMR` |
| North Korea | `PRK` |
| Palestine (Gaza Strip and West Bank) | `PSE` |
| Russia | `RUS` |
| Somalia | `SOM` |
| South Korea (new customers) | `KOR` |
| South Sudan | `SSD` |
| Sudan | `SDN` |
| Syria | `SYR` |
| Tunisia | `TUN` |
| Venezuela | `VEN` |
| Yemen | `YEM` |
| Occupied territories of Ukraine: Crimea, Sevastopol, Donetsk, Kherson, Luhansk, Zaporizhzhia | — |

> [!WARNING]
>
> The occupied territories of Ukraine have no country code of their own, so the API cannot refuse them upfront. The
> account is then refused by our banking partner (status `failed`) and the creation fee is refunded.

## Currency restrictions

In these countries, only some currencies are available:

| Currency | Not available for residents of |
| - | - |
| **USD** (ACH, Wire) | Bangladesh (`BGD`), Bhutan (`BTN`), Haiti (`HTI`), Kenya (`KEN`), Kosovo (`XKX`), Morocco (`MAR`), Mozambique (`MOZ`), Nepal (`NPL`), Niger (`NER`), Pakistan (`PAK`), Qatar (`QAT`), Zimbabwe (`ZWE`) |
| **EUR** (SEPA) | Central African Republic (`CAF`), Eritrea (`ERI`), Mali (`MLI`) |

BRL and MXN accounts have no additional country restriction.

## United States

Customers residing in the **State of New York** are not supported. Send the US state of the customer in `state`
(`NY` or `New York`): the API refuses the account upfront. All other states are supported, including Florida,
Louisiana and Texas.

## Related

* [Create a virtual account](/api-reference/virtual-accounts/create)
* [Error Handling](/guides/error-handling)
* [Plans and pricing](/getting-started/plans#virtual-accounts)
* [Supported countries for virtual cards](/supported-countries/virtual-cards)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.