---
title: "Kyrgyzstan"
url: "https://developer.incode.com/general-reference/kyrgyzstan/"
section: "general-reference"
group: "eKYC Reference / eKYC Coverage"
version: "v1.1"
status: "live"
---
# Kyrgyzstan

Kyrgyzstan eKYC verification matches submitted individual data against Kyrgyzstan's official voter register as the source of truth. See the [eKYC API Reference](/general-reference/ekyc-api-reference/) for common response semantics that apply across all sources.

## Available sources

| Source | API source string | Description |
| --- | --- | --- |
| Kyrgyzstan Voter Register | `KG_VOTER_REGISTER` | Verifies submitted data against Kyrgyzstan's official voter register. |

## Kyrgyzstan Voter Register

### Request parameters

| Parameter | Required | Description |
| --- | --- | --- |
| source | Mandatory | Must be `KG_VOTER_REGISTER`. |
| country | Mandatory | Must be `KG`. |
| firstName | Mandatory | First name of the individual. Can be submitted in Latin or Cyrillic — both match. |
| surName | Mandatory | Last name of the individual. Kyrgyz patronymic surname forms (uulu, kyzy) are supported. Can be submitted in Latin or Cyrillic. |
| city | Mandatory | Plain city name (for example, `Бишкек`, `Bishkek`, `Ош`, `Osh`). Provide the city, not the region. City prefixes such as `г.`, `g.`, `город`, and `gorod` are stripped automatically before the request is sent. A wrong city, a region name, or a prefixed city causes the entire check to fail, including name matching. |
| middleName | Optional | Patronymic of the individual. Not included in `fullNameMatch`. |
| gender | Optional | Accepted values are `M` or `F`. |
| street | Optional | Street name and house number in one field (for example, `ul. Kiyevskaya, d. 45`). Can be submitted in Latin or Cyrillic. Address matching is at street level — a wrong house number may still return a match. |
| idNum | Optional | Kyrgyz PIN (Personal Identification Number) printed on the biometric ID card (eID). Format: exactly 14 numeric digits (`PDDMMYYYYRNNNK` — where `P` is gender digit, `DDMMYYYY` is date of birth, `RNNN` is authority code and sequence number, `K` is check digit). For example, `21505199012345`. |

### Sample request

```json
{
    "plugins": ["kyc"],
    "source": "KG_VOTER_REGISTER",
    "firstName": "John",
    "middleName": "Example",
    "surName": "Doe",
    "country": "KG",
    "city": "Бишкек",
    "street": "ul. Example, d. 1",
    "gender": "M",
    "idNum": "21505199012345"
}
```

### Response fields

Kyrgyzstan Voter Register anchors verification on full name and address. See the eKYC API Reference for common match field definitions and status values.

| Field | Statuses | Description |
| --- | --- | --- |
| `firstNameMatch` | `exact`, `fuzzy`, `nomatch` | Matches first name submitted against the value in the source of truth. |
| `lastNameMatch` | `exact`, `fuzzy`, `nomatch` | Matches last name submitted against the value in the source of truth. |
| `middleNameMatch` | `exact`, `fuzzy`, `nomatch`, `nodata` | Matches patronymic submitted against the value in the source of truth. Shown as a standalone field, not included in `fullNameMatch`. |
| `fullNameMatch` | `exact`, `fuzzy`, `nomatch`, `nodata` | Composite match derived from `firstNameMatch` and `lastNameMatch` only. |
| `genderMatch` | `exact`, `fuzzy`, `nomatch`, `nodata` | Matches gender submitted against the value in the source of truth. |
| `streetMatch` | `exact`, `fuzzy`, `nomatch`, `nodata` | Matches street address submitted against the value in the source of truth. Address matching is at street level. |
| `cityMatch` | `exact`, `fuzzy`, `nomatch`, `nodata` | Matches city submitted against the value in the source of truth. |
| `fullAddressMatch` | `exact`, `fuzzy`, `nomatch`, `nodata` | Composite match derived from `cityMatch` and `streetMatch`. |
| `idNumMatch` | `exact`, `fuzzy`, `nomatch`, `nodata` | Matches the personal identification number (PIN) submitted against the value in the source of truth. |
| `overallLevel` | `low`, `medium`, `high` | Overall risk level. See below for calculation logic. |

:::info
The source of truth only returns results for the fields that were sent in the request. If a field was not submitted, its corresponding response key is not returned — this counts as `nodata` in all composite logic.
:::

### overallLevel calculation

overallLevel is calculated based on the risk associated with the submitted full name and address:

- **low** when `fullNameMatch` is `exact` AND (`fullAddressMatch` is `exact` OR (`fullAddressMatch` is `fuzzy` AND `idNumMatch` is `exact`)).
- **high** when `fullNameMatch` is `nomatch` OR `fullAddressMatch` is `nomatch` or `nodata`.
- **medium** for all other combinations.

Contact your Incode representative to customize the overallLevel calculation for your use case.





### Sample response

```json
{
    "kyc": [
        { "key": "firstNameMatch",   "status": "exact" },
        { "key": "lastNameMatch",    "status": "exact" },
        { "key": "middleNameMatch",  "status": "exact" },
        { "key": "fullNameMatch",    "status": "exact" },
        { "key": "genderMatch",      "status": "exact" },
        { "key": "streetMatch",      "status": "exact" },
        { "key": "cityMatch",        "status": "exact" },
        { "key": "fullAddressMatch", "status": "exact" },
        { "key": "idNumMatch",       "status": "exact" },
        { "key": "overallLevel",     "status": "low" }
    ]
}
```