Skip to main content

CVL KRA Search and Verify API

This document highlights the CVL KRA Search and Verify API details.

Objective

The CVL KRA Search and Verify API authenticates the status of a user's Know Your Customer (KYC) record by cross-referencing their Permanent Account Number (PAN) against various KYC Registration Agency (KRA) databases.

API URL

https://ind-engine.thomas.hyperverge.co/v1/CVLSearchAndVerify

API Endpoint

CVLSearchAndVerify

Overview

The API is RESTful and uses standard HTTP verbs and status codes. The responses are in JSON format and you should upload all images and files as form-data through a POST request.

Authentication

You need a unique pair of application ID (appId) and application key (appKey) from HyperVerge to verify your identity for accessing the API.

API Request Details

Method - POST

Headers

ParameterMandatory or OptionalDescriptionAllowed Values
content-type MandatoryThis parameter defines the media type for the request payloadapplication/json
appId MandatoryThe application identifier shared by HyperVerge. You can find the details in the dashboard's credentials tab.This should be a unique value.
appKey MandatoryThe application key shared by HyperVerge. You can find the details in the dashboard's credentials tab.This should be a unique value.
transactionIdMandatoryA unique identifier for tracking a user journeyThis should be both unique and easily associated with the user's journey in your application(s)

Input

The following table provides the details of the parameters required for the API's request body:

ParameterDescriptionMandatory or OptionalAllowed ValuesDefault Value
appPanNoThe unique 10-digit alphanumeric PAN MandatoryFormat: 'CCCCCDDDDC'
'C' represents a character and 'D' represents a digit
Not Applicable

Sample Request

The following code snippet demonstrates a standard curl request for the API:

curl --location --request POST 'https://ind-engine.thomas.hyperverge.co/v1/CVLSearchAndVerify' \
--header 'Content-Type: application/json' \
--header 'appId: <Enter_the_HyperVerge_appId>' \
--header 'appKey: <Enter_the_HyperVerge_appKey>' \
--header 'transactionId: <Enter_the_HyperVerge_transactionID>' \
--data '{
"appPanNo": "<Enter_the_PAN>"
}'

Success Response

The following code snippet demonstrates a success response from the API:

{
"status": "success",
"statusCode": 200,
"result": {
"CVLSearchAndVerifyResponse": {
"appPanInq": {
"appPanNo": "<PAN_Number>",
"appName": "<Full_Name>",
"appStatus": "<Application_Status_Code>",
"appStatusdt": "<Application_Status_DateTime>",
"appEntrydt": "<Application_Entry_DateTime>",
"appModdt": "",
"appStatusDelta": "",
"appUpdtStatus": "<Application_Update_Status_Code>",
"appHoldDeactiveRmks": "",
"appUpdtRmks": "",
"appKycMode": "<KYC_Mode>",
"appIpvFlag": "<IPV_Flag>",
"appUboFlag": "",
"appPerAddProof": "<Permanent_Address_Proof>",
"appCorAddProof": "<Correspondence_Address_Proof>",
"appStatusKra": "<KRA_Status>",
"appStatusDesc": "<KRA_Status_Description>",
"appUpdtStatusKra": "<KRA_Update_Status>",
"appStatusUpdtDesc": "Not available (will not be displayed)"
},
"appPanSumm": {
"batchId": "<Batch_ID>",
"appResponseDate": "<Application_Response_DateTime>",
"appTotalRec": "<Total_Records>"
}
},
"appUpdtflg": "<Application_Update_Flag>",
"status": "Not available (will not be displayed)"
},
"metaData": {
"requestId": "<Request_ID>",
"transactionId": "<Transaction_ID>"
}
}

Success Response Details

The following table outlines the details of the success response from the API:

ParameterTypeDescription
appPanNostringThe 10 digit PAN of the user (same as the input request)
appNamestringThe name of the PAN holder
appStatusstringThe three digit status code for a new KYC Application. The complete list of these codes can be referenced in the KYC Status Code Descriptions section.
appStatusDescstringThe description of the new KYC application status
appUpdtStatusstringThe status of the KYC modification request represented as a three digit code. The complete list of these codes can be referenced in the KYC Modification Status Code Descriptions section.
appStatusUpdtDescstringThe description of the modified KYC application status
appStatusdtstringThe date and time when the KYC status was last updated, displayed in the DD-MM-YYYY HH:MM:SS format
appEntrydtstringThe date and time when the KYC was created,displayed in the DD-MM-YYYY HH:MM:SS format
appModdtstringThe date and time of the latest modification of KYC record in Parent KRA, displayed in the DD-MM-YYYY HH:MM:SS format
appStatusDeltastringThe details of any missing data fields that prevented the KYC application from being verified
appHoldDeactiveRmksstringThe remarks for when a new KYC process, has either been put on hold or deactivated
appUpdtRmksstringThe remarks for when a modification request for KYC have been put on hold or rejected
appKycModestringThe mode of KYC used for an application (e-KYC, Normal KYC, Digilocker or others)
appIpvFlagstringThe information pertaining to whether in-person verification was done, where Y indicates yes, N indicates no and E indicates exempted
appUboFlagstringIndicates whether the applicant is an Ultimate Beneficial Owner (UBO)
appPerAddProofstringThe document used as proof of permanent address
appCorAddProofstringThe document used as proof of correspondence address
appStatusKrastringThis field indicates the KRA with which the PAN is associated, for a new KYC application
appUpdtStatusKrastringThis field indicates the KRA with which the PAN is associated, for a modified KYC application. A KYC application can only be modified once it has been registered and verified.
batchIdstringThe unique batch ID assigned by the KRA for each batch
appResponseDatestringThe date and time when response is given by KRA, displayed in DD-MM-YYYY HH:MM:SS format
appTotalRecstringThe total number of records
appUpdtflgstringThis flag sets the Status field in the response and indicates the next steps for KYC application processing (e.g., Modify with Document, Interop Modification).

