curl -X POST 'https://kyc.yativo.com/api/individual-kyc/submit' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: kyc-ind-2026-001' \
-d '{
"customer_id": "c586066b-0f29-468f-b775-15483871a202",
"first_name": "Alex",
"last_name": "Smith",
"email": "alex.smith@example.com",
"calling_code": "+1",
"phone": "5551234567",
"gender": "male",
"birth_date": "1990-01-15",
"nationality": "US",
"taxId": "998887766",
"selfie_image": "https://storage.yativo.com/documents/abc/selfie.jpg",
"residential_address": {
"street_line_1": "123 Maple Street",
"city": "Austin",
"state": "TX",
"postal_code": "78701",
"country": "US",
"proof_of_address_file": "https://storage.yativo.com/documents/abc/utility-bill.pdf"
},
"identifying_information": [
{
"type": "passport",
"issuing_country": "US",
"number": "P12345678",
"date_issued": "2019-06-01",
"expiration_date": "2029-06-01",
"image_front_file": "https://storage.yativo.com/documents/abc/passport-front.jpg"
}
],
"employment_status": "employed",
"most_recent_occupation_code": "151252",
"expected_monthly_payments_usd": "0_4999",
"source_of_funds": "salary",
"account_purpose": "receive_salary",
"acting_as_intermediary": false,
"uploaded_documents": [
{
"type": "bank_statement",
"file": "https://storage.yativo.com/documents/abc/bank-statement.pdf"
}
]
}'
const response = await fetch('https://kyc.yativo.com/api/individual-kyc/submit', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Idempotency-Key': `kyc-${customerId}-${Date.now()}`,
},
body: JSON.stringify({
customer_id: customerId,
first_name: 'Alex',
last_name: 'Smith',
email: 'alex.smith@example.com',
calling_code: '+1',
phone: '5551234567',
gender: 'male',
birth_date: '1990-01-15',
nationality: 'US',
taxId: '998887766',
selfie_image: selfieUrl,
residential_address: {
street_line_1: '123 Maple Street',
city: 'Austin',
state: 'TX',
postal_code: '78701',
country: 'US',
proof_of_address_file: addressProofUrl,
},
identifying_information: [{
type: 'passport',
issuing_country: 'US',
number: 'P12345678',
date_issued: '2019-06-01',
expiration_date: '2029-06-01',
image_front_file: passportFrontUrl,
}],
employment_status: 'employed',
most_recent_occupation_code: '151252',
expected_monthly_payments_usd: '0_4999',
source_of_funds: 'salary',
account_purpose: 'receive_salary',
acting_as_intermediary: false,
uploaded_documents: [{ type: 'bank_statement', file: statementUrl }],
}),
});
const data = await response.json();
import requests
response = requests.post(
'https://kyc.yativo.com/api/individual-kyc/submit',
headers={
'Content-Type': 'application/json',
'Idempotency-Key': f'kyc-{customer_id}-001',
},
json={
'customer_id': customer_id,
'first_name': 'Alex',
'last_name': 'Smith',
'email': 'alex.smith@example.com',
'calling_code': '+1',
'phone': '5551234567',
'gender': 'male',
'birth_date': '1990-01-15',
'nationality': 'US',
'taxId': '998887766',
'selfie_image': selfie_url,
'residential_address': {
'street_line_1': '123 Maple Street',
'city': 'Austin',
'state': 'TX',
'postal_code': '78701',
'country': 'US',
'proof_of_address_file': address_proof_url,
},
'identifying_information': [{
'type': 'passport',
'issuing_country': 'US',
'number': 'P12345678',
'date_issued': '2019-06-01',
'expiration_date': '2029-06-01',
'image_front_file': passport_front_url,
}],
'employment_status': 'employed',
'most_recent_occupation_code': '151252',
'expected_monthly_payments_usd': '0_4999',
'source_of_funds': 'salary',
'account_purpose': 'receive_salary',
'acting_as_intermediary': False,
'uploaded_documents': [{'type': 'bank_statement', 'file': statement_url}],
}
)
{
"success": true,
"message": "KYC submitted successfully.",
"data": {
"customer_id": "c586066b-0f29-468f-b775-15483871a202",
"type": "individual",
"status": "submitted",
"first_name": "Alex",
"last_name": "Smith",
"email": "alex.smith@example.com",
"submitted_at": "2026-10-20T10:00:00.000000Z"
},
"warnings": {
"account_purpose": ["account_purpose is not one of the values from GET /api/individual-kyc/account-purposes; providers will reject it."]
}
}
{
"success": false,
"message": "Validation error.",
"validation_errors": {
"nationality": ["The nationality field must be 2 characters."],
"taxId": ["Tax ID must contain only letters and digits, up to 255 characters."]
},
"field_labels": {
"nationality": "Nationality",
"taxId": "Tax ID"
},
"field_hints": {}
}
Submit Individual KYC
Submit identity verification data for an individual customer
curl -X POST 'https://kyc.yativo.com/api/individual-kyc/submit' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: kyc-ind-2026-001' \
-d '{
"customer_id": "c586066b-0f29-468f-b775-15483871a202",
"first_name": "Alex",
"last_name": "Smith",
"email": "alex.smith@example.com",
"calling_code": "+1",
"phone": "5551234567",
"gender": "male",
"birth_date": "1990-01-15",
"nationality": "US",
"taxId": "998887766",
"selfie_image": "https://storage.yativo.com/documents/abc/selfie.jpg",
"residential_address": {
"street_line_1": "123 Maple Street",
"city": "Austin",
"state": "TX",
"postal_code": "78701",
"country": "US",
"proof_of_address_file": "https://storage.yativo.com/documents/abc/utility-bill.pdf"
},
"identifying_information": [
{
"type": "passport",
"issuing_country": "US",
"number": "P12345678",
"date_issued": "2019-06-01",
"expiration_date": "2029-06-01",
"image_front_file": "https://storage.yativo.com/documents/abc/passport-front.jpg"
}
],
"employment_status": "employed",
"most_recent_occupation_code": "151252",
"expected_monthly_payments_usd": "0_4999",
"source_of_funds": "salary",
"account_purpose": "receive_salary",
"acting_as_intermediary": false,
"uploaded_documents": [
{
"type": "bank_statement",
"file": "https://storage.yativo.com/documents/abc/bank-statement.pdf"
}
]
}'
const response = await fetch('https://kyc.yativo.com/api/individual-kyc/submit', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Idempotency-Key': `kyc-${customerId}-${Date.now()}`,
},
body: JSON.stringify({
customer_id: customerId,
first_name: 'Alex',
last_name: 'Smith',
email: 'alex.smith@example.com',
calling_code: '+1',
phone: '5551234567',
gender: 'male',
birth_date: '1990-01-15',
nationality: 'US',
taxId: '998887766',
selfie_image: selfieUrl,
residential_address: {
street_line_1: '123 Maple Street',
city: 'Austin',
state: 'TX',
postal_code: '78701',
country: 'US',
proof_of_address_file: addressProofUrl,
},
identifying_information: [{
type: 'passport',
issuing_country: 'US',
number: 'P12345678',
date_issued: '2019-06-01',
expiration_date: '2029-06-01',
image_front_file: passportFrontUrl,
}],
employment_status: 'employed',
most_recent_occupation_code: '151252',
expected_monthly_payments_usd: '0_4999',
source_of_funds: 'salary',
account_purpose: 'receive_salary',
acting_as_intermediary: false,
uploaded_documents: [{ type: 'bank_statement', file: statementUrl }],
}),
});
const data = await response.json();
import requests
response = requests.post(
'https://kyc.yativo.com/api/individual-kyc/submit',
headers={
'Content-Type': 'application/json',
'Idempotency-Key': f'kyc-{customer_id}-001',
},
json={
'customer_id': customer_id,
'first_name': 'Alex',
'last_name': 'Smith',
'email': 'alex.smith@example.com',
'calling_code': '+1',
'phone': '5551234567',
'gender': 'male',
'birth_date': '1990-01-15',
'nationality': 'US',
'taxId': '998887766',
'selfie_image': selfie_url,
'residential_address': {
'street_line_1': '123 Maple Street',
'city': 'Austin',
'state': 'TX',
'postal_code': '78701',
'country': 'US',
'proof_of_address_file': address_proof_url,
},
'identifying_information': [{
'type': 'passport',
'issuing_country': 'US',
'number': 'P12345678',
'date_issued': '2019-06-01',
'expiration_date': '2029-06-01',
'image_front_file': passport_front_url,
}],
'employment_status': 'employed',
'most_recent_occupation_code': '151252',
'expected_monthly_payments_usd': '0_4999',
'source_of_funds': 'salary',
'account_purpose': 'receive_salary',
'acting_as_intermediary': False,
'uploaded_documents': [{'type': 'bank_statement', 'file': statement_url}],
}
)
{
"success": true,
"message": "KYC submitted successfully.",
"data": {
"customer_id": "c586066b-0f29-468f-b775-15483871a202",
"type": "individual",
"status": "submitted",
"first_name": "Alex",
"last_name": "Smith",
"email": "alex.smith@example.com",
"submitted_at": "2026-10-20T10:00:00.000000Z"
},
"warnings": {
"account_purpose": ["account_purpose is not one of the values from GET /api/individual-kyc/account-purposes; providers will reject it."]
}
}
{
"success": false,
"message": "Validation error.",
"validation_errors": {
"nationality": ["The nationality field must be 2 characters."],
"taxId": ["Tax ID must contain only letters and digits, up to 255 characters."]
},
"field_labels": {
"nationality": "Nationality",
"taxId": "Tax ID"
},
"field_hints": {}
}
POST /customer). After submission the status will be "submitted" and will move to "approved" once review is complete.
https://kyc.yativo.com, not the main API base URL. Include an Idempotency-Key header on every request.POST https://kyc.yativo.com/api/individual-kyc/submit
curl -X POST 'https://kyc.yativo.com/api/individual-kyc/submit' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: kyc-ind-2026-001' \
-d '{
"customer_id": "c586066b-0f29-468f-b775-15483871a202",
"first_name": "Alex",
"last_name": "Smith",
"email": "alex.smith@example.com",
"calling_code": "+1",
"phone": "5551234567",
"gender": "male",
"birth_date": "1990-01-15",
"nationality": "US",
"taxId": "998887766",
"selfie_image": "https://storage.yativo.com/documents/abc/selfie.jpg",
"residential_address": {
"street_line_1": "123 Maple Street",
"city": "Austin",
"state": "TX",
"postal_code": "78701",
"country": "US",
"proof_of_address_file": "https://storage.yativo.com/documents/abc/utility-bill.pdf"
},
"identifying_information": [
{
"type": "passport",
"issuing_country": "US",
"number": "P12345678",
"date_issued": "2019-06-01",
"expiration_date": "2029-06-01",
"image_front_file": "https://storage.yativo.com/documents/abc/passport-front.jpg"
}
],
"employment_status": "employed",
"most_recent_occupation_code": "151252",
"expected_monthly_payments_usd": "0_4999",
"source_of_funds": "salary",
"account_purpose": "receive_salary",
"acting_as_intermediary": false,
"uploaded_documents": [
{
"type": "bank_statement",
"file": "https://storage.yativo.com/documents/abc/bank-statement.pdf"
}
]
}'
const response = await fetch('https://kyc.yativo.com/api/individual-kyc/submit', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Idempotency-Key': `kyc-${customerId}-${Date.now()}`,
},
body: JSON.stringify({
customer_id: customerId,
first_name: 'Alex',
last_name: 'Smith',
email: 'alex.smith@example.com',
calling_code: '+1',
phone: '5551234567',
gender: 'male',
birth_date: '1990-01-15',
nationality: 'US',
taxId: '998887766',
selfie_image: selfieUrl,
residential_address: {
street_line_1: '123 Maple Street',
city: 'Austin',
state: 'TX',
postal_code: '78701',
country: 'US',
proof_of_address_file: addressProofUrl,
},
identifying_information: [{
type: 'passport',
issuing_country: 'US',
number: 'P12345678',
date_issued: '2019-06-01',
expiration_date: '2029-06-01',
image_front_file: passportFrontUrl,
}],
employment_status: 'employed',
most_recent_occupation_code: '151252',
expected_monthly_payments_usd: '0_4999',
source_of_funds: 'salary',
account_purpose: 'receive_salary',
acting_as_intermediary: false,
uploaded_documents: [{ type: 'bank_statement', file: statementUrl }],
}),
});
const data = await response.json();
import requests
response = requests.post(
'https://kyc.yativo.com/api/individual-kyc/submit',
headers={
'Content-Type': 'application/json',
'Idempotency-Key': f'kyc-{customer_id}-001',
},
json={
'customer_id': customer_id,
'first_name': 'Alex',
'last_name': 'Smith',
'email': 'alex.smith@example.com',
'calling_code': '+1',
'phone': '5551234567',
'gender': 'male',
'birth_date': '1990-01-15',
'nationality': 'US',
'taxId': '998887766',
'selfie_image': selfie_url,
'residential_address': {
'street_line_1': '123 Maple Street',
'city': 'Austin',
'state': 'TX',
'postal_code': '78701',
'country': 'US',
'proof_of_address_file': address_proof_url,
},
'identifying_information': [{
'type': 'passport',
'issuing_country': 'US',
'number': 'P12345678',
'date_issued': '2019-06-01',
'expiration_date': '2029-06-01',
'image_front_file': passport_front_url,
}],
'employment_status': 'employed',
'most_recent_occupation_code': '151252',
'expected_monthly_payments_usd': '0_4999',
'source_of_funds': 'salary',
'account_purpose': 'receive_salary',
'acting_as_intermediary': False,
'uploaded_documents': [{'type': 'bank_statement', 'file': statement_url}],
}
)
{
"success": true,
"message": "KYC submitted successfully.",
"data": {
"customer_id": "c586066b-0f29-468f-b775-15483871a202",
"type": "individual",
"status": "submitted",
"first_name": "Alex",
"last_name": "Smith",
"email": "alex.smith@example.com",
"submitted_at": "2026-10-20T10:00:00.000000Z"
},
"warnings": {
"account_purpose": ["account_purpose is not one of the values from GET /api/individual-kyc/account-purposes; providers will reject it."]
}
}
{
"success": false,
"message": "Validation error.",
"validation_errors": {
"nationality": ["The nationality field must be 2 characters."],
"taxId": ["Tax ID must contain only letters and digits, up to 255 characters."]
},
"field_labels": {
"nationality": "Nationality",
"taxId": "Tax ID"
},
"field_hints": {}
}
Headers
A unique string per request to ensure idempotent processing.
Body
The customer UUID returned by POST /customer.
Customer's first name. Max 1024 characters.
1024Customer's last name. Max 1024 characters.
1024Customer's email address.
Country dial code. Must match ^\+\d{1,4}$, e.g. "+1", "+44", "+234".
^\+\d{1,4}$"+1"
Phone number digits only, 8–15 characters. Do not include the country code.
8 - 15Date of birth in YYYY-MM-DD format. The customer must be at least 18.
ISO 3166-1 alpha-2 country code, e.g. "US", "NG", "BR".
2"male" or "female".
male, female Tax identification number. Letters and digits only, up to 255 characters. Send "123456789", not "123-45-6789".
255^[A-Za-z0-9]+$Selfie photo of the customer. Provide as a hosted URL (from POST /storage/upload) or a base64-encoded string. Accepted formats: PDF, JPG, JPEG, PNG, HEIC, TIF, between 5 KB and 30 MB.
Customer's current residential address.
Show child attributes
Show child attributes
At least one government-issued ID document. Accepted document types depend on issuing_country — see the ID types reference.
1Show child attributes
Show child attributes
Lookup key such as SelfEmployed, or its snake_case form self_employed.
6-digit occupation code. Retrieve the full list from GET /auth/occupation-codes. Example: "151252" (Software developer).
"151252"
Lookup key such as LessThan5K, or its value 0_4999.
Lookup key from GET /individual-kyc/source-of-funds, or its snake_case form.
Lookup key from GET /individual-kyc/account-purposes, or its snake_case form.
Customer's middle name. Optional.
Bank Verification Number. Required when nationality or residential_address.country is "NG". Exactly 11 digits.
11National Identification Number. Required when nationality or residential_address.country is "NG". Exactly 11 digits.
11Required when account_purpose is "other". Provide a plain-text description.
Set to true if the customer is acting on behalf of third parties. Defaults to false.
Optional. Up to 20 characters.
20Optional. Up to 512 characters.
512Optional. "Permanent U.S. Resident", "Non-Permanent U.S. Resident" or "Non-Resident of U.S."
Permanent U.S. Resident, Non-Permanent U.S. Resident, Non-Resident of U.S. Also eur_virtual_account, gbp_virtual_account and native_endorsement: the services to verify the customer for. See Virtual account flags.
At least one supporting document is required.
Show child attributes
Show child attributes
Response
KYC submitted. Verification runs afterwards.

