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

# KYC — USD Account Requirements

> KYC requirements for starting a USD account. Requirements vary slightly by the user's country of residence.

<div className="bmoni-spine">
  <span>Lifecycle</span>
  <a data-stage="1" href="/lifecycle#1-create-the-user">User</a>
  <a data-stage="2" href="/lifecycle#2-provision-the-smart-wallet">Wallet</a>
  <a data-stage="3" href="/lifecycle#3-verify-identity-kyc">KYC</a>
  <a data-stage="4" href="/lifecycle#4-activate-the-rail">Rail</a>
  <a data-stage="5" href="/lifecycle#5-fund-the-wallet">Fund</a>
  <a data-stage="6" href="/lifecycle#6-move-money">Move money</a>
</div>

The USD account is issued as a **USD virtual bank account (VBA)** — USD received (ACH/wire) is converted to `USDB` and swept to the user's smart wallet. Requirements vary slightly by the user's country of residence.

***

## How it works (the flow)

1. **`PATCH /kyc`** — User submits KYC data progressively (partial updates allowed), alongside the document uploads.
2. **`POST /kyc/activate`** — Starts identity verification. Non-Nigerian, non-Canadian users pass a `sumsubLevelName` (commonly `"id-and-liveness"`).
3. **Provision the USD virtual bank account** — once the KYC profile is complete:
   * `GET /kyc/usd-readiness` → `{ ready, missing }`; gate on `ready`.
   * `POST /onboarding/start-usa` with `{ "smartWalletId": "…" }` → `{ workflowId }` (idempotent).
   * Poll `GET /vba/usd` → `{ status, account, reason }`; `account` is populated once `status` is `active`.

***

## Core requirements (all international USD users)

**Personal Info**

| Field         |          |
| ------------- | -------- |
| `firstName`   | required |
| `lastName`    | required |
| `middleName`  | optional |
| `dateOfBirth` | required |

**Address**

| Field         |                                                                  |
| ------------- | ---------------------------------------------------------------- |
| `streetLine1` | required                                                         |
| `city`        | required                                                         |
| `state`       | required — state/province (stored upstream as `subdivisionName`) |
| `postalCode`  | required                                                         |
| `countryCode` | required — ISO 3166-1 alpha-3                                    |

**Identification Documents (uploaded files)**

* At least one document of type: `passport`, `drivers_license`, `national_id`, or `government_id`
* Must include a `front` or `additional` image file
* `documentNumber` — required
* `issuingCountryCode` — required

**Additional requirements when activating with `sumsubLevelName`**

Users on the Global KYC path (non-Nigeria, non-Canada) additionally need before activation:

| Field                         |                                       |
| ----------------------------- | ------------------------------------- |
| `employment.employmentStatus` | required                              |
| `sourceOfFunds`               | required                              |
| Proof of address document     | required — at least one uploaded file |
| Biometric document (selfie)   | required — at least one uploaded file |

***

## Country-specific additional requirements

**USA (United States)**

* SSN required in `identificationNumbers`:
  * `type: "ssn"`, `issuingCountryCode: "USA"`

**GBR (United Kingdom)**

* NINO required in `identificationNumbers`:
  * `type: "nino"`, `issuingCountryCode: "GBR"`

**NGA (Nigeria) — Enhanced Due Diligence (EDD)**

All core requirements, plus:

| Field                         |                                                                                                       |
| ----------------------------- | ----------------------------------------------------------------------------------------------------- |
| `employment.employmentStatus` | required                                                                                              |
| `employment.occupationCode`   | required, non-null — from `GET /kyc/occupations`                                                      |
| `sourceOfFunds`               | required; must be consistent with employment status — cannot be `"salary"` if unemployed or a student |
| `estimatedMonthlyVolume`      | required, in USD                                                                                      |
| `accountPurpose`              | defaults to `"personal"`                                                                              |
| `actingAsIntermediary`        | defaults to `false`                                                                                   |
