General reference, eKYC Reference / eKYC Coverage

India

India eKYC verification matches submitted individual data against an Indian government source of truth. See the eKYC API Reference for common response semantics that apply across all sources.

Available sources

Source API source string Description
India DMV IN_DMV Verifies submitted driver's license details.
India PAN INDIA_PAN_1 Verifies submitted name, date of birth, and PAN (Permanent Account Number) against a government-partnered source.
India Passport INDIA_PASSPORT_1 Verifies submitted name, date of birth, passport number, file number (PRFN) and issue date against a government-partnered source.

India DMV

Request parameters

Parameter Required Description
source Mandatory Must be IN_DMV.
country Mandatory Must be IN. countryCode takes priority over country if both are provided.
firstName Mandatory First name of the individual. Must not contain digits.
surName Mandatory Last name of the individual. Must not contain digits.
middleName Optional Middle name of the individual. Must not contain digits.
dateOfBirth Mandatory Date of birth. Format: YYYY-MM-DD (for example, 1991-08-02).
idNumber Mandatory Driving license number (for example, SS-RRRR-YYYY-NNNNNNN).
street Optional House number and street name of the individual's address.
city Optional City of the individual's address (for example, Bengaluru).
state Optional State of the individual's address (for example, Karnataka).
postalCode Optional PIN code. Must be exactly 6 digits (for example, 560001).
gender Optional Accepted values are m or f.

The endpoint can accept an empty body ({}), in which case information is pulled from module configuration and session details.

Sample request

{
    "plugins": ["kyc"],
    "source": "IN_DMV",
    "country": "IN",
    "firstName": "Arjun",
    "middleName": "Vikram",
    "surName": "Mehta",
    "dateOfBirth": "1990-03-14",
    "idNumber": "KA0120150009999",
    "street": "12 Street Sample",
    "city": "Bengaluru",
    "state": "Karnataka",
    "postalCode": "560002",
    "gender": "m"
}

Sample response

{
    "kyc": [
        { "key": "firstNameMatch", "status": "exact" },
        { "key": "middleNameMatch", "status": "exact" },
        { "key": "lastNameMatch", "status": "exact" },
        { "key": "fullNameMatch", "status": "exact" },
        { "key": "dobMatch", "status": "exact" },
        { "key": "idNumMatch", "status": "exact" },
        { "key": "streetMatch", "status": "exact" },
        { "key": "cityMatch", "status": "exact" },
        { "key": "stateMatch", "status": "exact" },
        { "key": "postalCodeMatch", "status": "exact" },
        { "key": "fullAddressMatch", "status": "exact" },
        { "key": "genderMatch", "status": "nomatch" },
        { "key": "overallLevel", "status": "low" }
    ]
}

Response fields

Field Statuses Description
firstNameMatch exact, fuzzy, nomatch Matches first name submitted against the value in the source of truth.
middleNameMatch exact, fuzzy, nomatch, nodata Matches middle 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.
fullNameMatch exact, fuzzy, nomatch Matches full name (first, middle, last) submitted against the full name in the source of truth.
dobMatch exact, fuzzy, nomatch, nodata Matches date of birth submitted against the value in the source of truth.
idNumMatch exact, fuzzy, nomatch, nodata Matches driving license number submitted against the value in the source of truth.
streetMatch exact, fuzzy, nomatch, nodata Matches street submitted against the value in the source of truth.
cityMatch exact, fuzzy, nomatch, nodata Matches city submitted against the value in the source of truth.
stateMatch exact, fuzzy, nomatch, nodata Matches state submitted against the value in the source of truth.
postalCodeMatch exact, fuzzy, nomatch, nodata Matches postal code submitted against the value in the source of truth.
fullAddressMatch exact, fuzzy, nomatch, nodata Matches full address (street, city, state, postal code) submitted against the full address in the source of truth.
genderMatch exact, fuzzy, nomatch, nodata Matches gender submitted against the value in the source of truth.
overallLevel low, medium, high Overall risk level based on submitted full name, date of birth, and driving license number. See below for calculation logic.

overallLevel calculation

overallLevel is calculated based on the submitted full name, date of birth, and driving license number:

  • low when fullNameMatch, dobMatch, and idNumMatch are all exact.
  • high when fullNameMatch, dobMatch, OR idNumMatch are nomatch.
  • medium for all other combinations.

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

Error responses

See the eKYC API Reference for standard HTTP response codes and error handling conventions.

India PAN

India PAN verifies submitted name, date of birth, and PAN (Permanent Account Number) against a government-partnered source of truth. The name is verified as a single concatenated string rather than first/last name separately.

Request parameters

Parameter Required Description
source Mandatory Must be INDIA_PAN_1.
country Mandatory Must be IN.
firstName Mandatory First name of the individual.
surName Mandatory Last name of the individual.
dateOfBirth Mandatory Date of birth. Format: YYYY-MM-DD (for example, 1987-08-17).
idNumber Mandatory PAN (Permanent Account Number). Exactly 10 characters: 5 letters, 4 digits, 1 letter (for example, BVZPS1846R).

