Skip to main content

CKYC Upload

Module Description

The CKYC Upload module uploads the Know Your Customer (KYC) details of a user to the Central KYC Registry.

Prerequisites

  • You will have to register for Cersai testbed to test this flow. Any integration errors have to be solved on the testbed before going live. Click on the following link to get the details of the registration process.

  • You will have to whitelist HyperVerge IPs:

    • Kindly contact HyperVerge to get access to the IPs to be whitelisted
    • Testbed - HV UAT IP should be whitelisted on testbed
    • Production - HV Production IP should be whitelisted on Production
    • Click on the following link for the process document required for the whitelisting process.
  • Procuring SFTP Credentials:

    • Clients will have to obtain SFTP access from CERSAI and provide the credentials to HV. Click on the following link for the Process document
    • SFTP credentials to be shared with HyperVerge:
      • Username or institution code and Password
      • Domain name or IP address
  • You will have to create 2 Admin users on CKYC portal - The Maker and the Checker.

    • example Public and Private keys of any one user to be shared with HyperVerge Webhook Creation
  • You will have to create a webhook to receive Cersai success or error response.

  • You need to provide the following details to set up a one-time configuration with us:

    • organisationName - Enter your organisation name as per CERSAI portal

    • fiCode - Enter your FI Code as per CERSAI portal

    • regionCode - Enter your region code as per CERSAI portal

    • webhookUrl - your API endpoint where you would receive the webhook

    • username - maker credentials that HyperVerge will use to upload

    • password - maker credentials that HyperVerge will use to upload

    • host - SFTP ip address shared by CERSAI to you

Module Inputs

Mandatory Inputs

All the mandatory fields required for the module are listed here.

The following table provides the details of the parameter required for the module.

Parameter Mandatory or Optional Description
image Mandatory The image that you want to upload to the CKYC database.
metaData Mandatory A collection of granular information that you want to be uploaded to the CKYC database. You can find the samples of input expected under metadata in the following section.

Sample Metadata

The KYC metadata for an individual is different from the KYC metadata for a legal entity. The following section provides a sample for each category.

The Error Response Details section provides more details on the nature of the keys present under the metadata label (mandatory or optional) and associated error values.

{
"constitutionType": "01",
"branchCode": "IN1234BB",
"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>",
"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>"
}

Details of the Parameters Used in Metadata

The following are the values of a few parameters which can accept multiple values.

  • imageValue:
    • For keys in the form <imageValue>Front and <imageValue>Back, when only <imageValue>Front is sent we'll be considering that as front and back. When both <imageValue>Front and <imageValue>Back are uploaded we'll be combining both the images and uploading. If <imageValue>Back is given without <imageValue>Front then user will receive 400 error.
    • We can upload files (.jpg, .jpeg, .png) or urls as well for these keys
    • Maximum file size: 6MB
    • You can find the possible values of imageValue mentioned here
  • idDetails:

    • You can find the possible values of idDetails mentioned here
  • proof:

    • You can find the possible values of proof mentioned here
  • constitutionType:

    • You can find the possible values of constitutionType mentioned here

Module Configurations

This module does not support any additional configurations.

Module Outputs

The following section provides the sample and the corresponding details of the various responses you can expect from the module.

You will receive a success response in a format similar to the following code sample if the request is correct.
{
"status": "success",
"statusCode": "200",
"result": {
"transactionid": "d3026f106fcfdee73c321b9ce7f7",
"message": "Request for upload has been successfully registered"
}
}

Error Response Details

The following is a list of keys and related error codes you can encounter.