Error Responses

The following are some error responses from the API:

{
"status": "failure",
"statusCode": "400",
"message": "Invalid PAN format",
"metaData": {
"requestId": "<Request_ID>",
"transactionId": "<Transaction_ID>"
}
}

Error Response Details

An error response from the module contains a failure status, with a relavant status code and error message. The following table lists all error responses.

Status CodeError MessageError Description
400Invalid InputThe 10-digit PAN is not in the CCCCCDDDDC format
401Missing/Invalid credentialsThe request is either missing the mandatory appId and appKey combination or has invalid values
500Internal Server ErrorPlease check the request headers or contact the HyperVerge team for resolution

KYC Status Code Descriptions

note

The user KYC data could be present in any of the five KRA databases. A status code is represented as a three-digit string, 'XYZ', where;

  • 'X' can be the following :

    • 0 - CVLKRA
    • 1 - NDML
    • 2 - DOTEX
    • 3 - CAMS
    • 4 - KARVY
  • Charaters 'YZ' together represent the status description of the KYC application

With the following mapping in mind, please refer to the table below:

Output field: appStatusOutput field: appStatusDesc
CVLKRANDMLDOTEXCAMSKARVYStatus Description
000100200300400Not Checked with respective KRA: The KRA-specific code, if returned, indicates that the user's KYC record could not be checked for that KRA database due to some failure.
001101201301401Submitted : The data required for the KYC application has been submitted.
002102202302402KRA Verified (KRA Registered) : The KYC application that has not yet been validated, due to inconsistencies in one or more of the following data fields: POA/POI data, e-mail address, phone number, PAN status and aadhaar linking status.
003103203303403Hold: This code is specific for the documents uploaded for the KYC process. If any document is unclear or unreadable by the system, this code is displayed.
004104204304404Rejected : The KYC has been rejected due to some errors with the uploaded data or documents
005105205305405Not available : This code is displayed when:
  • The verification documents have not been submitted
  • The provided data does not match the verification documents submitted
  • The uploaded documents are unclear or unreadable
006106206306406Deactivated : The KYC record has been deactivated by the KRA, and no further action can be taken on it until reactivated
007107207307407KRA Validated: The user's KYC is Validated. This status is assigned when the KRA can independently validate the POA/POI document with source data (such as Income Tax Department database on PAN, Aadhaar XML/DigiLocker/m-Aadhaar), and either PAN-Aadhaar linking was successful or Not Applicable, along with validated Email and/or Mobile number.
011111211311411Existing KYC Submitted : An older KYC record has been submitted but is pending verification
012112212312412Existing KYC Verified: The previously submitted KYC has been successfully verified and is valid
013113213313413Existing KYC Hold : The older KYC record is on hold due to incomplete or incorrect documentation
014114214314414Existing KYC Rejected: The older KYC record has been rejected due to errors in the application or mismatched documents
022    KYC REGISTERED WITH CVLMF: Indicates if the KYC is registered with CVL Mutual Funds
888888888888888Not Checked with Multiple KRA: This code is displayed when more than one of the KRA databases can not be searched for KYC against a user's PAN
999999999999999Invalid PAN NO Format:The 10-digit PAN is not in the CCCCCDDDDC format

KYC Modification Status Code Descriptions

note

The user KYC data could be present in any of the 4 KRAs. To refer to the following table, please note that a status code is structured as 'xyz', where;

  • 'x' can be the following :

    • 0 - CVLKRA
    • 1 - NDML
    • 2 - DOTEX
    • 3 - CAMS
    • 4 - KARVY
  • 'yz' represents the status of the KYC application

With the following mapping in mind, please refer to the table below:

Output field: appUpdtStatusOutput field:appUpdtStatusDesc
CVLKRANDMLDOTEXCAMSKARVYStatus Description
000100200300400Not Checked with Respective KRA
001101201301401Modification Under Process
002102202302402Modification Registered
003103203303403Modification Hold
004104204304404Modification Rejected
005105205305405Not available (will not be displayed)
006106206306406Deactivated
007107207307407Modification Validated
888888888888888Not Checked with Multiple KRA
005105205305405If No value present (Blank), treat as Not available
Was this helpful?
Ask AIBeta
Hi! How can I help?
Ask me anything about HyperVerge products, APIs, and SDKs.
Try asking: