CKYC Upload API
This document highlights the CKYC Upload API details.
API Description
Objective
The CKYC Upload API submits the Know Your Customer (KYC) details of a user to the Central KYC Registry.
API URL
https://ind-ckyc.hyperverge.co/api/v1/customer/upload
API Endpoint
upload
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 or PUT
Headers
| Parameter | Mandatory or Optional | Description | Valid Values |
|---|---|---|---|
| content-type | Mandatory | This parameter defines the media type for the request payload. | application/json |
| appId | Mandatory | Application ID shared by HyperVerge | N/A. This is a unique value. |
| appKey | Mandatory | Application Key shared by HyperVerge | N/A. This is a unique value. |
| transactionId | Mandatory | Unique ID for the customer journey. | N/A. Any defined unique value mapped to a transaction in your business ecosystem. |
Inputs
The mandatory fields required for the API are listed here. The following table provides the details of the parameter required for the API.
| Parameter | Description | Mandatory or Optional | Valid Values | Default Value |
|---|---|---|---|---|
[Parameter] | info The form data parameters such as photo, aadhaarFront, aadhaarBack, idFront and idBack, etc are described here.The image of the officially valid document(OVD) that you are uploading to the central KYC register for the individual or the legal entity. Caution
| Optional | The ID document selections for your image verification requirements are in the following two sections of the CKYC Upload - Reference Document page: | Not Applicable |
metaData | The user information that you are uploading to the Central KYC Registry. The payload inside this metadata parameter will be in JSON format. The sample input is shown in the following section. | Mandatory | The sample metadata is provided here for your reference | Not Applicable |
Request
The CKYC Upload API request body is structured into two categories based on the entity type: Individual, Legal Entity or Related Person.
- Individual: This is for personal accounts where a single individual is the account holder.
- Legal entity: This category is for organizations such as companies, partnerships, trusts, HUFs (Hindu Undivided Family), societies, and other non-individual entities.
- Individual with related person: This category applies when an individual's KYC needs to account for another related person, often for reasons such as guardianship, joint accounts, or power of attorney arrangements.
- Individual
- Legal Entity
- Individual with Related Person
- Legal Entity with Related Person
curl --location --request POST 'https://ind-ckyc.hyperverge.co/api/v1/customer/upload' \
--header 'Content-Type: multipart/form-data' \
--header 'appId: <Enter_the_HyperVerge_appId>' \
--header 'appKey: <Enter_the_HyperVerge_appKey>' \
--header 'transactionId: <Enter_the_HyperVerge_transactionID>' \
--form 'metadata="{}"' \
// the fields below are optional
--form 'photo=@"<path_to_photo>"' \
--form 'aadhaarFront=@"<path_to_aadhaar_front>"' \
--form 'aadhaarBack=@"<path_to_aadhaar_back>"' \
--form 'idFront=@"<path_to_front_side_of_ID>"' \
--form 'idBack=@"<path_to_back_side_of_ID>"' \
--form 'passportFront=@"<path_to_passport_front>"' \
--form 'passportBack=@"<path_to_passport_back>"' \
--form 'dlFront=@"<path_to_driving_license_front>"' \
--form 'dlBack=@"<path_to_driving_license_back>"' \
--form 'voterIdFront=@"<path_to_voter_id_front>"' \
--form 'voterIdBack=@"<path_to_voter_id_back>"' \
--form 'voteridFront=@"<path_to_voterid_front>"' \
--form 'voteridBack=@"<path_to_voterid_back>"' \
--form 'jobCard=@"<path_to_job_card>"' \
--form 'signature=@"<path_to_signature>"' \
--form 'nationalPopRegLetter=@"<path_to_national_pop_reg_letter>"' \
--form 'ekycAuth=@"<path_to_ekyc_auth>"' \
--form 'aadhaarOffline=@"<path_to_aadhaar_offline>"'
curl --location --request POST 'https://ind-ckyc.hyperverge.co/api/v1/customer/upload' \
--header 'Content-Type: multipart/form-data' \
--header 'appId: <Enter_the_HyperVerge_appId>' \
--header 'appKey: <Enter_the_HyperVerge_appKey>' \
--header 'transactionId: <Enter_the_HyperVerge_transactionID>' \
--form 'metadata="{}"' \
// the fields below are optional
--form 'officiallyValidDoc=@"<path_to_officially_valid_document>"' \
--form 'certificateOfIncorporation=@"<path_to_certificate_of_incorporation>"' \
--form 'regCertificate=@"<path_to_registration_certificate>"' \
--form 'memorandum=@"<path_to_memorandum>"' \
--form 'partnershipDeed=@"<path_to_partnership_deed>"' \
--form 'trustDeed=@"<path_to_trust_deed>"' \
--form 'boardResolution=@"<path_to_board_resolution>"' \
--form 'powerOfAttorney=@"<path_to_power_of_attorney>"' \
--form 'activityProof1=@"<path_to_activity_proof_1>"' \
--form 'activityProof2=@"<path_to_activity_proof_2>"' \
--form 'other=@"<path_to_other_document>"'
Related person details are mandatory for minors (constituent type: Individual).
curl --location --request POST 'https://ind-ckyc.hyperverge.co/api/v1/customer/upload' \
--header 'Content-Type: multipart/form-data' \
--header 'appId: <Enter_the_HyperVerge_appId>' \
--header 'appKey: <Enter_the_HyperVerge_appKey>' \
--header 'transactionId: <Enter_the_HyperVerge_transactionID>' \
--form 'metadata="{}"' \
// the fields below are optional
--form 'photo=@"<path_to_photo>"' \
--form 'aadhaarFront=@"<path_to_aadhaar_front>"' \
--form 'aadhaarBack=@"<path_to_aadhaar_back>"' \
--form 'idFront=@"<path_to_front_side_of_ID>"' \
--form 'idBack=@"<path_to_back_side_of_ID>"' \
--form 'passportFront=@"<path_to_passport_front>"' \
--form 'passportBack=@"<path_to_passport_back>"' \
--form 'dlFront=@"<path_to_driving_license_front>"' \
--form 'dlBack=@"<path_to_driving_license_back>"' \
--form 'voterIdFront=@"<path_to_voter_id_front>"' \
--form 'voterIdBack=@"<path_to_voter_id_back>"' \
--form 'voteridFront=@"<path_to_voterid_front>"' \
--form 'voteridBack=@"<path_to_voterid_back>"' \
--form 'jobCard=@"<path_to_job_card>"' \
--form 'signature=@"<path_to_signature>"' \
--form 'nationalPopRegLetter=@"<path_to_national_pop_reg_letter>"' \
--form 'ekycAuth=@"<path_to_ekyc_auth>"' \
--form 'aadhaarOffline=@"<path_to_aadhaar_offline>"'
//below are the documents to be sent in case of related persons for individuals
--form 'aadhaarRelatedPerson1=@"<path_to_aadhaar_related_person_1>"' \
--form 'voterIdRelatedPerson1=@"<path_to_voter_id_related_person_1>"' \
--form 'nregaRelatedPerson1=@"<path_to_nrega_related_person_1>"' \
--form 'passportRelatedPerson1=@"<path_to_passport_related_person_1>"' \
--form 'dlRelatedPerson1=@"<path_to_driving_license_related_person_1>"' \
--form 'nationalPopRegLetterRelatedPerson1=@"<path_to_national_pop_reg_letter_related_person_1>"' \
--form 'ekycAuthRelatedPerson1=@"<path_to_ekyc_auth_related_person_1>"' \
--form 'aadhaarOfflineRelatedPerson1=@"<path_to_aadhaar_offline_related_person_1>"' \
--form 'photoRelatedPerson1=@"<path_to_photo_related_person_1>"'
//atleast one of each needs to be uploaded
curl --location --request POST 'https://ind-ckyc.hyperverge.co/api/v1/customer/upload' \
--header 'Content-Type: multipart/form-data' \
--header 'appId: <Enter_the_HyperVerge_appId>' \
--header 'appKey: <Enter_the_HyperVerge_appKey>' \
--header 'transactionId: <Enter_the_HyperVerge_transactionID>' \
--form 'metadata="{}"' \
// the fields below are optional
--form 'officiallyValidDoc=@"<path_to_officially_valid_document>"' \
--form 'certificateOfIncorporation=@"<path_to_certificate_of_incorporation>"' \
--form 'regCertificate=@"<path_to_registration_certificate>"' \
--form 'memo=@"<path_to_memorandum>"' \
--form 'partnershipDeed=@"<path_to_partnership_deed>"' \
--form 'trustDeed=@"<path_to_trust_deed>"' \
--form 'boardResolution=@"<path_to_board_resolution>"' \
--form 'powerOfAttorney=@"<path_to_power_of_attorney>"' \
--form 'activityProof1=@"<path_to_activity_proof_1>"' \
--form 'activityProof2=@"<path_to_activity_proof_2>"' \
--form 'others=@"<path_to_other_document>"'
//below are the documents to be sent in case of related persons for Legal Entities
--form 'aadhaarRelatedPerson1=@"<path_to_aadhaar_related_person_1>"' \
--form 'voterIdRelatedPerson1=@"<path_to_voter_id_related_person_1>"' \
--form 'nregaRelatedPerson1=@"<path_to_nrega_related_person_1>"' \
--form 'passportRelatedPerson1=@"<path_to_passport_related_person_1>"' \
--form 'dlRelatedPerson1=@"<path_to_driving_license_related_person_1>"' \
--form 'nationalPopRegLetterRelatedPerson1=@"<path_to_national_pop_reg_letter_related_person_1>"' \
--form 'ekycAuthRelatedPerson1=@"<path_to_ekyc_auth_related_person_1>"' \
--form 'aadhaarOfflineRelatedPerson1=@"<path_to_aadhaar_offline_related_person_1>"' \
--form 'photoRelatedPerson1=@"<path_to_photo_related_person_1>"'
//atleast one of each needs to be uploaded
Metadata
This section elaborates on all the different form data fields that can be entered within the metaData form parameter. It provides sample code snippets showing the structure and parameters for each KYC metadata category - Individual, Legal Entity or Related Person:
- Metadata for Individual
- Metadata for Individual with Related Person
- Metadata for Legal Entity
The following metadata structure is used for individual personal accounts (single account holder):
{
"constitutionType": "01",
"isDifferentlyAbled": "yes", // new parameter
"percentageOfImpairment": 20, // mandatory if isDifferentlyAbled is yes
"typeOfImpairment": 1, // mandatory if isDifferentlyAbled is yes
"udidNumber": "<Enter_the_udid_number>", // mandatory if isDifferentlyAbled is yes
"residentialStatus": "<Enter_the_residential_status>", // new parameter
"branchCode": "<Enter_the_branch_code>",
"accountType": "01",
"applicantNamePrefix": "<Enter_the_applicant_name_prefix>",
"applicantFirstName": "<Enter_the_applicant_first_name>",
"applicantMiddleName": "<Enter_the_applicant_middle_name>",
"applicantLastName": "<Enter_the_applicant_last_name>",
"applicantMaidenNamePrefix": "<Enter_the_applicant_maiden_name_prefix>",
"applicantMaidenFirstName": "<Enter_the_applicant_maiden_first_name>",
"applicantMaidenMiddleName": "<Enter_the_applicant_maiden_middle_name>",
"applicantMaidenLastName": "<Enter_the_applicant_maiden_last_name>",
"fatherNamePrefix": "<Enter_the_father_name_prefix>",
"fatherFirstName": "<Enter_the_father_first_name>",
"fatherMiddleName": "<Enter_the_father_middle_name>",
"fatherLastName": "<Enter_the_father_last_name>",
"spouseNamePrefix": "<Enter_the_spouse_name_prefix>",
"spouseFirstName": "<Enter_the_spouse_first_name>",
"spouseMiddleName": "<Enter_the_spouse_middle_name>",
"spouseLastName": "<Enter_the_spouse_last_name>",
"motherNamePrefix": "<Enter_the_mother_name_prefix>",
"motherFirstName": "<Enter_the_mother_first_name>",
"motherMiddleName": "<Enter_the_mother_middle_name>",
"motherLastName": "<Enter_the_mother_last_name>",
"gender": "<Enter_the_gender>",
"dob": "<Enter_the_dob>",
"pan": "<Enter_the_pan>"/ "<FORM60>", // pass form 60 if PAN unavailable
"permanentCurrentAddressMatch": "Y",
"address": {
"line1": "<Enter_the_address_line1>",
"line2": "<Enter_the_address_line2>",
"line3": "<Enter_the_address_line3>",
"city": "<Enter_the_city>",
"district": "<Enter_the_district>",
"state": "<Enter_the_state>",
"country": "<Enter_the_country>",
"pincode": "<Enter_the_pincode>",
"proof": "<Enter_the_proof>"
},
"currentAddress": {
"line1": "<Enter_the_current_address_line1>",
"line2": "<Enter_the_current_address_line2>",
"line3": "<Enter_the_current_address_line3>",
"city": "<Enter_the_current_city>",
"district": "<Enter_the_current_district>",
"state": "<Enter_the_current_state>",
"country": "<Enter_the_current_country>",
"pincode": "<Enter_the_current_pincode>",
"proof": "<Enter_the_current_proof>"
},
"contact": {
"residenceTelephoneStdCode": "<Enter_the_residence_telephone_std_code>",
"residenceTelephone": "<Enter_the_residence_telephone>",
"officeTelephoneStdCode": "<Enter_the_office_telephone_std_code>",
"officeTelephone": "<Enter_the_office_telephone>",
"mobileIsdCode": "<Enter_the_mobile_isd_code>",
"mobile": "<Enter_the_mobile>",
"email": "<Enter_the_email>"
},
"idDetails": [
{
"type": "<Enter_the_id_type>",
"number": "<Enter_the_id_number>"
}
],
"dateOfDeclaration": "<Enter_the_date_of_declaration>",
"placeOfDeclaration": "<Enter_the_place_of_declaration>",
"dateOfKYCVerification": "<Enter_the_date_of_kyc_verification>",
"typeOfDocumentSubmitted": "<Enter_the_type_of_document_submitted>",
"kycVerificationName": "<Enter_the_kyc_verification_name>",
"kycVerificationDesignation": "<Enter_the_kyc_verification_designation>",
"kycVerificationBranch": "<Enter_the_kyc_verification_branch>",
"kycVerificationEmpCode": "<Enter_the_kyc_verification_emp_code>"
}
The following metadata structure is used for minor accounts that require related person information:
For individual accounts of minors, it is mandatory to provide details of related persons.
{
"constitutionType": "01",
"branchCode": "<Enter_the_branch_code>",
"accountType": "<Enter_the_account_type>",
"applicantNamePrefix": "<Enter_the_applicant_name_prefix>",
"applicantFirstName": "<Enter_the_applicant_first_name>",
"applicantMiddleName": "<Enter_the_applicant_middle_name>",
"applicantLastName": "<Enter_the_applicant_last_name>",
"applicantMaidenNamePrefix": "",
"applicantMaidenFirstName": "",
"applicantMaidenMiddleName": "",
"applicantMaidenLastName": "",
"fatherNamePrefix": "<Enter_the_father_name_prefix>",
"fatherFirstName": "<Enter_the_father_first_name>",
"fatherMiddleName": "<Enter_the_father_middle_name>",
"fatherLastName": "<Enter_the_father_last_name>",
"spouseNamePrefix": "<Enter_the_spouse_name_prefix>",
"spouseFirstName": "<Enter_the_spouse_first_name>",
"spouseMiddleName": "<Enter_the_spouse_middle_name>",
"spouseLastName": "<Enter_the_spouse_last_name>",
"motherNamePrefix": "<Enter_the_mother_name_prefix>",
"motherFirstName": "<Enter_the_mother_first_name>",
"motherMiddleName": "<Enter_the_mother_middle_name>",
"motherLastName": "<Enter_the_mother_last_name>",
"gender": "<Enter_the_gender>",
"dob": "<Enter_the_dob>",
"pan": "<Enter_the_pan>",
"permanentCurrentAddressMatch": "<Enter_the_permanent_current_address_match>",
"address": {
"line1": "<Enter_the_address_line1>",
"line2": "<Enter_the_address_line2>",
"line3": "<Enter_the_address_line3>",
"city": "<Enter_the_city>",
"district": "<Enter_the_district>",
"state": "<Enter_the_state>",
"country": "<Enter_the_country>",
"pincode": "<Enter_the_pincode>",
"proof": "<Enter_the_proof>"
},
"currentAddress": {
"line1": "<Enter_the_current_address_line1>",
"line2": "<Enter_the_current_address_line2>",
"line3": "<Enter_the_current_address_line3>",
"city": "<Enter_the_current_city>",
"district": "<Enter_the_current_district>",
"state": "<Enter_the_current_state>",
"country": "<Enter_the_current_country>",
"pincode": "<Enter_the_current_pincode>",
"proof": "<Enter_the_current_proof>"
},
"contact": {
"residenceTelephoneStdCode": "<Enter_the_residence_telephone_std_code>",
"residenceTelephone": "<Enter_the_residence_telephone>",
"officeTelephoneStdCode": "<Enter_the_office_telephone_std_code>",
"officeTelephone": "<Enter_the_office_telephone>",
"mobileIsdCode": "<Enter_the_mobile_isd_code>",
"mobile": "<Enter_the_mobile>",
"email": "<Enter_the_email>"
},
"idDetails": [
{
"type": "<Enter_the_id_type>",
"number": "<Enter_the_id_number>"
}
],
"dateOfDeclaration": "<Enter_the_date_of_declaration>",
"placeOfDeclaration": "<Enter_the_place_of_declaration>",
"dateOfKYCVerification": "<Enter_the_date_of_kyc_verification>",
"typeOfDocumentSubmitted": "<Enter_the_type_of_document_submitted>",
"kycVerificationName": "<Enter_the_kyc_verification_name>",
"kycVerificationDesignation": "<Enter_the_kyc_verification_designation>",
"kycVerificationBranch": "<Enter_the_kyc_verification_branch>",
"kycVerificationEmpCode": "<Enter_the_kyc_verification_emp_code>",
"relatedPersons": [
{
"typeOfRelation": "<Enter_the_type_of_relation>",
"applicantNamePrefix": "<Enter_the_applicant_name_prefix>",
"applicantFirstName": "<Enter_the_applicant_first_name>",
"applicantMiddleName": "<Enter_the_applicant_middle_name>",
"applicantLastName": "<Enter_the_applicant_last_name>",
"applicantMaidenNamePrefix": "",
"applicantMaidenFirstName": "",
"applicantMaidenMiddleName": "",
"applicantMaidenLastName": "",
"fatherNamePrefix": "<Enter_the_father_name_prefix>",
"fatherFirstName": "<Enter_the_father_first_name>",
"fatherMiddleName": "<Enter_the_father_middle_name>",
"fatherLastName": "<Enter_the_father_last_name>",
"spouseNamePrefix": "<Enter_the_spouse_name_prefix>",
"spouseFirstName": "<Enter_the_spouse_first_name>",
"spouseMiddleName": "<Enter_the_spouse_middle_name>",
"spouseLastName": "<Enter_the_spouse_last_name>",
"motherNamePrefix": "<Enter_the_mother_name_prefix>",
"motherFirstName": "<Enter_the_mother_first_name>",
"motherMiddleName": "<Enter_the_mother_middle_name>",
"motherLastName": "<Enter_the_mother_last_name>",
"aadhaar": "<Enter_the_aadhaar>",
"gender": "<Enter_the_gender>",
"dob": "<Enter_the_dob>",
"pan": "<Enter_the_pan>",
"permanentCurrentAddressMatch": "<Enter_the_permanent_current_address_match>",
"address": {
"line1": "<Enter_the_address_line1>",
"line2": "<Enter_the_address_line2>",
"line3": "<Enter_the_address_line3>",
"city": "<Enter_the_city>",
"district": "<Enter_the_district>",
"state": "<Enter_the_state>",
"country": "<Enter_the_country>",
"pincode": "<Enter_the_pincode>",
"proof": "<Enter_the_proof>"
},
"currentAddress": {
"line1": "<Enter_the_current_address_line1>",
"line2": "<Enter_the_current_address_line2>",
"line3": "<Enter_the_current_address_line3>",
"city": "<Enter_the_current_city>",
"district": "<Enter_the_current_district>",
"state": "<Enter_the_current_state>",
"country": "<Enter_the_current_country>",
"pincode": "<Enter_the_current_pincode>",
"proof": "<Enter_the_current_proof>"
},
"contact": {
"residenceTelephoneStdCode": "<Enter_the_residence_telephone_std_code>",
"residenceTelephone": "<Enter_the_residence_telephone>",
"officeTelephoneStdCode": "<Enter_the_office_telephone_std_code>",
"officeTelephone": "<Enter_the_office_telephone>",
"mobileIsdCode": "<Enter_the_mobile_isd_code>",
"mobile": "<Enter_the_mobile>",
"email": "<Enter_the_email>"
},
"idDetails": [
{
"type": "<Enter_the_id_type>",
"number": "<Enter_the_id_number>"
}
],
"dateOfDeclaration": "<Enter_the_date_of_declaration>",
"placeOfDeclaration": "<Enter_the_place_of_declaration>",
"dateOfKYCVerification": "<Enter_the_date_of_kyc_verification>",
"typeOfDocumentSubmitted": "<Enter_the_type_of_document_submitted>",
"kycVerificationName": "<Enter_the_kyc_verification_name>",
"kycVerificationDesignation": "<Enter_the_kyc_verification_designation>",
"kycVerificationBranch": "<Enter_the_kyc_verification_branch>",
"kycVerificationEmpCode": "<Enter_the_kyc_verification_emp_code>"
}
]
}
The following metadata structure is used for legal entities that have related person details to upload:
Legal entities must provide details of at least one related person.
{
"constitutionType": "D",
"branchCode": "<Enter_the_branch_code>",
"entityName": "<Enter_the_entity_name>",
"doi": "<Enter_the_doi>",
"placeOfIncorporation": "<Enter_the_place_of_incorporation>",
"doc": "<Enter_the_doc>",
"countryOfIncorporation": "IN",
"pan": "<Enter_the_pan>"/"<FORM60>", // pass form 60 if PAN unavailable,
"permanentCurrentAddressMatch": "Y",
"address": {
"line1": "<Enter_the_address_line1>",
"line2": "<Enter_the_address_line2>",
"line3": "<Enter_the_address_line3>",
"city": "<Enter_the_city>",
"district": "<Enter_the_district>",
"state": "KA",
"country": "IN",
"pincode": "<Enter_the_pincode>",
"proof": "certificateOfIncorporation"
},
"currentAddress": {
"line1": "<Enter_the_current_address_line1>",
"line2": "<Enter_the_current_address_line2>",
"line3": "<Enter_the_current_address_line3>",
"city": "<Enter_the_current_city>",
"district": "<Enter_the_current_district>",
"state": "<Enter_the_state>",
"country": "IN",
"pincode": "<Enter_the_current_pincode>",
"proof": "certificateOfIncorporation"
},
"contact": {
"residenceTelephoneStdCode": "<Enter_the_residence_telephone_std_code>",
"residenceTelephone": "<Enter_the_residence_telephone>",
"officeTelephoneStdCode": "<Enter_the_office_telephone_std_code>",
"officeTelephone": "<Enter_the_office_telephone>",
"mobileIsdCode": "<Enter_the_mobile_isd_code>",
"mobile": "<Enter_the_mobile>",
"email": "<Enter_the_email>"
},
"relatedPersons": [
{
"typeOfRelation": "<Enter_the_type_of_relation>",
"applicantNamePrefix": "<Enter_the_applicant_name_prefix>",
"applicantFirstName": "<Enter_the_applicant_first_name>",
"applicantLastName": "<Enter_the_applicant_last_name>",
"fatherNamePrefix": "<Enter_the_father_name_prefix>",
"fatherFirstName": "<Enter_the_father_first_name>",
"fatherMiddleName": "<Enter_the_father_middle_name>",
"fatherLastName": "<Enter_the_father_last_name>",
"aadhaar": "<Enter_the_aadhaar>",
"gender": "<Enter_the_gender>",
"dob": "<Enter_the_dob>",
"pan": "<Enter_the_pan>",
"permanentCurrentAddressMatch": "Y",
"address": {
"line1": "<Enter_the_address_line1>",
"city": "<Enter_the_city>",
"district": "<Enter_the_district>",
"state": "<Enter_the_state>",
"country": "IN",
"pincode": "<Enter_the_pincode>",
"proof": "<Enter_the_proof>"
},
"idDetails": [
{
"type": "<Enter_the_id_type_such_as_aadhaar>",
"number": "<Enter_the_id_number>"
}
],
"dateOfDeclaration": "<Enter_the_date_of_declaration>",
"placeOfDeclaration": "<Enter_the_place_of_declaration>",
"dateOfKYCVerification": "<Enter_the_date_of_kyc_verification>",
"typeOfDocumentSubmitted": "<Enter_the_type_of_document_submitted>",
"kycVerificationName": "<Enter_the_kyc_verification_name>",
"kycVerificationDesignation": "<Enter_the_kyc_verification_designation>",
"kycVerificationBranch": "<Enter_the_kyc_verification_branch>",
"kycVerificationEmpCode": "<Enter_the_kyc_verification_emp_code>"
}
],
"idDetails": [
{
"type": "certificateOfIncorporation",
"number": "<Enter_the_certificateOfIncorporation_number>"
}
],
"dateOfDeclaration": "<Enter_the_date_of_declaration>",
"placeOfDeclaration": "<Enter_the_place_of_declaration>",
"dateOfKYCVerification": "<Enter_the_date_of_kyc_verification>",
"typeOfDocumentSubmitted": "<Enter_the_type_of_document_submitted>",
"kycVerificationName": "<Enter_the_kyc_verification_name>",
"kycVerificationDesignation": "<Enter_the_kyc_verification_designation>",
"kycVerificationBranch": "<Enter_the_kyc_verification_branch>",
"kycVerificationEmpCode": "<Enter_the_kyc_verification_emp_code>"
}
metaData Parameter Descriptions
| Parameter Name | Mandatory/Optional | Allowed Values and Type | Parameter Description |
|---|---|---|---|
| constitutionType | Mandatory | String. Should not be null, undefined, or empty. | Type of entity constitution. The possible values of constitutionType are provided here |
| isDifferentlyAbled | Mandatory | String. Should not be null or undefined. Must be one of the following values: yes, no | Indicates if the person is differently abled |
| percentageOfImpairment | Mandatory if isDifferentlyAbled is yes | Number. Should not be null or undefined. Must be between 1 and 100 | Percentage of impairment for differently abled persons |
| typeOfImpairment | Mandatory if isDifferentlyAbled is yes | Number. Should not be null or undefined. Must be a valid impairment type code | Type of impairment for differently abled persons. A list of impairment type codes is provided here. |
| udidNumber | Mandatory if isDifferentlyAbled is yes | String. First 2 digit to be Alphabets and remaining 16 digits to be numeric. Should not be null or undefined. Must be of length 18 | Unique Disability ID number |
| residentialStatus | Mandatory | String. Should not be null or undefined. Must be one of the following values: resident, non-resident | Residential status of the applicant |
| branchCode | Mandatory | String. Should not be empty. Must be of length between 1 to 15 | Branch code of the financial institution |
| accountType | Mandatory | String. Should not be null or undefined. Must be of length 2. Must be one of the following values: 01,04,05 | Type of account.
|
| applicantNamePrefix | Mandatory | String. Should not be null or undefined. Must be in between 1 to 5 | Prefix for applicant's name (Mr., Mrs., Dr., etc.) |
| applicantFirstName | Mandatory | String. Should not be null or undefined. Must be in between 1 to 50 | First name of the applicant |
| applicantMiddleName | Optional | String. Should not be null or undefined. Must be in between 1 to 50 | Middle name of the applicant |
| applicantLastName | Optional | String. Should not be null or undefined. Must be in between 1 to 50 | Last name of the applicant |
| applicantMaidenNamePrefix | Optional | String. Should not be null or undefined. Must be in between 1 to 5 | Prefix for applicant's maiden name |
| applicantMaidenFirstName | Optional | String. Should not be null or undefined. Must be in between 1 to 50 | First name of applicant's maiden name |
| applicantMaidenMiddleName | Optional | String. Should not be null or undefined. Must be in between 1 to 50 | Middle name of applicant's maiden name |
| applicantMaidenLastName | Optional | String. Should not be null or undefined. Must be in between 1 to 50 | Last name of applicant's maiden name |
| fatherNamePrefix | Conditional | String. Should not be null or undefined. Must be in between 1 to 5. Required if father details are provided | Prefix for father's name. Any one of the details - mother's name/ father's name /spouse's name field to be mandatorily provided |
| fatherFirstName | Conditional | String. Should not be null or undefined. Required if father details are provided | First name of father. Any one of the details - mother's name/ father's name /spouse's name field to be mandatorily provided |
| fatherMiddleName | Conditional | String. Should not be null or undefined. Required if father details are provided | Middle name of father. Any one of the details - mother's name/ father's name /spouse's name field to be mandatorily provided |
| fatherLastName | Conditional | String. Should not be null or undefined. Required if father details are provided | Last name of father. Any one of the details - mother's name/ father's name /spouse's name field to be mandatorily provided |
| spouseNamePrefix | Conditional | String. Should not be null or undefined. Must be in between 1 to 5. Required if spouse details are provided | Prefix for spouse's name. Any one of the details - mother's name/ father's name /spouse's name field to be mandatorily provided |
| spouseFirstName | Conditional | String. Should not be null or undefined. Required if spouse details are provided | First name of spouse. Any one of the details - mother's name/ father's name /spouse's name field to be mandatorily provided |
| spouseMiddleName | Conditional | String. Should not be null or undefined. Required if spouse details are provided | Middle name of spouse. Any one of the details - mother's name/ father's name /spouse's name field to be mandatorily provided |
| spouseLastName | Conditional | String. Should not be null or undefined. Required if spouse details are provided | Last name of spouse. Any one of the details - mother's name/ father's name /spouse's name field to be mandatorily provided |
| motherNamePrefix | Conditional | String. Should not be null or undefined. Must be in between 1 to 5. Required if mother details are provided | Prefix for mother's name. Any one of the details - mother's name/ father's name /spouse's name field to be mandatorily provided |
| motherFirstName | Conditional | String. Should not be null or undefined. Required if mother details are provided | First name of mother. Any one of the details - mother's name/ father's name /spouse's name field to be mandatorily provided |
| motherMiddleName | Conditional | String. Should not be null or undefined. Required if mother details are provided | Middle name of mother. Any one of the details - mother's name/ father's name /spouse's name field to be mandatorily provided |
| motherLastName | Conditional | String. Should not be null or undefined. Required if mother details are provided | Last name of mother. Any one of the details - mother's name/ father's name /spouse's name field to be mandatorily provided |
| gender | Mandatory | String. Should not be null, undefined, or empty. Must be one of the following values: M,F,T | Gender of the applicant |
| dob | Mandatory | String. Should not be null, undefined, or empty. Must be of length 10. Should be in DD-MM-YYYY format or valid date | Date of birth of the applicant |
| pan | Mandatory | String. Should not be null, undefined, or empty. Pan no should be valid. Must be of length less than 10 | Permanent Account Number of the applicant |
| permanentCurrentAddressMatch | Mandatory | String. Should not be null or undefined. Must be one of the following values: Y, N, T | Indicates if permanent and current addresses match |
| dateOfDeclaration | Mandatory | String. Should not be null, undefined, or empty. Must be of length 10. Should be in DD-MM-YYYY format or valid date | Date of declaration by the applicant |
| placeOfDeclaration | Mandatory | String. Should not be null, undefined, or empty. Must be of length between 1 to 50 | Place where the declaration was made |
| dateOfKYCVerification | Mandatory | String. Should not be null, undefined, or empty. Must be of length 10. Should be in DD-MM-YYYY format or valid date | Date when KYC verification was performed |
| typeOfDocumentSubmitted | Mandatory | String. Should not be null or undefined. Must be of length 2. Must be one of the following values: 01,02,03,04,05 | Type of document submitted for verification |
| kycVerificationName | Mandatory | String. Should not be null or undefined. Must be in between 1 to 50 | Name of the person who performed KYC verification |
| kycVerificationDesignation | Mandatory | String. Should not be null or undefined. Must be in between 1 to 50 | Designation of the person who performed KYC verification |
| kycVerificationBranch | Mandatory | String. Should not be null or undefined. Must be in between 1 to 50 | Branch where KYC verification was performed |
| kycVerificationEmpCode | Mandatory | String. Should not be null or undefined. Must be in between 1 to 50 | Employee code of the person who performed KYC verification |
| remarks | Optional | Not Applicable | Not Applicable |
| address | Mandatory | Object. Total length of address cannot exceed length 165 | Address information of the applicant |
| address.line1 | Mandatory | String | First line of address |
| address.line2 | Optional | String | Second line of address |
| address.line3 | Optional | String | Third line of address |
| address.city | Mandatory | String. Should not be null or undefined. Must be in between 1 to 50 | City name |
| address.district | Mandatory for India, Optional for other countries | String. Should not be null or undefined. Must be in between 1 to 50 | District name |
| address.state | Mandatory | String. Should not be null or undefined. Must be of length 2 | State code |
| address.country | Mandatory | String. Should not be null or undefined. Must be of length 2. Must be a valid 2-character ISO country code (e.g., IN for India, US for United States) | The Country codes. A list of valid country codes is provided here. |
| address.pincode | Mandatory | String. Should not be null or undefined. Pincode currently not supported | Postal code |
| address.proof | Mandatory | String. Should not be null or undefined | Type of address proof document. A list of valid address proof documents is provided here. |
| currentAddress | Mandatory only if permanentCurrentAddressMatch = N | Not Applicable | Not Applicable |
| currentAddress.line1 | Mandatory | Not Applicable | Not Applicable |
| currentAddress.line2 | Optional | Not Applicable | Not Applicable |
| currentAddress.line3 | Optional | Not Applicable | Not Applicable |
| currentAddress.city | Mandatory | Not Applicable | Not Applicable |
| currentAddress.district | Mandatory for India, Optional for other countries | Not Applicable | Not Applicable |
| currentAddress.state | Optional | Not Applicable | Not Applicable |
| currentAddress.country | Mandatory | Not Applicable | Not Applicable |
| currentAddress.pincode | Mandatory | Not Applicable | Not Applicable |
| currentAddress.proof | Mandatory | Not Applicable cake | Not Applicable |
| contact | Optional | Not Applicable | Not Applicable |
| contact.residenceTelephoneStdCode | Optional | String. Must be between length 1 to 4 | Standard code for residence telephone |
| contact.residenceTelephone | Optional | String. Must be of length 10 | Residence telephone number |
| contact.officeTelephoneStdCode | Optional | String. Must be between length 1 to 4 | Standard code for office telephone |
| contact.officeTelephone | Optional | String. Must be of length 10 | Office telephone number |
| contact.mobileIsdCode | Optional | String. Must be between length 1 to 3 | ISD code for mobile number |
| contact.mobile | Optional | String. Must be of length 10 | Mobile number |
| contact.email | Optional | String. Must be of length between 1 to 100 | Email address |
| contact.faxStdCode | Optional | String. Should not be null or undefined. Must be between length 1 to 4 | Standard code for fax number |
| contact.fax | Optional | String. Should not be null or undefined. Must be of length 10 | Fax number |
| constitutionTypeOthers | Mandatory | String. Should not be null or undefined. Must be of length 20 | Other constitution type details |
| entityName | Mandatory | String. Should not be null or undefined. Must be in between 1 to 150 | Name of the legal entity |
| doi | Mandatory | String. Should not be null or undefined. Must be of length 10 | Date of incorporation |
| placeOfIncorporation | Mandatory | String. Should not be null or undefined. Must be of length between 1 to 50 | Place of incorporation |
| doc | Mandatory | String. Should not be null or undefined. Must be of length 10 | Date of commencement |
| countryOfIncorporation | Mandatory | String. Should not be null or undefined. Must be of length 2 | Country of incorporation |
| tin | Optional | String. Should not be null or undefined. Must be of length 20 | Tax Identification Number |
| tinIssueCountry | Optional | String. Should not be null or undefined. Must be of length 2 | Country that issued the TIN |
| address.proofOfAddressLegal | Mandatory | String. Should not be null or undefined. Must be between length 1 and 75 | Proof of address for legal entity |
| idDetails | Mandatory | Array. Values in idDetails should not be empty. idDetails[index].type should not be null or undefined | Identity document details |
| idDetails[index].type | Mandatory | String | Type of identity document. A list of valid ID proof documents is provided here. |
| idDetails | Mandatory | String | Details of the officially valid document (OVD) used for identification. The possible values of idDetails are provided here. |
| proof | Mandatory | String | Proof of identity or address document provided.The possible values of proof are provided here. |
Success Response
{
"status": "success",
"statusCode": "200",
"result": {
"transactionid": "<Transaction_ID>",
"message": "Request for upload has been successfully registered"
}
}
Error Responses
The following are some error responses from the CKYC Upload API:
- Missing Required Parameters
- Missing/Invalid Credentials
- Internal Server Error
The following is a sample error response you may receive when one or more required parameters are missing from the CKYC Upload API request body:
{
"status": "failure",
"statusCode": "400",
"error": {
"code": "ER_REQ_VALIDATE",
"message": "user photo not found for related person"
}
}
{
"message": "Missing/Invalid credentials",
"statusCode": 401,
"status": "failure"
}
{
"statusCode": 500,
"status": "failure",
"error": "Internal Server Error"
}