curl --request POST \
--url https://sandbox.zapyd.com/cms/api/v1/kyc/add-kyc-data \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'X-SIGNATURE: <api-key>' \
--header 'X-TIMESTAMP: <api-key>' \
--data '
{
"customer_id": "4e6f1b20-a73c-11ec-b909-0242ac120002",
"full_name": "John Doe",
"phone": "9911002211",
"full_address": "FULL_ADDRESS_OF_THE_CUSTOMER",
"dob": "DD-MM-YYYY",
"registered_date": "DD-MM-YYYY",
"document_type": "<string>",
"document_details": {
"document_number": "123456123456",
"additional_data": {}
},
"selfie_url": "<string>",
"tax_number": "ABCPG1234N",
"document_front_image_url": "<string>",
"document_back_image_url": "<string>",
"additional_info": {},
"ip_address": "203.0.113.10"
}
'import requests
url = "https://sandbox.zapyd.com/cms/api/v1/kyc/add-kyc-data"
payload = {
"customer_id": "4e6f1b20-a73c-11ec-b909-0242ac120002",
"full_name": "John Doe",
"phone": "9911002211",
"full_address": "FULL_ADDRESS_OF_THE_CUSTOMER",
"dob": "DD-MM-YYYY",
"registered_date": "DD-MM-YYYY",
"document_type": "<string>",
"document_details": {
"document_number": "123456123456",
"additional_data": {}
},
"selfie_url": "<string>",
"tax_number": "ABCPG1234N",
"document_front_image_url": "<string>",
"document_back_image_url": "<string>",
"additional_info": {},
"ip_address": "203.0.113.10"
}
headers = {
"X-API-KEY": "<api-key>",
"X-TIMESTAMP": "<api-key>",
"X-SIGNATURE": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-API-KEY': '<api-key>',
'X-TIMESTAMP': '<api-key>',
'X-SIGNATURE': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
customer_id: '4e6f1b20-a73c-11ec-b909-0242ac120002',
full_name: 'John Doe',
phone: '9911002211',
full_address: 'FULL_ADDRESS_OF_THE_CUSTOMER',
dob: 'DD-MM-YYYY',
registered_date: 'DD-MM-YYYY',
document_type: '<string>',
document_details: {document_number: '123456123456', additional_data: {}},
selfie_url: '<string>',
tax_number: 'ABCPG1234N',
document_front_image_url: '<string>',
document_back_image_url: '<string>',
additional_info: {},
ip_address: '203.0.113.10'
})
};
fetch('https://sandbox.zapyd.com/cms/api/v1/kyc/add-kyc-data', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.zapyd.com/cms/api/v1/kyc/add-kyc-data",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'customer_id' => '4e6f1b20-a73c-11ec-b909-0242ac120002',
'full_name' => 'John Doe',
'phone' => '9911002211',
'full_address' => 'FULL_ADDRESS_OF_THE_CUSTOMER',
'dob' => 'DD-MM-YYYY',
'registered_date' => 'DD-MM-YYYY',
'document_type' => '<string>',
'document_details' => [
'document_number' => '123456123456',
'additional_data' => [
]
],
'selfie_url' => '<string>',
'tax_number' => 'ABCPG1234N',
'document_front_image_url' => '<string>',
'document_back_image_url' => '<string>',
'additional_info' => [
],
'ip_address' => '203.0.113.10'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>",
"X-SIGNATURE: <api-key>",
"X-TIMESTAMP: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.zapyd.com/cms/api/v1/kyc/add-kyc-data"
payload := strings.NewReader("{\n \"customer_id\": \"4e6f1b20-a73c-11ec-b909-0242ac120002\",\n \"full_name\": \"John Doe\",\n \"phone\": \"9911002211\",\n \"full_address\": \"FULL_ADDRESS_OF_THE_CUSTOMER\",\n \"dob\": \"DD-MM-YYYY\",\n \"registered_date\": \"DD-MM-YYYY\",\n \"document_type\": \"<string>\",\n \"document_details\": {\n \"document_number\": \"123456123456\",\n \"additional_data\": {}\n },\n \"selfie_url\": \"<string>\",\n \"tax_number\": \"ABCPG1234N\",\n \"document_front_image_url\": \"<string>\",\n \"document_back_image_url\": \"<string>\",\n \"additional_info\": {},\n \"ip_address\": \"203.0.113.10\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("X-TIMESTAMP", "<api-key>")
req.Header.Add("X-SIGNATURE", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.zapyd.com/cms/api/v1/kyc/add-kyc-data")
.header("X-API-KEY", "<api-key>")
.header("X-TIMESTAMP", "<api-key>")
.header("X-SIGNATURE", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"customer_id\": \"4e6f1b20-a73c-11ec-b909-0242ac120002\",\n \"full_name\": \"John Doe\",\n \"phone\": \"9911002211\",\n \"full_address\": \"FULL_ADDRESS_OF_THE_CUSTOMER\",\n \"dob\": \"DD-MM-YYYY\",\n \"registered_date\": \"DD-MM-YYYY\",\n \"document_type\": \"<string>\",\n \"document_details\": {\n \"document_number\": \"123456123456\",\n \"additional_data\": {}\n },\n \"selfie_url\": \"<string>\",\n \"tax_number\": \"ABCPG1234N\",\n \"document_front_image_url\": \"<string>\",\n \"document_back_image_url\": \"<string>\",\n \"additional_info\": {},\n \"ip_address\": \"203.0.113.10\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.zapyd.com/cms/api/v1/kyc/add-kyc-data")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["X-TIMESTAMP"] = '<api-key>'
request["X-SIGNATURE"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer_id\": \"4e6f1b20-a73c-11ec-b909-0242ac120002\",\n \"full_name\": \"John Doe\",\n \"phone\": \"9911002211\",\n \"full_address\": \"FULL_ADDRESS_OF_THE_CUSTOMER\",\n \"dob\": \"DD-MM-YYYY\",\n \"registered_date\": \"DD-MM-YYYY\",\n \"document_type\": \"<string>\",\n \"document_details\": {\n \"document_number\": \"123456123456\",\n \"additional_data\": {}\n },\n \"selfie_url\": \"<string>\",\n \"tax_number\": \"ABCPG1234N\",\n \"document_front_image_url\": \"<string>\",\n \"document_back_image_url\": \"<string>\",\n \"additional_info\": {},\n \"ip_address\": \"203.0.113.10\"\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "Success",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "PROCESSING",
"failure_reason": null
}
}{
"status": false,
"message": "Internal Server Error",
"data": null,
"err_code": "SYS_INTERNAL_ERROR",
"errors": "Unexpected error occurred. Please try again later."
}Add KYC Data
Submits a customer’s identity documents and personal details and starts KYC verification.
curl --request POST \
--url https://sandbox.zapyd.com/cms/api/v1/kyc/add-kyc-data \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'X-SIGNATURE: <api-key>' \
--header 'X-TIMESTAMP: <api-key>' \
--data '
{
"customer_id": "4e6f1b20-a73c-11ec-b909-0242ac120002",
"full_name": "John Doe",
"phone": "9911002211",
"full_address": "FULL_ADDRESS_OF_THE_CUSTOMER",
"dob": "DD-MM-YYYY",
"registered_date": "DD-MM-YYYY",
"document_type": "<string>",
"document_details": {
"document_number": "123456123456",
"additional_data": {}
},
"selfie_url": "<string>",
"tax_number": "ABCPG1234N",
"document_front_image_url": "<string>",
"document_back_image_url": "<string>",
"additional_info": {},
"ip_address": "203.0.113.10"
}
'import requests
url = "https://sandbox.zapyd.com/cms/api/v1/kyc/add-kyc-data"
payload = {
"customer_id": "4e6f1b20-a73c-11ec-b909-0242ac120002",
"full_name": "John Doe",
"phone": "9911002211",
"full_address": "FULL_ADDRESS_OF_THE_CUSTOMER",
"dob": "DD-MM-YYYY",
"registered_date": "DD-MM-YYYY",
"document_type": "<string>",
"document_details": {
"document_number": "123456123456",
"additional_data": {}
},
"selfie_url": "<string>",
"tax_number": "ABCPG1234N",
"document_front_image_url": "<string>",
"document_back_image_url": "<string>",
"additional_info": {},
"ip_address": "203.0.113.10"
}
headers = {
"X-API-KEY": "<api-key>",
"X-TIMESTAMP": "<api-key>",
"X-SIGNATURE": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-API-KEY': '<api-key>',
'X-TIMESTAMP': '<api-key>',
'X-SIGNATURE': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
customer_id: '4e6f1b20-a73c-11ec-b909-0242ac120002',
full_name: 'John Doe',
phone: '9911002211',
full_address: 'FULL_ADDRESS_OF_THE_CUSTOMER',
dob: 'DD-MM-YYYY',
registered_date: 'DD-MM-YYYY',
document_type: '<string>',
document_details: {document_number: '123456123456', additional_data: {}},
selfie_url: '<string>',
tax_number: 'ABCPG1234N',
document_front_image_url: '<string>',
document_back_image_url: '<string>',
additional_info: {},
ip_address: '203.0.113.10'
})
};
fetch('https://sandbox.zapyd.com/cms/api/v1/kyc/add-kyc-data', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.zapyd.com/cms/api/v1/kyc/add-kyc-data",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'customer_id' => '4e6f1b20-a73c-11ec-b909-0242ac120002',
'full_name' => 'John Doe',
'phone' => '9911002211',
'full_address' => 'FULL_ADDRESS_OF_THE_CUSTOMER',
'dob' => 'DD-MM-YYYY',
'registered_date' => 'DD-MM-YYYY',
'document_type' => '<string>',
'document_details' => [
'document_number' => '123456123456',
'additional_data' => [
]
],
'selfie_url' => '<string>',
'tax_number' => 'ABCPG1234N',
'document_front_image_url' => '<string>',
'document_back_image_url' => '<string>',
'additional_info' => [
],
'ip_address' => '203.0.113.10'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>",
"X-SIGNATURE: <api-key>",
"X-TIMESTAMP: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.zapyd.com/cms/api/v1/kyc/add-kyc-data"
payload := strings.NewReader("{\n \"customer_id\": \"4e6f1b20-a73c-11ec-b909-0242ac120002\",\n \"full_name\": \"John Doe\",\n \"phone\": \"9911002211\",\n \"full_address\": \"FULL_ADDRESS_OF_THE_CUSTOMER\",\n \"dob\": \"DD-MM-YYYY\",\n \"registered_date\": \"DD-MM-YYYY\",\n \"document_type\": \"<string>\",\n \"document_details\": {\n \"document_number\": \"123456123456\",\n \"additional_data\": {}\n },\n \"selfie_url\": \"<string>\",\n \"tax_number\": \"ABCPG1234N\",\n \"document_front_image_url\": \"<string>\",\n \"document_back_image_url\": \"<string>\",\n \"additional_info\": {},\n \"ip_address\": \"203.0.113.10\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("X-TIMESTAMP", "<api-key>")
req.Header.Add("X-SIGNATURE", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.zapyd.com/cms/api/v1/kyc/add-kyc-data")
.header("X-API-KEY", "<api-key>")
.header("X-TIMESTAMP", "<api-key>")
.header("X-SIGNATURE", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"customer_id\": \"4e6f1b20-a73c-11ec-b909-0242ac120002\",\n \"full_name\": \"John Doe\",\n \"phone\": \"9911002211\",\n \"full_address\": \"FULL_ADDRESS_OF_THE_CUSTOMER\",\n \"dob\": \"DD-MM-YYYY\",\n \"registered_date\": \"DD-MM-YYYY\",\n \"document_type\": \"<string>\",\n \"document_details\": {\n \"document_number\": \"123456123456\",\n \"additional_data\": {}\n },\n \"selfie_url\": \"<string>\",\n \"tax_number\": \"ABCPG1234N\",\n \"document_front_image_url\": \"<string>\",\n \"document_back_image_url\": \"<string>\",\n \"additional_info\": {},\n \"ip_address\": \"203.0.113.10\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.zapyd.com/cms/api/v1/kyc/add-kyc-data")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["X-TIMESTAMP"] = '<api-key>'
request["X-SIGNATURE"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer_id\": \"4e6f1b20-a73c-11ec-b909-0242ac120002\",\n \"full_name\": \"John Doe\",\n \"phone\": \"9911002211\",\n \"full_address\": \"FULL_ADDRESS_OF_THE_CUSTOMER\",\n \"dob\": \"DD-MM-YYYY\",\n \"registered_date\": \"DD-MM-YYYY\",\n \"document_type\": \"<string>\",\n \"document_details\": {\n \"document_number\": \"123456123456\",\n \"additional_data\": {}\n },\n \"selfie_url\": \"<string>\",\n \"tax_number\": \"ABCPG1234N\",\n \"document_front_image_url\": \"<string>\",\n \"document_back_image_url\": \"<string>\",\n \"additional_info\": {},\n \"ip_address\": \"203.0.113.10\"\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "Success",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "PROCESSING",
"failure_reason": null
}
}{
"status": false,
"message": "Internal Server Error",
"data": null,
"err_code": "SYS_INTERNAL_ERROR",
"errors": "Unexpected error occurred. Please try again later."
}Add KYC Data
Error Codes and Messages
| API Status Code | Response | Reason |
|---|---|---|
| 400 | Customer not found or access denied | Customer not found |
| 400 | Customer not found or access denied | Customer does not belong to the organization |
| 400 | KYC already exists | KYC already exists for the customer |
| 400 | KYC already in use | KYC is being used by another customer |
| 500 | Internal Server Error | Internal Server Error |
Authorizations
API Key for authentication
Current timestamp in seconds since epoch
HMAC SHA256 signature of the request encoded in Base64
Body
Zapyd customer ID (UUID) returned by Create Customer.
"4e6f1b20-a73c-11ec-b909-0242ac120002"
Name as it appears on the identity document.
"John Doe"
National mobile number without the country code (9–10 digits), validated for the customer's country.
"9911002211"
Residential address.
"FULL_ADDRESS_OF_THE_CUSTOMER"
Date of birth, DD-MM-YYYY
"DD-MM-YYYY"
Registration date, DD-MM-YYYY
"DD-MM-YYYY"
Document type as returned by /kyc/configuration/{customer_id} (e.g. PASSPORT, etc.)
Accepts JPG, JPEG and PNG links
Optional. Tax number, up to 15 characters. For India, the PAN; it is checked against the name and date of birth.
"ABCPG1234N"
Front image URL (JPG, JPEG, PNG or PDF). Required for every document type except AADHAAR, which accepts either both images or aadhaar_json in document_details.additional_data.
Back image URL (JPG, JPEG, PNG or PDF). Same rule as document_front_image_url.
Extra fields required by your organization's KYC configuration; see GET /kyc/configuration/{customer_id}. Unknown keys are rejected.
Optional. The end user's IP address.
"203.0.113.10"