Customer Verification

Businesses can integrate with Decentro to verify the ID number of their customers or extract information from a public KYC ID. The major benefit of this offering is that customers do not have to upload or share any document images, yet the business can seamlessly onboard customers with very few hassles.

😁

Regex Builder

Developers can refer to this page to build regex-checks that is based on the same checks Decentro performs before validating a document number from a government repository. This will help avoid uneccessary validation errors caused by invalid inputs from users.

Supported Documents

Our Document Verification API supports a good number of widely used customer documents like PAN, RC, Driving License, and Voter ID. Below is the list of all documents that can verified using Decentro's Document Verification API:

Supported DocumentsValid Code for document_type Key in the Request BodyDescription
PANPAN & PAN_DETAILED for verifying PAN numbers.

PAN_COMPARE for verifying the PAN directly from the NSDL source.

PAN_BANK_ACCOUNT_LINKAGE for verifying if the PAN and the Bank Account are linked or not.
A 10-character alphanumeric PAN number
Registration CertificateRC & RC_DETAILEDRC number of the motor vehicle
Driving LicenseDRIVING_LICENSEA 15 / 16 character driving license number
Voter IDVOTER_IDThe Voter ID number found in the Electors Photo Identity Card or Election Card
PassportPASSPORTThe file number of the passport.

1. PAN

PAN Stands for Permanent Account Number and it is a ten-digit alphanumeric number issued by the Income Tax Department of India.

