Skip to main content

Upload KYC

POST 

/v1/users/upload/kyc

Submit KYC documents and information for user verification

Encryption Requirements

The following parameters must be encrypted before sending:

  • firstName
  • lastName
  • panNumber
  • aadharNumber

Code for encryption

const crypto = require("crypto");

const encrypt = (plainText, password) => {
try {
const iv = crypto.randomBytes(16);
const key = crypto.createHash('sha256').update(password).digest('base64').substr(0, 32);
const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);

let encrypted = cipher.update(plainText);
encrypted = Buffer.concat([encrypted, cipher.final()])
return iv.toString('hex') + ':' + encrypted.toString('hex');

} catch (error) {
console.log(error);
}
}

// To generate encryption
const sampleText = "apple";
const encryptedText = encrypt(sampleText, SECRET_KEY);
console.log(encryptedText);

Contact for SECRET_KEY

For access to SECRET_KEY for encryption, please contact support@onmeta.in


Example cURL

curl --location '{{base_url}}/v1/users/upload/kyc' \
--header 'x-api-key: <CLIENT_ID>' \
--form 'email="john@example.com"' \
--form 'firstName="<ENCRYPTED_FIRST_NAME>"' \
--form 'lastName="<ENCRYPTED_LAST_NAME>"' \
--form 'panNumber="<ENCRYPTED_PAN>"' \
--form 'aadharNumber="<ENCRYPTED_AADHAAR>"' \
--form 'incomeRange="<10L"' \
--form 'profession="Engineer"' \
--form 'phone="9876543210"' \
--form 'countryCode="+91"' \
--form 'address[pin]="400001"' \
--form 'address[state]="Maharashtra"' \
--form 'address[city]="Mumbai"' \
--form 'address[locality]="Andheri"' \
--form 'address[district]="Mumbai"' \
--form 'aadharFront=@/path/to/aadhaar_front.jpg' \
--form 'aadharBack=@/path/to/aadhaar_back.jpg' \
--form 'selfie=@/path/to/selfie.jpg' \
--form 'panFront=@/path/to/pan_front.jpg' \
--form 'panBack=@/path/to/pan_back.jpg'

FAQs

Is KYC approval instant? Yes. KYC is auto-approved instantly. There is no manual review or waiting time for standard approvals.

Request

Responses

KYC submitted successfully.