KeyMandatory or OptionalError Message
constitutionTypeMandatoryconstitutionType should not be null or undefined
constitutionType must be one of the following values: 01,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S
constitutionType must be a string
constitutionType should not be empty
branchCodeMandatorybranchCode must be a string
branchCode should not be empty
branchCode must be of length between 1 to 15
accountTypeOptionalaccountType should not be null or undefined
accountType must be one of the following values: 01,04,05
accountType must be a string
accountType must be of length 2
applicantNamePrefixMandatoryapplicantNamePrefix should not be null or undefined
applicantNamePrefix must be a string
applicantNamePrefix must be in between 1 to 5
applicantFirstNameMandatoryapplicantFirstName should not be null or undefined
applicantFirstName must be a string
applicantFirstName must be in between 1 to 50
applicantMiddleNameOptionalapplicantMiddleName should not be null or undefined
applicantMiddleName must be a string
applicantMiddleName must be in between 1 to 50
applicantLastNameMandatoryapplicantLastName should not be null or undefined
applicantLastName must be a string
applicantLastName must be in between 1 to 50
applicantMaidenNamePrefixOptionalapplicantMaidenNamePrefix should not be null or undefined
applicantMaidenNamePrefix must be a string
applicantMaidenNamePrefix must be in between 1 to 5
applicantMaidenFirstNameOptionalapplicantMaidenFirstName should not be null or undefined
applicantMaidenFirstName must be a string
applicantMaidenFirstName must be in between 1 to 50
applicantMaidenMiddleNameOptionalapplicantMaidenMiddleName should not be null or undefined
applicantMaidenMiddleName must be a string
applicantMaidenMiddleName must be in between 1 to 50
applicantMaidenLastNameOptionalapplicantMaidenLastName should not be null or undefined
applicantMaidenLastName must be a string
applicantMaidenLastName must be in between 1 to 50
fatherNamePrefixNot ApplicableNot Applicable
fatherFirstNameNot ApplicableNot Applicable
fatherMiddleNameNot ApplicableNot Applicable
fatherLastNameNot ApplicableNot Applicable
spouseNamePrefixNot ApplicableNot Applicable
spouseFirstNameNot ApplicableNot Applicable
spouseMiddleNameNot ApplicableNot Applicable
spouseLastNameNot ApplicableNot Applicable
motherNamePrefixNot ApplicableNot Applicable
motherFirstNameNot ApplicableNot Applicable
motherMiddleNameNot ApplicableNot Applicable
motherLastNameNot ApplicableNot Applicable
genderMandatorygender should not be null or undefined
gender must be one of the following values: M, F, T
gender must be a string
gender should not be empty
dobMandatorydob should not be null or undefined
dob must be a string
dob should not be empty
dob must be of length 10
panMandatorypan should not be null or undefined
pan must be a string
pan should not be empty
pan must be of length 10
permanentCurrentAddressMatchMandatorypermanentCurrentAddressMatch should not be null or undefined
permanentCurrentAddressMatch must be one of the following values: Y, N, T
permanentCurrentAddressMatch must be a string
Not Applicable
dateOfDeclarationMandatorydateOfDeclaration should not be null or undefined
dateOfDeclaration must be a string
dateOfDeclaration should not be empty
dateOfDeclaration must be of length 10
placeOfDeclarationMandatoryplaceOfDeclaration should not be null or undefined
placeOfDeclaration must be a string
placeOfDeclaration should not be empty
placeOfDeclaration must be of length between 1 to 50
dateOfKYCVerificationMandatorydateOfKYCVerification should not be null or undefined
dateOfKYCVerification must be a string
dateOfKYCVerification should not be empty
dateOfKYCVerification must be of length between 1 to 50
typeOfDocumentSubmittedMandatorytypeOfDocumentSubmitted should not be null or undefined
typeOfDocumentSubmitted must be one of the following values: 01,02,03,04,05
typeOfDocumentSubmitted must be a string
typeOfDocumentSubmitted must be of length 2
kycVerificationNameMandatorykycVerificationName should not be null or undefined
kycVerificationName must be a string
kycVerificationName must be in between 1 to 50
kycVerificationDesignationMandatorykycVerificationDesignation should not be null or undefined
kycVerificationDesignation must be a string
kycVerificationDesignation must be in between 1 to 50
kycVerificationBranchMandatorykycVerificationBranch should not be null or undefined
kycVerificationBranch must be a string
kycVerificationBranch must be in between 1 to 50
Not Applicable
kycVerificationEmpCodeMandatorykycVerificationEmpCode should not be null or undefined
kycVerificationEmpCode must be a string
kycVerificationEmpCode must be in between 1 to 50
remarksOptionalNot Applicable
addressMandatorytotal length of address cannot exceed length 165
address.line1Optionalline1 must be a string
address.line2Optionalline2 must be a string
address.line3Mandatoryline3 must be a string
address.cityMandatorycity should not be null or undefined
city must be a string
city must be in between 1 to 50
address.districtOptionaldistrict should not be null or undefined
district must be a string
district must be in between 1 to 50
address.stateOptionalstate should not be null or undefined
state must be a string
state must be of length 2
address.countryMandatorycountry should not be null or undefined
country must be a string
country must be of length 2
address.pincodeMandatorypincode should not be null or undefined
pincode must be a string
pincode currently not supported
address.proofMandatoryproof should not be null or undefined
proof must be a string
currentAddressMandatory only if permanentCurrentAddressMatch = NNot Applicable
Not Applicable
currentAddress.line1MNot Applicable
currentAddress.line2OptionalNot Applicable
currentAddress.line3OptionalNot Applicable
currentAddress.cityMNot Applicable
currentAddress.districtOptionalNot Applicable
currentAddress.stateOptionalNot Applicable
currentAddress.countryMNot Applicable
currentAddress.pincodeMNot Applicable
currentAddress.proofMNot Applicable
contactOptionalNot Applicable
contact.residenceTelephoneStdCodeOptionalresidenceTelephoneStdCode must be a string
residenceTelephoneStdCode must be between length 1 to 4
contact.residenceTelephoneOptionalresidenceTelephone must be a string
residenceTelephone must be of length 10
contact.officeTelephoneStdCodeOptionalofficeTelephoneStdCode must be a string
officeTelephoneStdCode must be between length 1 to 4
contact.officeTelephoneOptionalofficeTelephone must be a string
officeTelephone must be of length 10
contact.mobileIsdCodeOptionalmobileIsdCode must be a string
mobileIsdCode must be between length 1 to 3
contact.mobileOptionalmobile must be a string
mobile must be of length 10
contact.emailOptionalemail must be a string
email must be of length between 1 to 100
contact.residenceTelephoneStdCodeOptionalresidenceTelephoneStdCode must be a string
residenceTelephoneStdCode must be between length 1 to 4
constitutionTypeOthersMandatoryconstitutionTypeOthers should not be null or undefined
constitutionTypeOthers must be a string
constitutionTypeOthers must be of length 20
entityNameMandatoryentityName should not be null or undefined
entityName must be a string
entityName must be in between 1 to 150
doiMandatorydoi should not be null or undefined
doi must be a string
doi must be of length 10
placeOfIncorporationMandatoryplaceOfIncorporation should not be null or undefined
placeOfIncorporation must be a string
placeOfIncorporation must be of length between 1 to 50
docMandatorydoc should not be null or undefined
doc must be a string
doc must be of length 10
countryOfIncorporationMandatorycountryOfIncorporation should not be null or undefined
countryOfIncorporation must be a string
countryOfIncorporation must be of length 2
tinOptionaltin should not be null or undefined
tin must be a string
tin must be of length 20
tinIssueCountryOptionaltinIssueCountry should not be null or undefined
tinIssueCountry must be a string
tinIssueCountry must be of length 2
address.proofOfAddressLegalMandatory/OptionalproofOfAddressLegal should not be null or undefined
proofOfAddressLegal must be a string
proofOfAddressLegal must be between length 1 and 75
contact.faxStdCodeOptionalfaxStdCode should not be null or undefined
faxStdCode must be a string
faxStdCode must be between length 1 to 4
contact.faxOptionalfax should not be null or undefined
fax must be a string
fax must be of length 10
constitutionTypeOthersMandatoryconstitutionTypeOthers should not be null or undefined
constitutionTypeOthers must be a string
constitutionTypeOthers must be of length 21