{
    "reference_id": "XXXXXXXXXX",
    "document_type": "PAN",
    "id_number": "XXXXXXXXXX",
    "consent": "Y",
    "purpose": "Providing PAN for onboarding reason"
}
{
    "kycStatus": "SUCCESS",
    "status": "SUCCESS",
    "message": "PAN details retrived successfully.",
    "kycResult": {
        "idNumber": "ABCDE1234F",
        "idStatus": "VALID",
        "name": "MANISH GUPTA"
    },
    "responseKey": "success_pan",
    "responseCode": "S00000",
    "requestTimestamp": "2023-08-30 16:30:33.345177 IST (GMT +0530)",
    "responseTimestamp": "2023-08-30 16:30:33.453545 IST (GMT +0530)",
    "decentroTxnId": "DECXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

PAN_DETAILED Document Type

👍

Additional Configurations in the PAN_DETAILED Document Type

Decentro also provides additional information in the PAN_DETAILED response such as:

  • Father Name
  • Email
  • Gender
  • DOB
  • Mobile Number

Please reach out to our support team if you'd like to explore this configuration of the PAN_DETAILED document type.

{
  "reference_id": "XXXXXXXXXX",
  "document_type": "PAN_DETAILED",
  "id_number": "XXXXXXXXXX",
  "consent": "Y",
  "purpose": "Providing PAN for onboarding reason"
}
{
  "referenceId": "Fetching PAN-Detailed",
  "kycStatus": "SUCCESS",
  "status": "SUCCESS",
  "message": "KYC Details for PAN retrieved successfully",
  "kycResult": {
    "idNumber": "XXXXXXXXXX",
    "idStatus": "VALID",
    "panStatus": "VALID",
    "lastName": "DOE",
    "firstName": "JOHN",
    "fullName": "JOHN DOE",
    "idHolderTitle": "Mr.",
    "idLastUpdated": "20/04/2021",
    "aadhaarSeedingStatus": "Successful"
  },
  "responseKey": "success_pan",
  "responseCode": "S00000",
  "requestTimestamp": "2020-07-24 21:25:20.778016 IST (GMT +0530)",
  "responseTimestamp": "2020-07-24 21:25:21.991470 IST (GMT +0530)",
  "decentroTxnId": "DECXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

The values for aadhaarSeedingStatus are as follows:

  • Successful
  • Unsuccessful
  • Not applicable

PAN_COMPARE Document Type

{
  "reference_id": "XXXXXXXXXX",
  "document_type": "PAN_COMPARE",
  "id_number": "XXXXXXXXXX",
  "name": "XXXXXXXXXX",
  "dob": "YYYY-MM-DD",
  "consent": "Y",
  "consent_purpose": "Providing PAN for onboarding reason"
}
{
    "kycStatus": "SUCCESS",
    "status": "SUCCESS",
    "message": "KYC Details for PAN-Compare retrieved successfully",
    "kycResult": {
        "idNumber": "XXXXXXXXXXX",
        "idStatus": "EXISTING AND VALID",
        "nameMatching": false,
        "dobMatching": true
    },
    "responseKey": "success_pan",
    "responseCode": "S00000",
    "requestTimestamp": "2024-05-10 12:33:27.366843 IST (GMT +0530)",
    "responseTimestamp": "2024-05-10 12:33:27.817512 IST (GMT +0530)",
    "decentroTxnId": "XXXXXXXXXXXXXXX"
}
List of values for idStatus
Existing and Valid
Marked as Fake
Marked as Deactivated
Deleted
Record (PAN) Not Found in ITD Database/Invalid PAN
Existing and Valid but event marked as “Amalgamation” in ITD database
Existing and Valid but event marked as "Acquisition” in ITD database
Existing and Valid but event marked as “Death” in ITD database
Existing and Valid but event marked as “Dissolution” in ITD database
Existing and Valid but event marked as “Liquidated” in ITD database
Existing and Valid but event marked as “Merger” in ITD database
Existing and Valid but event marked as “Partition” in ITD database
Existing and Valid but event marked as “Split” in ITD database
Existing and Valid but event marked as “Under Liquidation” in ITD database
List of values for seedingStatus
Operative PAN
Inoperative PAN
Not applicable in case of Non-Individual PAN

PAN_BANK_ACCOUNT_LINKAGE Document Type

Overview

The PAN to Bank Account Linkage Validation API enables verification of the linkage between a customer's Permanent Account Number (PAN) and their bank account details.

This powerful tool helps businesses confirm that a bank account belongs to the PAN holder, enhancing KYC processes and reducing fraud in financial transactions.

This API is particularly valuable for lending institutions, payment platforms, and financial service providers who need to ensure the authenticity of banking relationships during customer onboarding or transaction processing.

Sample Request Body

{
    "reference_id": "XXXXXXXX",
    "document_type": "PAN_BANK_ACCOUNT_LINKAGE",
    "id_number": "XXXXXXXXXX", // PAN number
    "account_number": "XXXXXXXXXX", // Bank account number optional key
    "ifsc_code": "XXXXXXXXXX", // IFSC code of the bank optional key
    "consent": "Y",
    "consent_purpose": "For account verification"
}

Request Mapping Table

KeyTypeMeaningExample
reference_idStringUnique identifier for the transaction"TX-1234-5678-9012"
id_numberStringCustomer's Permanent Account Number"ABCDE1234F"
account_numberStringBank account number to be verified"12345678901"
ifsc_codeStringIndian Financial System Code of the bank branch"SBIN0001234"
consentStringUser's consent for verification"Y"
consent_purposeStringPurpose for which consent is obtained"For account verification"

Sample Response Body

{
  "referenceId": "XXXXXXXXXX",
  "kycStatus": "SUCCESS",
  "status": "SUCCESS",
  "message": "PAN Bank Account Linkage verified successfully.",
  "kycResult": {
    "idNumber": "XXXXXXXXXX", 
    "accountNumber": "XXXXXXXXXX", 
    "bankIfscCode": "SBIN0000001",
    "accountHolderName": "ABCDXXXX", 
    "accountType": "SAVINGS", 
    "accountNature": "SINGLE", 
    "accountHolderType": "PRIMARY"
  },
  "responseKey": "success_pan_bank",
  "responseCode": "S00000",
  "requestTimestamp": "2023-05-15 10:25:20.778016 IST (GMT +0530)",
  "responseTimestamp": "2023-05-15 10:25:21.991470 IST (GMT +0530)",
  "decentroTxnId": "DECXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

Response Mapping Table

KeyMeaningExample
referenceIdThe reference ID provided in the request"TX-1234-5678-9012"
kycStatusStatus of the KYC verification"SUCCESS"
statusOverall status of the API call"SUCCESS"
messageHuman-readable description of the result"Bank account details retrieved successfully"
kycResultObject containing the verification detailsSee KYC Result Object Fields
responseKeyUnique identifier for the response type"success_pan_bank"
responseCodeResponse code indicating the result"S00000"
requestTimestampTimestamp when the request was received"2023-05-15 10:25:20.778016 IST (GMT +0530)"
responseTimestampTimestamp when the response was generated"2023-05-15 10:25:21.991470 IST (GMT +0530)"
decentroTxnIdUnique transaction ID generated by Decentro"DECXXXXXXXXXXXXXXXXXXXXXXXXXXX"

KYC Result Object Fields

FieldDescription
idNumberThe PAN number of the account holder
accountNumberThe bank account number that was verified
bankIfscCodeThe IFSC code of the bank branch
accountHolderNameName of the account holder as per bank records
accountTypeType of account (e.g., SAVINGS, CURRENT)
accountNatureNature of the account (e.g., SINGLE, JOINT)
accountHolderTypeType of account holder (e.g., PRIMARY)

Response Codes and Messages

Response KeyMessage / DescriptionStatus
success_pan_bankPAN Bank Account Linkage verified successfully.SUCCESS
error_invalid_panThe PAN provided is invalidFAILURE
error_invalid_accountThe bank account details provided are invalidFAILURE
error_invalid_ifscThe IFSC code provided is invalidFAILURE
error_decentro_errorIssue at Decentro's endFAILURE
error_provider_errorA source level issue. Check the error message for more detailsFAILURE

2. RC

RC stands for Registration Certificate and is commonly known as RC in India. It is an official document stating that your motor vehicle has been registered with the Indian Government.

RC is one of the widely used documents for KYC (Know Your Customer) purposes.

{
  "reference_id": "RC Document Verification",
  "document_type": "RC",
  "id_number": "XXXXXXXXXXX",
  "consent": "Y",
  "consent_purpose": "To verify RC document"
}
{
  "kycStatus": "SUCCESS",
  "status": "SUCCESS",
  "message": "Valid Authentication",
  "kycResult": {
    "blacklistStatus": "<blacklist_reason",
    "chassisNumber": "MD2A14AZ2XXXXXXX",
    "status": "ACTIVE",
    "registrationDate": "19-Dec-2012",
    "class": "M-Cycle/Scooter(2WN)",
    "maker": "BAJAJ AUTO LTD DISCOVER 100 BSIII",
    "ownerName": "<owner Name>",
    "registrationNumber": "<rc number>",
    "reportId": "<report id>",
    "engineNumber": "JBZXXXXXXX",
    "fuelType": "PETROL",
    "fitUpto": "18-Dec-2027",
    "insuranceValidity": "22-Nov-2013",
    "pollutionControlValidity": "NA",
    "licenseAddress": "<license address>",
    "taxUpto": "22-Nov-2024"
  },
  "responseKey": "success_rc",
  "responseCode": "S00000",
  "requestTimestamp": "2020-07-24 21:25:20.778016 IST (GMT +0530)",
  "responseTimestamp": "2020-07-24 21:25:21.991470 IST (GMT +0530)",
  "decentroTxnId": "DECXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

😃

RC Detailed

Decentro has the feature to provide detailed information for RC (Registration Certificate) by passing RC-Detailed in the document_type parameter in the request body

{
  "reference_id": "RC-Detailed Document Verification",
  "document_type": "RC_DETAILED",
  "id_number": "XXXXXXXXXXX",
  "consent": "Y",
  "consent_purpose": "To verify RC document"
}
{
  "kycStatus": "SUCCESS",
  "status": "SUCCESS",
  "message": "Valid Authentication",
  "kycResult": {
    "blacklistStatus": "<blacklist_reason",
    "status": "ACTIVE",
    "registrationDate": "10-May-2015",
    "registrationAddress": "<<registration_address>>",
    "registrationNumber": "<<registration_number>>",
    "ownerName": "<<owner's name>>",
    "ownerFatherName": "<<owner's father's name>>",
    "ownerPermanentAddress": "<<owner's permanent address>>",
    "ownerPresentAddress": "<<owner's present address>>",
    "ownerSerialNumber": "1",
    "chassisNumber": "DSBCNA51HXXXXXXX9",
    "bodyType": "TRUCK (OPEN BODY)",
    "class": "Goods Carrier(HGV)",
    "category": "HGV",
    "color": "APR",
    "engineCubicCapacity": "30.00",
    "numberCylinders": "5",
    "unladenWeight": "1080",
    "grossWeight": "1500",
    "wheelbase": "<<vehicle's wheelbase size in mm>>",
    "engineNumber": "XXXXXXXXXXXXXXXXXX",
    "manufacturedMonthYear": "5/20XX",
    "makerDescription": "HYUNDAI MOTOR INDIA LTD / HYUNDAI SANTRO",
    "maker": "Hyundai",
    "fuelType": "DIESEL",
    "nocDetails": [
      "noc details, if any"
    ],
    "normsDescription": "Bharat Stage VI",
    "financer": "<<XYZ BANK LTD>>",
    "financier": "<<ABC COMPANY>>",
    "fitUpto": "1-JAN-20XX",
    "insuranceUpto": "25-July-2022",
    "insuranceDetails": "<<insurance company name>>",
    "insuranceValidity": "<<insurance validity date>>",
    "npCertificateIssuedBy": "Secretary RTA, XXXX",
    "npCertificateNumber": "NP/DL/XX/XXXXXX/XXXX",
    "npCertificateValidity": "05-May-20XX",
    "permitIssueDate": "02-Feb-2016",
    "permitNumber": "XXX/NP/2016/XXXXX",
    "permitType": "National Permit [HEAVY GOODS VEHICLE]",
    "permitValidFrom": "02-Feb-2016",
    "permitValidUpto": "13-Jun-2021",
    "pollutionControlNumber": "XXXXXXXXXXXXXXXX",
    "pollutionControlValidity": "19-Apr-2020",
    "seatingCapacity": "3",
    "sleepingCapacity": "0",
    "standingCapacity": "0",
    "statusAsOn": "<<Date of RC verification>>",
    "taxUpto": "<<Date to which the tax has been paid>>"
  },
  "responseKey": "success_rc",
  "responseCode": "S00000",
  "requestTimestamp": "2020-07-24 21:25:20.778016 IST (GMT +0530)",
  "responseTimestamp": "2020-07-24 21:25:21.991470 IST (GMT +0530)",
  "decentroTxnId": "DECXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

3. Driving License

It is a permit or permission to drive a specific category of vehicle on the road like two-wheeler, four-wheeler, etc. It is an official document issued by the Government of India to drive the vehicle you own specifying that the vehicle category has been mentioned on the Driving License.

🗒️

Driving License - DOB Parameter

It is important to pass dob parameter in the request body to verify Driving License. Sample dob format - YYYY-MM-DD

{
  "reference_id": "Driving License Document Verification",
  "document_type": "DRIVING_LICENSE",
  "id_number": "XXXXXXXXXXX",
  "dob": "yyyy-mm-dd",
  "consent": "Y",
  "consent_purpose": "To verify Driving License document"
}
{
  "status": "SUCCESS",
  "kycStatus": "SUCCESS",
  "message": "KYC Details for Driving License retrieved successfully.",
  "kycResult": {
    "addresses": [
      {
        "addressLine": "HNO-8 A2/B MIG FLATS",
        "completeAddress": "HNO-8 A2/B MIG FLATS, PASCHIM VIHAR, DELHI",
        "country": "India",
        "district": "PASCHIM VIHAR,DELHI",
        "pin": "110063",
        "state": "Delhi",
        "type": "Present"
      },
      {
        "addressLine": "HNO-8 A2/B MIG FLATS",
        "completeAddress": "HNO-8 A2/B MIG FLATS, PASCHIM VIHAR,DELHI",
        "country": "India",
        "district": "PASCHIM VIHAR,DELHI",
        "pin": "110063",
        "state": "Delhi",
        "type": "Permanent"
      }
    ],
    "allClassOfVehicle": [
      {
        "cov": "ADPVEH",
        "expiryDate": "",
        "issueDate": "01-03-2011"
      }
    ],
    "bloodGroup": "U",
    "dateOfBirth": "01-03-1976",
    "drivingLicenseNumber": "DL-XXXXXXXXXXXXX",
    "endorseDate": "",
    "endorseNumber": "",
    "fatheusband": "BODH SHAH",
    "issueDate": "01-03-2011",
    "name": "ANURAG SHAH",
    "state": "Delhi",
    "status": "Active",
    "statusDetails": {
      "from": "",
      "remarks": "",
      "to": ""
    }
  },
  "responseKey": "success_driving_license",
  "responseCode": "S00000",
  "requestTimestamp": "2020-06-02 12:42:34.093924 IST (GMT +0530)",
  "responseTimestamp": "2020-06-02 12:42:35.970804 IST (GMT +0530)",
  "decentroTxnId": "DECXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

4. Voter ID

Voter ID is also known as Election Card or Electors Photo Identity Card. It is an official document issued by the Election Commission of India to adults above age 18.

{
  "reference_id": "VOTERID Document Verification",
  "document_type": "VOTER_ID",
  "id_number": "XXXXXXXXXXX",
  "consent": "Y",
  "consent_purpose": "To verify VOTER_ID document"
}
{
  "status": "SUCCESS",
  "kycStatus": "SUCCESS",
  "message": "KYC Details for Voter ID retrieved successfully.",
  "kycResult": {
    "epicNo": "XXXXXXXXXX",
    "name": "Loganathan -",
    "nameInVernacular": null,
    "gender": "M",
    "emailId": "",
    "mobileNumber": "9952141009",
    "age": 66,
    "dateOfBirth": "Thu Nov 19 00:00:00 UTC 1953",
    "relativeName": "kanapalli -",
    "relativeRelationType": "F",
    "houseNumber": "35",
    "partOrLocationInConstituency": "Chennai Girls Higher Secondary School No,5 School Road,Perambur,Chennai-600011.",
    "partNumberOrLocationNumberInConstituency": "12",
    "district": "CHENNAI",
    "state": "Tamil Nadu",
    "state_code": "S22",
    "parliamentaryConstituency": "CHENNAI NORTH",
    "assemblyConstituency": "Thiru-Vi-Ka-Nagar",
    "pollingBoothCoordinates": "0.0,0.0",
    "pollingBoothAddress": "Chennai Girls Higher Secondary School No,5 School Road,Perambur,Chennai-600011.",
    "pollingBoothNumber": "12",
    "sectionOfConstituencyPart": "2",
    "cardSerialNumberInPollingList": "701",
    "id": "S220150012020701",
    "lastUpdateDate": null,
    "status": "N"
  },
  "responseKey": "success_voterid",
  "responseCode": "S00000",
  "requestTimestamp": "2020-06-02 12:45:08.928726 IST (GMT +0530)",
  "responseTimestamp": "2020-06-02 12:45:09.194639 IST (GMT +0530)",
  "decentroTxnId": "DECXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

5. Passport

The Indian passport is a passport issued by the Ministry of External Affairs of the Republic of India to Indian citizens for the purpose of international travel.

{
    "reference_id": "XXXXXXXXXX",
    "document_type": "PASSPORT",
    "id_number": "XXXXXXXX",
    "dob" : "YYYY-MM-DD",
    "consent": "Y",
    "purpose": "Providing Passport for onboarding reason"
}
{
    "kycStatus": "SUCCESS",
    "status": "SUCCESS",
    "message": "Passport details retrived successfully.",
    "kycResult": {
        "dob": "DD-MM-YYYY",
        "status": true,
        "nameOnPassport": "XXXXXXXXXX XXXXXXX",
        "customerLastName": "XXXXXXX",
        "passortNumber": "XXXXXXXXXX",
        "passportAppliedDate": "DD-MM-YYYY"
    },
    "responseKey": "success_passport",
    "responseCode": "S00000",
    "requestTimestamp": "2023-08-30 16:30:33.345177 IST (GMT +0530)",
    "responseTimestamp": "2023-08-30 16:30:33.453545 IST (GMT +0530)",
    "decentroTxnId": "DECXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}