cURL
curl --request POST \
--url https://sandbox.zapyd.com/cms/api/v1/kyc/payout/add-sender-kyc-data \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'X-SIGNATURE: <api-key>' \
--header 'X-TIMESTAMP: <api-key>' \
--data '
{
"client_reference_id": "beneficiary-001",
"country_code": "BRA",
"tax_number": "12345678909",
"document_type": "PASSPORT",
"document_front_image_url": "https://example.com/front.jpg",
"document_back_image_url": "https://example.com/back.jpg",
"street": "Av. Paulista 1000",
"city": "São Paulo",
"state_province": "SP",
"postal_code": "01310-100",
"beneficiary_identifiers": {}
}
'import requests
url = "https://sandbox.zapyd.com/cms/api/v1/kyc/payout/add-sender-kyc-data"
payload = {
"client_reference_id": "beneficiary-001",
"country_code": "BRA",
"tax_number": "12345678909",
"document_type": "PASSPORT",
"document_front_image_url": "https://example.com/front.jpg",
"document_back_image_url": "https://example.com/back.jpg",
"street": "Av. Paulista 1000",
"city": "São Paulo",
"state_province": "SP",
"postal_code": "01310-100",
"beneficiary_identifiers": {}
}
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({
client_reference_id: 'beneficiary-001',
country_code: 'BRA',
tax_number: '12345678909',
document_type: 'PASSPORT',
document_front_image_url: 'https://example.com/front.jpg',
document_back_image_url: 'https://example.com/back.jpg',
street: 'Av. Paulista 1000',
city: 'São Paulo',
state_province: 'SP',
postal_code: '01310-100',
beneficiary_identifiers: {}
})
};
fetch('https://sandbox.zapyd.com/cms/api/v1/kyc/payout/add-sender-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/payout/add-sender-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([
'client_reference_id' => 'beneficiary-001',
'country_code' => 'BRA',
'tax_number' => '12345678909',
'document_type' => 'PASSPORT',
'document_front_image_url' => 'https://example.com/front.jpg',
'document_back_image_url' => 'https://example.com/back.jpg',
'street' => 'Av. Paulista 1000',
'city' => 'São Paulo',
'state_province' => 'SP',
'postal_code' => '01310-100',
'beneficiary_identifiers' => [
]
]),
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/payout/add-sender-kyc-data"
payload := strings.NewReader("{\n \"client_reference_id\": \"beneficiary-001\",\n \"country_code\": \"BRA\",\n \"tax_number\": \"12345678909\",\n \"document_type\": \"PASSPORT\",\n \"document_front_image_url\": \"https://example.com/front.jpg\",\n \"document_back_image_url\": \"https://example.com/back.jpg\",\n \"street\": \"Av. Paulista 1000\",\n \"city\": \"São Paulo\",\n \"state_province\": \"SP\",\n \"postal_code\": \"01310-100\",\n \"beneficiary_identifiers\": {}\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/payout/add-sender-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 \"client_reference_id\": \"beneficiary-001\",\n \"country_code\": \"BRA\",\n \"tax_number\": \"12345678909\",\n \"document_type\": \"PASSPORT\",\n \"document_front_image_url\": \"https://example.com/front.jpg\",\n \"document_back_image_url\": \"https://example.com/back.jpg\",\n \"street\": \"Av. Paulista 1000\",\n \"city\": \"São Paulo\",\n \"state_province\": \"SP\",\n \"postal_code\": \"01310-100\",\n \"beneficiary_identifiers\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.zapyd.com/cms/api/v1/kyc/payout/add-sender-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 \"client_reference_id\": \"beneficiary-001\",\n \"country_code\": \"BRA\",\n \"tax_number\": \"12345678909\",\n \"document_type\": \"PASSPORT\",\n \"document_front_image_url\": \"https://example.com/front.jpg\",\n \"document_back_image_url\": \"https://example.com/back.jpg\",\n \"street\": \"Av. Paulista 1000\",\n \"city\": \"São Paulo\",\n \"state_province\": \"SP\",\n \"postal_code\": \"01310-100\",\n \"beneficiary_identifiers\": {}\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "Success",
"data": {
"id": "7a1c0e7e-2b53-4f7e-9d2f-6d6e2b1c9a10",
"client_reference_id": "beneficiary-001"
}
}{
"status": false,
"message": "Bad Request",
"data": null,
"errors": {
"postal_code": [
"This field is required for BRA."
]
},
"err_code": "UNKNOWN_ERROR"
}{
"status": false,
"message": "Internal Server Error",
"data": null,
"errors": {},
"err_code": "SYS_INTERNAL_ERROR"
}Payout-only onboarding
Add Payout Sender KYC
Submits the beneficiary address and country-specific identity fields the payout partner requires.
POST
/
kyc
/
payout
/
add-sender-kyc-data
cURL
curl --request POST \
--url https://sandbox.zapyd.com/cms/api/v1/kyc/payout/add-sender-kyc-data \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'X-SIGNATURE: <api-key>' \
--header 'X-TIMESTAMP: <api-key>' \
--data '
{
"client_reference_id": "beneficiary-001",
"country_code": "BRA",
"tax_number": "12345678909",
"document_type": "PASSPORT",
"document_front_image_url": "https://example.com/front.jpg",
"document_back_image_url": "https://example.com/back.jpg",
"street": "Av. Paulista 1000",
"city": "São Paulo",
"state_province": "SP",
"postal_code": "01310-100",
"beneficiary_identifiers": {}
}
'import requests
url = "https://sandbox.zapyd.com/cms/api/v1/kyc/payout/add-sender-kyc-data"
payload = {
"client_reference_id": "beneficiary-001",
"country_code": "BRA",
"tax_number": "12345678909",
"document_type": "PASSPORT",
"document_front_image_url": "https://example.com/front.jpg",
"document_back_image_url": "https://example.com/back.jpg",
"street": "Av. Paulista 1000",
"city": "São Paulo",
"state_province": "SP",
"postal_code": "01310-100",
"beneficiary_identifiers": {}
}
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({
client_reference_id: 'beneficiary-001',
country_code: 'BRA',
tax_number: '12345678909',
document_type: 'PASSPORT',
document_front_image_url: 'https://example.com/front.jpg',
document_back_image_url: 'https://example.com/back.jpg',
street: 'Av. Paulista 1000',
city: 'São Paulo',
state_province: 'SP',
postal_code: '01310-100',
beneficiary_identifiers: {}
})
};
fetch('https://sandbox.zapyd.com/cms/api/v1/kyc/payout/add-sender-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/payout/add-sender-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([
'client_reference_id' => 'beneficiary-001',
'country_code' => 'BRA',
'tax_number' => '12345678909',
'document_type' => 'PASSPORT',
'document_front_image_url' => 'https://example.com/front.jpg',
'document_back_image_url' => 'https://example.com/back.jpg',
'street' => 'Av. Paulista 1000',
'city' => 'São Paulo',
'state_province' => 'SP',
'postal_code' => '01310-100',
'beneficiary_identifiers' => [
]
]),
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/payout/add-sender-kyc-data"
payload := strings.NewReader("{\n \"client_reference_id\": \"beneficiary-001\",\n \"country_code\": \"BRA\",\n \"tax_number\": \"12345678909\",\n \"document_type\": \"PASSPORT\",\n \"document_front_image_url\": \"https://example.com/front.jpg\",\n \"document_back_image_url\": \"https://example.com/back.jpg\",\n \"street\": \"Av. Paulista 1000\",\n \"city\": \"São Paulo\",\n \"state_province\": \"SP\",\n \"postal_code\": \"01310-100\",\n \"beneficiary_identifiers\": {}\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/payout/add-sender-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 \"client_reference_id\": \"beneficiary-001\",\n \"country_code\": \"BRA\",\n \"tax_number\": \"12345678909\",\n \"document_type\": \"PASSPORT\",\n \"document_front_image_url\": \"https://example.com/front.jpg\",\n \"document_back_image_url\": \"https://example.com/back.jpg\",\n \"street\": \"Av. Paulista 1000\",\n \"city\": \"São Paulo\",\n \"state_province\": \"SP\",\n \"postal_code\": \"01310-100\",\n \"beneficiary_identifiers\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.zapyd.com/cms/api/v1/kyc/payout/add-sender-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 \"client_reference_id\": \"beneficiary-001\",\n \"country_code\": \"BRA\",\n \"tax_number\": \"12345678909\",\n \"document_type\": \"PASSPORT\",\n \"document_front_image_url\": \"https://example.com/front.jpg\",\n \"document_back_image_url\": \"https://example.com/back.jpg\",\n \"street\": \"Av. Paulista 1000\",\n \"city\": \"São Paulo\",\n \"state_province\": \"SP\",\n \"postal_code\": \"01310-100\",\n \"beneficiary_identifiers\": {}\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "Success",
"data": {
"id": "7a1c0e7e-2b53-4f7e-9d2f-6d6e2b1c9a10",
"client_reference_id": "beneficiary-001"
}
}{
"status": false,
"message": "Bad Request",
"data": null,
"errors": {
"postal_code": [
"This field is required for BRA."
]
},
"err_code": "UNKNOWN_ERROR"
}{
"status": false,
"message": "Internal Server Error",
"data": null,
"errors": {},
"err_code": "SYS_INTERNAL_ERROR"
}Add Payout Sender KYC
Part of the payout-only onboarding flow. See the payout-only onboarding guide for the order of calls and the fields each country requires.
Authorizations
API Key for authentication
Current timestamp in seconds since epoch
HMAC SHA256 signature of the request encoded in Base64
Body
application/json
The beneficiary's client_reference_id
Example:
"beneficiary-001"
Beneficiary country, alpha-3. Must match the customer's country if sent.
Example:
"BRA"
Tax number
Example:
"12345678909"
Identity document type
Available options:
ONLY_PAN, GOVT_ID, PASSPORT Example:
"PASSPORT"
Document front image URL
Example:
"https://example.com/front.jpg"
Document back image URL
Example:
"https://example.com/back.jpg"
Street address
Example:
"Av. Paulista 1000"
City
Example:
"São Paulo"
State or province
Example:
"SP"
Postal code
Example:
"01310-100"
Country-specific beneficiary fields
Example:
{}
⌘I