KYC (Know Your Customer) Guide
KYC is a process to verify user identity, ensuring compliance with regulations and preventing fraud or illegal activities. It involves validating personal information and documents.
Remember that to perform KYC for a Subaccount, simply pass the subAccountId
field as a request parameter.
KYC Level 1 - Web SDK
To complete KYC Level 1, you will receive a link that redirects to a verification form. Follow the instructions on the site to submit your information. The completion deadline is 24 hours.
HTTP Post Request:
https://api.sandbox.avenia.io:10952/v2/kyc/level-1/web-sdk
cURL Example:
curl -X POST "https://api.sandbox.avenia.io:10952/v2/kyc/level-1/web-sdk" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer eyJhdXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
JSON Response:
{
"url": "https://in.sumsub.com/websdk/p/sbx_dC000HhJ0Sel0000"
}
KYC Level 1 - API
Another way to perform KYC Level 1 for your user is through the API.
HTTP Post Request:
https://api.sandbox.avenia.io:10952/v2/kyc/level-1/api
Remember that to perform this endpoint for a Subaccount, simply pass the subAccountId
field as a request parameter.
Fields
Field | Type | Required | Description |
---|---|---|---|
fullName | string | Yes | The complete name of the individual. |
dateOfBirth | string | Yes | The date of birth of the individual (Format: YYYY-MM-DD). |
countryOfDocument | string | Yes | The country issuing the document. |
documentType | string | Yes | The type of document (must be one of ID, Passport, Driver's License). |
documentNumber | string | Yes | The number of the document. |
countryOfTaxId | string | Yes | The country where the tax identification number was issued. |
taxIdNumber | string | Yes | The tax identification number of the individual. |
string | No | The email address of the individual. | |
phone | string | No | The phone number of the individual. |
country | string | Yes | The country of residence. |
state | string | Yes | The state/province of residence. |
city | string | Yes | The city of residence. |
zipCode | string | Yes | The postal code of the residence. |
streetAddress | string | Yes | The street address of the residence. |
All countries and states follow the ISO Alpha-3 standard (Example: USA-CA)
Sample JSON Body:
{
"fullName": "Jane Doe",
"dateOfBirth": "1999-08-16",
"countryOfDocument": "BRA",
"documentType": "Passport",
"documentNumber": "UJ252482",
"countryOfTaxId": "BRA",
"taxIdNumber": "75764220173",
"country": "BRA",
"state": "SP",
"city": "SP",
"zipCode": "12243010",
"streetAddress": "Rua Madre Paula"
}
cURL Example:
curl -X POST "https://api.sandbox.avenia.io:10952/v2/kyc/level-1/api" \
-H "Authorization: Bearer eyJhdXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
-H "Content-Type: application/json" \
-d '{ ... }'
JSON Response:
{
"id": "1ee11163-9tjb-4389-9f84-074ccff7085d"
}
List All KYC Attempts
Check all KYC attempt histories associated with your account or subaccount.
To filter by specific subaccount, add the subAccountId
parameter to the request.
HTTP Get Request:
https://api.sandbox.avenia.io:10952/v2/kyc/attempts
cURL Example:
curl -X GET "https://api.sandbox.avenia.io:10952/v2/kyc/attempts" \
-H "Authorization: Bearer eyJhdXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
JSON Response Example:
{
"attempts": [
{
"id": "e51359cd-04b0-4bbc-bf7d-0ee515112d74",
"levelName": "level-1",
"submissionData": null,
"status": "COMPLETED",
"result": "APPROVED",
"resultMessage": "",
"retryable": false,
"createdAt": "2025-03-25T07:39:40.54713Z",
"updatedAt": "2025-03-25T07:39:40.54713Z"
}
],
"cursor": "MTYtMTc0MjQ4MjA5NzAxMQ=="
}
Get KYC Attempt
Ensure the KYC has been successfully validated.
HTTP Get Request:
https://api.sandbox.avenia.io:10952/v2/kyc/attempts/{kyc-attempt-id}
For subaccount validation, include subAccountId
in the request.
cURL Example:
curl -X GET "https://api.sandbox.avenia.io:10952/v2/kyc/attempts/{kyc-attempt-id}" \
-H "Authorization: Bearer eyJhdXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
JSON Response:
{
"attempt": {
"id": "e51359cd-04b0-4bbc-bf7d-0ee515112d74",
"levelName": "level-1",
"submissionData": null,
"status": "COMPLETED",
"result": "APPROVED",
"resultMessage": "",
"retryable": false,
"createdAt": "2025-03-25T07:39:40.54713Z",
"updatedAt": "2025-03-25T07:39:40.54713Z"
}
}
KYC - Track KYC Validation
This endpoint allows you to track the progress and outcome of a specific KYC attempt by ID. The response includes the current status (PENDING, COMPLETED), the final result (APPROVED, REJECTED), and additional context such as retry eligibility and rejection reasons.
HTTP GET Request
https://api.sandbox.avenia.io:10952/v2/kyc/attempts/**YOUR-KYC-ID-HERE**
cUrl Example
curl -X GET "https://api.sandbox.avenia.io:10952/v2/kyc/attempts/{kyc-attempt-id}" \
-H "Authorization: Bearer eyJhdXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
JSON Response - COMPLETED example
{
"attempt": {
"id": "e51359cd-04b0-4bbc-bf7d-0ee515112d74",
"levelName": "level-1",
"submissionData": null,
"status": "COMPLETED",
"result": "APPROVED",
"resultMessage": "",
"retryable": false,
"createdAt": "2025-03-25T07:39:40.54713Z",
"updatedAt": "2025-03-25T07:39:40.54713Z"
}
}
JSON Response - PENDING example
{
"attempt": {
"id": "b83802a1-afe9-46ac-96d6-ade6c5961bd3",
"levelName": "level-1",
"submissionData": null,
"status": "PENDING",
"result": "",
"resultMessage": "",
"retryable": false,
"createdAt": "2025-03-26T22:50:14.201695Z",
"updatedAt": "2025-03-26T22:50:14.201695Z"
}
}
JSON Response - REJECT example
{
"attempt": {
"id": "5bafd6cd-ec40-4dd3-83e0-a5af117c304a",
"levelName": "level-1",
"submissionData": null,
"status": "COMPLETED",
"result": "REJECTED",
"resultMessage": "name does not match",
"retryable": false,
"createdAt": "2025-03-26T22:50:14.201695Z",
"updatedAt": "2025-03-26T22:50:14.201695Z"
}
}