# India

India eKYC verification matches submitted individual data against Indian sources of truth. See the [eKYC API Reference](https://developer.incode.com/docs/ekyc-api-reference) for common response semantics that apply across all sources.

## Available sources

| Source    | API source string                   | Description                                                                                          |
| --------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------- |
| INDIA PAN | `INDIA_PAN`                         | Verifies submitted data against records associated with the provided PAN (Permanent Account Number). |
| India DMV | {/* TODO: source string unknown */} | Verifies submitted driver's license details.                                                         |

{/* TODO: Confirm with PM — no existing API documentation is available for India DMV. Provide source string, request parameter list, response schema, and overallLevel calculation. Also confirm the customer-facing description: "DMV" is a United States term for driver's license authorities and does not correspond to a real Indian institution, so confirm whether this source verifies against a driver's license database (Sarathi or a state-level RTO record) or something else. */}

## INDIA PAN

### Request parameters

| Parameter    | Required  | Description                                                                                   |
| ------------ | --------- | --------------------------------------------------------------------------------------------- |
| `source`     | Mandatory | Must be `INDIA_PAN`.                                                                          |
| `country`    | Mandatory | Must be `IN`.                                                                                 |
| `panNumber`  | Mandatory | Indian PAN (Permanent Account Number). Ten characters: five letters, four digits, one letter. |
| `firstName`  | Mandatory | First name of the individual.                                                                 |
| `middleName` | Optional  | Middle name of the individual.                                                                |
| `surName`    | Mandatory | Last name of the individual.                                                                  |

### Response fields

INDIA PAN anchors verification on the PAN card. See the [eKYC API Reference](https://developer.incode.com/docs/ekyc-api-reference) for common status values.

| Field                  | Statuses                               | Description                                                                                              |
| ---------------------- | -------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| `panNumberMatch`       | `match`, `nomatch`                     | Indicates whether the PAN number was found in the source of truth.                                       |
| `firstNameMatch`       | `match`, `approximatematch`, `nomatch` | Matches first name submitted against the value in the source of truth.                                   |
| `middleNameMatch`      | `match`, `approximatematch`, `nomatch` | Matches middle name submitted against the value in the source of truth.                                  |
| `lastNameMatch`        | `match`, `approximatematch`, `nomatch` | Matches last name submitted against the value in the source of truth.                                    |
| `fullNameMatch`        | `match`, `approximatematch`, `nomatch` | Matches full name submitted against the full name associated with the PAN number in the source of truth. |
| `panNameMatch`         | `match`, `approximatematch`, `nomatch` | Matches the name on the PAN card record against the name on the physical PAN card document.              |
| `panLastUpdate`        | Date                                   | Date the PAN card was last updated.                                                                      |
| `panStatus`            | `Active`, `Inactive`                   | Indicates whether the PAN number is active or inactive.                                                  |
| `panStatusDescription` | String                                 | Indicates whether the PAN number is existing and valid.                                                  |
| `panHolderType`        | String                                 | The type of entity for the PAN number provided (for example, `Individual`, `Business`).                  |
| `overallLevel`         | `low`, `medium`, `high`                | Overall risk level. See below for calculation logic.                                                     |

### overallLevel calculation

`overallLevel` is calculated based on the submitted full name and the name on the PAN card:

- `low` when `fullNameMatch` and `panNameMatch` are both `match`.
- `high` when `fullNameMatch` is `nomatch` OR `panNameMatch` is `nomatch`.
- `medium` for all other combinations.

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

### Sample response

```json
{
    "kyc": [
        { "key": "panNumberMatch", "status": "match" },
        { "key": "fullNameMatch", "status": "approximatematch" },
        { "key": "panNameMatch", "status": "approximatematch" },
        { "key": "panLastUpdate", "status": "12-02-1998" },
        { "key": "panStatus", "status": "Active" },
        { "key": "panStatusDescription", "status": "Existing and Valid" },
        { "key": "panHolderType", "status": "Individual" },
        { "key": "overallLevel", "status": "medium" }
    ]
}
```

## India DMV

{/* TODO: No existing API documentation is available for this source. Request source string, request parameter list, response schema, and overallLevel calculation from PM. */}

Documentation for this source is forthcoming. Contact your Incode representative for details in the meantime.