Webhook Payload

You will have to create a webhook to receive a response from Cersai. This is valid for both success and error responses.

{
"status": 200,
"message": "CKYC Uploaded Successfully",
"application_status": "short_reject"
"transactionid": "transaction_id",
"appid": "",
"ckyc_no": "",
"errors": [""]
}

Possible values of application_status

  • short_reject - As soon as the documents are uploaded after Admin's approval, Cersai rejects a few cases immediately(short response) because of basic errors . Those will be termed as "short_reject".

  • short_confirmed_match - As soon as the documents are uploaded after Admin's approval, Cersai immediately (short response) flags a few cases which are already present in Cersai database. Those will be termed as " short_confirmed". We will get CKYC number of the matched record.

  • insufficient_balance - If Client's Cersai wallet balance is not sufficient for upload.

  • long_reject - Apart from short response, Cersai will also provide long response after 1-2 days of upload. Cases rejected in long response is termed as "long_reject"

  • probable_match - In the long response, Cersai will match all the data uploaded by client in its own database and return the possible match where probability of matching is higher. We will get CKYC number of the matched records.

  • long_confirmed_match - In the probable match cases where the probability is 100%, Cersai will reject those cases stating confirmed match. We will get CKYC number of the matched record.

  • success - Successfully uploaded. We will get CKYC number of the uploaded record.

Was this helpful?
Ask AIBeta
Hi! How can I help?
Ask me anything about HyperVerge products, APIs, and SDKs.
Try asking: