> Toden documentation. For the full index fetch /llms.txt. Every page is available as Markdown by appending .md to its URL. Identity verification uses /api/kyc, Risk Intelligence uses /api/v1; they are separate contracts with different error shapes. Never invent an endpoint, field or enum value: read the API reference page for the operation first.

# Countries & ID types

> Government-database markets, global document coverage, the ID types in each, and their capture requirements.

When creating a verification you pass a `country` and an `idType`. Coverage comes in two tiers:

* **Government-database markets**: `NG`, `GH`, `KE`, `ZA`, `CI`. Full catalogue, **including number-only IDs** (BVN, NIN, …), validated against the source government database. Strongest assurance.
* **Global documents**: **any other ISO-3166 country** verifies via document capture (Document Intelligence): `passport`, `drivers-license`, and `national-id`. No government database sits behind these, so they reach the `document` assurance tier (a passport can still reach the stronger `chip` tier via its NFC chip).

For the full geographic list, including the 48 [business (KYB)](/business-verification/business-verification) registry countries, see [Supported countries](/user-verification/concepts/countries).

> **Note**
>
> The **authoritative** list for your organisation comes from [`GET /config`](/user-verification/server-api/config); it returns only the countries and ID types **enabled for your account** and their feature flags. New countries and ID types reach your organisation only when Toden grants them. Use the catalogue below for reference; use `/config` at runtime.

> **Note**
>
> **SDK availability.** Global-document countries are available via the API and **all three SDKs** (web, React Native, Flutter). See [Feature availability](/integrate/sdks/overview#feature-availability).

## Assurance levels

Every passing verification carries an **`assuranceLevel`** telling you *how strongly* the identity was proven, surfaced on the [status](/user-verification/server-api/verification-status) response, the [webhook](/integrate/webhooks/overview) payload, and workflow [decisioning](/user-verification/workflows/decisioning):

| `assuranceLevel` | How it passed                                                                                                                                                                             |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `chip`           | The document's [NFC chip](/user-verification/checks/nfc-chip) (eMRTD) was read, passively authenticated against the issuing country's certificate, and shown not to be a copy. Strongest. |
| `gov_db`         | Matched against the source government database (the five markets below).                                                                                                                  |
| `document`       | Verified from the document alone (Document Intelligence): the global-document tier.                                                                                                       |

Branch on it to, say, auto-approve `chip` and route `document`-only to review.

## Government-database markets

| Country            | `idType` values                                                           |
| ------------------ | ------------------------------------------------------------------------- |
| `NG` Nigeria       | `bvn`, `bvn-premium`, `nin`, `vnin`, `drivers-license`, `passport`, `pvc` |
| `GH` Ghana         | `ghana-card`, `voters`, `drivers-license`, `ssnit`, `passport`            |
| `KE` Kenya         | `national-id`, `passport`                                                 |
| `ZA` South Africa  | `national-id`, `passport`                                                 |
| `CI` Côte d'Ivoire | `cni`, `residence-card`                                                   |

ID type identifiers are lowercase and hyphenated (e.g. `drivers-license`, not `drivers_license`).

## Global documents (any other country)

For any ISO-3166 country outside the five above, pass its two-letter code with one of the generic document types:

| `idType`          | Capture            | Chip (NFC)                        |
| ----------------- | ------------------ | --------------------------------- |
| `passport`        | Front only (MRZ)   | ✅ eMRTD, reaches `chip` assurance |
| `drivers-license` | Front **and** back | —                                 |
| `national-id`     | Front **and** back | —                                 |

> **Note**
>
> A country whose national ID is already covered by a database-backed key uses **that** instead of the generic `national-id`: `NG` → `nin`, `GH` → `ghana-card`, `CI` → `cni`. Kenya and South Africa's `national-id` *is* the database-backed key.

## Capture requirements

ID types fall into two groups, which determines what you must capture and upload.

### Number-only IDs

Verified from the ID number alone; no document scan required. You may still run a liveness/selfie step if enabled.

| Country | Number-only IDs                     |
| ------- | ----------------------------------- |
| `NG`    | `bvn`, `bvn-premium`, `nin`, `vnin` |

For these, send `idNumber` and (optionally) a `selfie` / `livenessVideo` media ID.

### Document IDs

Every other ID type requires a document scan. Some need both sides:

| Capture            | IDs                                                                                                                                                                                   |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Front only         | `passport` (every country) · all document IDs not listed below                                                                                                                        |
| Front **and** back | Global `drivers-license`, `national-id` · `NG`: `drivers-license`, `pvc` · `GH`: `ghana-card`, `voters`, `drivers-license` · `KE`/`ZA`: `national-id` · `CI`: `cni`, `residence-card` |

For document IDs, [upload](/user-verification/server-api/upload-media) the relevant files (`documentFront`, `documentBack`, `selfie`, …) and reference their `mediaId`s in the verify request.

## Feature flags

Each enabled ID type from [`GET /config`](/user-verification/server-api/config) carries three feature flags:

| Feature                | Meaning                                                                                                                                                                                          |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `documentVerification` | A document image is captured and checked.                                                                                                                                                        |
| `livenessCheck`        | A selfie/liveness step runs and is face-matched to the document.                                                                                                                                 |
| `govDbCheck`           | The ID is validated against the government database. **Always `false` for global-document countries** (no live government source is available there), so those verify by document capture alone. |

Branch your capture flow on these flags so you never ask the user for something the org hasn't enabled. Manage which ID types are enabled under **Settings → Organization → ID Types**.