Sample request

{
    "plugins": ["kyc"],
    "source": "INDIA_PAN_1",
    "country": "IN",
    "firstName": "Priya",
    "surName": "Nair",
    "dateOfBirth": "1992-11-05",
    "idNumber": "ABCDE1234F"
}

Sample response

{
    "kyc": [
        { "key": "fullNameMatch", "status": "exact" },
        { "key": "dobMatch", "status": "exact" },
        { "key": "idNumberMatch", "status": "exact" },
        { "key": "overallLevel", "status": "low" }
    ],
    "income": []
}

Response fields

Field Statuses Description
fullNameMatch exact, fuzzy, nomatch Matches the submitted full name (firstName + surName, concatenated) against the name on record for the PAN. Name is verified as one string — firstNameMatch/lastNameMatch are not returned for this source.
dobMatch exact, nomatch Matches date of birth submitted against the value on record for the PAN.
idNumberMatch exact, nomatch Matches the submitted PAN number against the government-partnered source.
overallLevel low, medium, high Overall risk level based on submitted full name, date of birth, and PAN number. See below for calculation logic.

overallLevel calculation

overallLevel is calculated based on the submitted full name, date of birth, and PAN number:

  • low when (fullNameMatch is exact OR fullNameMatch is fuzzy) AND idNumberMatch is exact AND dobMatch is exact.
  • high when fullNameMatch is nomatch AND idNumberMatch is nomatch AND dobMatch is nomatch.
  • medium for all other combinations.

Error responses

See the eKYC API Reference for standard HTTP response codes and error handling conventions.

India Passport

India Passport verifies submitted name, date of birth, passport number, passport file number (PRFN) and — optionally — passport issue date against a government-partnered source of truth. The name is verified as a single concatenated string rather than first/last name separately.

Request parameters

Parameter Required Description
source Mandatory Must be INDIA_PASSPORT_1.
country Mandatory Must be IN.
firstName Mandatory First name of the individual. Must not contain digits.
surName Mandatory Last name of the individual. Must not contain digits.
dateOfBirth Mandatory Date of birth, in the past. Format: YYYY-MM-DD (for example, 1987-08-17).
idNumber Mandatory Passport number. Exactly 8 characters, uppercase: 1 letter followed by 7 digits (for example, S3733862). Values are uppercased before matching, so lowercase input is accepted.
fileNumber Mandatory Passport file number (PRFN). Exactly 15 characters, uppercase: 2 letters followed by 13 digits (for example, BO3072344560818). Values are uppercased before matching, so lowercase input is accepted.
dateOfIssue Optional Passport issue date. Format: YYYY-MM-DD (for example, 2018-05-14).

Sample request

{
    "plugins": ["kyc"],
    "source": "INDIA_PASSPORT_1",
    "country": "IN",
    "firstName": "Vikram",
    "surName": "Reddy",
    "dateOfBirth": "1988-06-23",
    "idNumber": "J4567890",
    "fileNumber": "DL1234567890123",
    "dateOfIssue": "2020-02-10"
}

Sample response

{
    "kyc": [
        { "key": "fullNameMatch", "status": "exact" },
        { "key": "dobMatch", "status": "exact" },
        { "key": "idNumberMatch", "status": "exact" },
        { "key": "fileNumberMatch", "status": "exact" },
        { "key": "dateOfIssueMatch", "status": "exact" },
        { "key": "overallLevel", "status": "low" }
    ],
    "income": []
}

Response fields

Field Statuses Description
fullNameMatch exact, fuzzy, nomatch Matches the submitted full name (firstName + surName, concatenated) against the name on record for the passport. Name is verified as one string — firstNameMatch/lastNameMatch are not returned for this source.
dobMatch exact, nomatch Matches date of birth submitted against the value on record for the passport.
idNumberMatch exact, nomatch Matches the submitted passport number against the government-partnered source.
fileNumberMatch exact, nomatch Matches the submitted passport file number (PRFN) against the government-partnered source.
dateOfIssueMatch exact, nomatch Matches the submitted passport issue date against the value on record. Returned only when dateOfIssue was included in the request.
overallLevel low, medium, high Overall risk level based on submitted full name, date of birth, and passport number. fileNumberMatch and dateOfIssueMatch do not factor into this calculation. See below for calculation logic.

overallLevel calculation

overallLevel is calculated based on the submitted full name, date of birth, and passport number only — fileNumberMatch and dateOfIssueMatch are not used in this calculation:

  • low when (fullNameMatch is exact OR fullNameMatch is fuzzy) AND dobMatch is exact AND idNumberMatch is exact.
  • high when fullNameMatch is nomatch AND dobMatch is nomatch AND idNumberMatch is nomatch.
  • medium for all other combinations.

Error responses

See the eKYC API Reference for standard HTTP response codes and error handling conventions.

Was this page helpful?