Feel free to reach techsupport@surepass.io for any technical support or guidance.
Authorization header as Bearer YOUR_JWT_TOKEN.https://sandbox.surepass.apphttps://kyc-api.surepass.app| Header | Required | Description |
|---|---|---|
| Authorization | Yes | Bearer token for API authentication (Format: Bearer YOUR_JWT_TOKEN) |
| Content-Type | Yes | Must be application/json |
| Parameter | Type | Required | Description |
|---|---|---|---|
| data | Object | Yes | Root object containing all CKYC upload information |
| data.purpose | String | Yes | Purpose of the CKYC upload (e.g., "For bank account purpose") |
| data.verifier | Object | Yes | Details of the verification officer conducting the KYC |
| data.verifier.name | String | Yes | Full name of the verification officer |
| data.verifier.declaration_place | String | Yes | Place where the declaration is made |
| data.verifier.designation | String | Yes | Official designation of the verifier |
| data.verifier.branch | String | Yes | Branch name where verification is conducted |
| data.verifier.employment_code | String | Yes | Employee code of the verification officer |
| data.verifier.organization_name | String | Yes | Name of the verifying organization |
| data.verifier.organization_code | String | Yes | Official organization code assigned by the registry |
| data.individuals | Array | Yes | Array of individual customer records to be uploaded |
| data.individuals[].identifier | String | Yes | Unique identifier for the individual |
| data.individuals[].prefix | String | Yes | Name prefix (e.g., "MR", "MS", "MRS") |
| data.individuals[].first_name | String | Yes | First name of the individual |
| data.individuals[].middle_name | String | No | Middle name of the individual (optional) |
| data.individuals[].last_name | String | Yes | Last name of the individual |
| data.individuals[].maiden_prefix | String | No | Maiden name prefix (optional, for married individuals) |
| data.individuals[].maiden_first_name | String | No | Maiden first name (optional) |
| data.individuals[].maiden_middle_name | String | No | Maiden middle name (optional) |
| data.individuals[].maiden_last_name | String | No | Maiden last name (optional) |
| data.individuals[].maiden_full_name | String | No | Complete maiden name (optional) |
| data.individuals[].gender | String | Yes | Gender of the individual (e.g., "MALE", "FEMALE", "OTHER") |
| data.individuals[].date_of_birth | String | Yes | Date of birth in YYYY-MM-DD format |
| data.individuals[].marital_status | String | Yes | Marital status (e.g., "MARRIED", "UNMARRIED", "DIVORCED", "WIDOWED") |
| data.individuals[].differently_abled_flag | Boolean | Yes | Indicates if the individual is differently abled |
| data.individuals[].type_of_impairment | String | Conditional | Type of impairment (required if differently_abled_flag is true) |
| data.individuals[].percentage_of_impairment | Number | Conditional | Percentage of impairment (required if differently_abled_flag is true) |
| data.individuals[].udid_number | String | Conditional | Unique Disability ID number (required if differently_abled_flag is true) |
| data.individuals[].address | Object | Yes | Permanent address details |
| data.individuals[].address.address | String | Yes | Complete address line |
| data.individuals[].address.state_code | String | Yes | Two-letter state code (e.g., "MH" for Maharashtra) |
| data.individuals[].address.city | String | Yes | City name |
| data.individuals[].address.district | String | Yes | District name |
| data.individuals[].address.pincode | String | Yes | Six-digit postal code |
| data.individuals[].address.country_code | String | Yes | Two-letter country code (e.g., "IN" for India) |
| data.individuals[].same_address | Boolean | Yes | Indicates if current address is same as permanent address |
| data.individuals[].current_address | Object | Yes | Current/correspondence address (same structure as address) |
| data.individuals[].document_submission_type | String | Yes | Type of KYC submission (e.g., "EKYC", "PAPER") |
| data.individuals[].relative | Array | Yes | Array of relative information |
| data.individuals[].relative[].prefix | String | Yes | Prefix for relative's name |
| data.individuals[].relative[].type | String | Yes | Relationship type (e.g., "FATHER", "MOTHER", "SPOUSE") |
| data.individuals[].relative[].first_name | String | Yes | Relative's first name |
| data.individuals[].relative[].middle_name | String | No | Relative's middle name (optional) |
| data.individuals[].relative[].last_name | String | Yes | Relative's last name |
| data.individuals[].documents | Array | Yes | Array of document images |
| data.individuals[].documents[].image | String | Yes | Base64 encoded image data |
| data.individuals[].documents[].type | String | Yes | Document type (e.g., "PHOTOGRAPH", "SIGNATURE") |
| data.individuals[].documents[].filename | String | Yes | Original filename with extension |
| data.individuals[].ids | Array | Yes | Array of identity documents |
| data.individuals[].ids[].id_number | String | Yes | Identity document number |
| data.individuals[].ids[].type | String | Yes | Identity type (e.g., "AADHAAR", "PAN", "PASSPORT") |
| data.individuals[].contact_details | Object | Yes | Contact information (all fields optional) |
| data.individuals[].contact_details.email | String | Optional | Email address |
| data.individuals[].contact_details.mobile_isd_code | String | Optional | Mobile country code (e.g., "91" for India) |
| data.individuals[].contact_details.mobile_number | String | Optional | Mobile number without country code |
| data.individuals[].contact_details.residential_std_number | String | Optional | Residential phone STD code |
| data.individuals[].contact_details.residential_telephone_number | String | Optional | Residential phone number |
| data.individuals[].contact_details.office_std_number | String | Optional | Office phone STD code |
| data.individuals[].contact_details.office_telephone_number | String | Optional | Office phone number |
| data.individuals[].contact_details.fax_std_code | String | Optional | Fax STD code |
| data.individuals[].contact_details.fax_number | String | Optional | Fax number |
{
"data": {
"purpose": "For bank account purpose",
"verifier": {
"name": "Anil Sharma",
"declaration_place": "Mumbai",
"designation": "Verification Officer",
"branch": "Andheri",
"employment_code": "EMP001",
"organization_name": "Surepass",
"organization_code": "FI999"
},
"individuals": [
{
"identifier": "11111111111111",
"prefix": "MR",
"first_name": "ronak",
"middle_name": "",
"last_name": "Singh",
"maiden_prefix": null,
"maiden_first_name": null,
"maiden_middle_name": null,
"maiden_last_name": null,
"maiden_full_name": null,
"gender": "MALE",
"date_of_birth": "2003-12-19",
"marital_status": "UNMARRIED",
"differently_abled_flag": false,
"type_of_impairment": null,
"percentage_of_impairment": null,
"udid_number": null,
"address": {
"address": "45 Marine Drive",
"state_code": "MH",
"city": "Mumbai",
"district": "Mumbai City",
"pincode": "400020",
"country_code": "IN"
},
"same_address": true,
"current_address": {
"address": "45 Marine Drive",
"state_code": "MH",
"city": "Mumbai",
"district": "Mumbai City",
"pincode": "400020",
"country_code": "IN"
},
"document_submission_type": "EKYC",
"relative": [
{
"prefix": "MR",
"type": "FATHER",
"first_name": "FatherName",
"middle_name": null,
"last_name": "User"
}
],
"documents": [
{
"image": "",
"type": "PHOTOGRAPH",
"filename": "photo.jpeg"
}
],
"ids": [
{
"id_number": "123456789123",
"type": "AADHAAR"
}
],
"contact_details": {
"email": "test1@example.com",
"mobile_isd_code": "91",
"mobile_number": "9999999991",
"residential_std_number": null,
"residential_telephone_number": null,
"office_std_number": null,
"office_telephone_number": null,
"fax_std_code": null,
"fax_number": null
}
}
]
}
}| Parameter | Type | Description |
|---|---|---|
| data | Object | Response data container |
| data.client_id | String | Unique identifier for tracking the CKYC upload request |
| data.message | String | Human-readable message describing the upload status |
| data.state | String | Current state of the upload (e.g., "pending", "processing", "completed") |
| data.error | Array | Array of error messages (empty if no errors) |
| status_code | Integer | HTTP status code of the response |
| success | Boolean | Indicates whether the request was successful |
| message | String | General response message |
| message_code | String | Machine-readable message code for programmatic handling |
{
"data": {
"client_id": "ckyc_update_oPfNzrFipIhbqtyuyyar",
"message": "CKYC bulk upload has been initiated",
"state": "pending",
"error": []
},
"status_code": 200,
"success": true,
"message": "Success",
"message_code": "success"
}{
"data": null,
"status_code": 401,
"success": false,
"message": "Authentication failed",
"message_code": "unauthorized"
}curl --location --request POST 'https://kyc-api.surepass.app/api/v1/ckyc-upload/upload/initialize' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"data": {
"purpose": "For bank account purpose",
"verifier": {
"name": "Anil Sharma",
"declaration_place": "Mumbai",
"designation": "Verification Officer",
"branch": "Andheri",
"employment_code": "EMP001",
"organization_name": "Surepass",
"organization_code": "FI999"
},
"individuals": [
{
"identifier": "11111111111111",
"prefix": "MR",
"first_name": "ronak",
"middle_name": "",
"last_name": "Singh",
"maiden_prefix": null,
"maiden_first_name": null,
"maiden_middle_name": null,
"maiden_last_name": null,
"maiden_full_name": null,
"gender": "MALE",
"date_of_birth": "2003-12-19",
"marital_status": "UNMARRIED",
"differently_abled_flag": false,
"type_of_impairment": null,
"percentage_of_impairment": null,
"udid_number": null,
"address": {
"address": "45 Marine Drive",
"state_code": "MH",
"city": "Mumbai",
"district": "Mumbai City",
"pincode": "400020",
"country_code": "IN"
},
"same_address": true,
"current_address": {
"address": "45 Marine Drive",
"state_code": "MH",
"city": "Mumbai",
"district": "Mumbai City",
"pincode": "400020",
"country_code": "IN"
},
"document_submission_type": "EKYC",
"relative": [
{
"prefix": "MR",
"type": "FATHER",
"first_name": "FatherName",
"middle_name": null,
"last_name": "User"
}
],
"documents": [
{
"image": "", // base64 of images
"type": "PHOTOGRAPH",
"filename": "photo.jpeg"
}
],
"ids": [
{
"id_number": "123456789123",
"type": "AADHAAR"
}
],
"contact_details": {
"email": "test1@example.com",
"mobile_isd_code": "91",
"mobile_number": "9999999991",
"residential_std_number": null,
"residential_telephone_number": null,
"office_std_number": null,
"office_telephone_number": null,
"fax_std_code": null,
"fax_number": null
}
},
{
"identifier": "11111111111111",
"prefix": "MR",
"first_name": "ronak",
"middle_name": "",
"last_name": "Singh",
"maiden_prefix": null,
"maiden_first_name": null,
"maiden_middle_name": null,
"maiden_last_name": null,
"maiden_full_name": null,
"gender": "MALE",
"date_of_birth": "2003-12-19",
"marital_status": "UNMARRIED",
"differently_abled_flag": false,
"type_of_impairment": null,
"percentage_of_impairment": null,
"udid_number": null,
"address": {
"address": "45 Marine Drive",
"state_code": "MH",
"city": "Mumbai",
"district": "Mumbai City",
"pincode": "400020",
"country_code": "IN"
},
"same_address": true,
"current_address": {
"address": "45 Marine Drive",
"state_code": "MH",
"city": "Mumbai",
"district": "Mumbai City",
"pincode": "400020",
"country_code": "IN"
},
"document_submission_type": "EKYC",
"relative": [
{
"prefix": "MR",
"type": "FATHER",
"first_name": "FatherName",
"middle_name": null,
"last_name": "User"
}
],
"documents": [
{
"image": "", // base64 of images
"type": "PHOTOGRAPH",
"filename": "photo.jpeg"
}
],
"ids": [
{
"id_number": "123456789123",
"type": "AADHAAR"
}
],
"contact_details": {
"email": "test1@example.com",
"mobile_isd_code": "91",
"mobile_number": "9999999991",
"residential_std_number": null,
"residential_telephone_number": null,
"office_std_number": null,
"office_telephone_number": null,
"fax_std_code": null,
"fax_number": null
}
}
]
}
}'{
"data": {
"client_id": "ckyc_upload_GvnulgTmipraItoHRgFv",
"message": "CKYC bulk upload has been initiated",
"state": "pending",
"error": []
},
"status_code": 200,
"success": true,
"message": "Success",
"message_code": "success"
}