Skip to main content
POST
Submit KYC data for an individual customer. The customer must already exist in your account (created via POST /customer). After submission the status will be "submitted" and will move to "approved" once review is complete.
This endpoint is hosted on the KYC platform at https://kyc.yativo.com, not the main API base URL. Include an Idempotency-Key header on every request.

Headers

Idempotency-Key
string
required

A unique string per request to ensure idempotent processing.

Body

application/json
customer_id
string<uuid>
required

The customer UUID returned by POST /customer.

first_name
string
required

Customer's first name. Max 1024 characters.

Maximum string length: 1024
last_name
string
required

Customer's last name. Max 1024 characters.

Maximum string length: 1024
email
string<email>
required

Customer's email address.

calling_code
string
required

Country dial code. Must match ^\+\d{1,4}$, e.g. "+1", "+44", "+234".

Pattern: ^\+\d{1,4}$
Example:

"+1"

phone
string
required

Phone number digits only, 8–15 characters. Do not include the country code.

Required string length: 8 - 15
birth_date
string<date>
required

Date of birth in YYYY-MM-DD format. The customer must be at least 18.

nationality
string
required

ISO 3166-1 alpha-2 country code, e.g. "US", "NG", "BR".

Required string length: 2
gender
enum<string>
required

"male" or "female".

Available options:
male,
female
taxId
string
required

Tax identification number. Letters and digits only, up to 255 characters. Send "123456789", not "123-45-6789".

Maximum string length: 255
Pattern: ^[A-Za-z0-9]+$
selfie_image
string
required

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.

residential_address
object
required

Customer's current residential address.

identifying_information
object[]
required

At least one government-issued ID document. Accepted document types depend on issuing_country — see the ID types reference.

Minimum array length: 1
employment_status
string
required

Lookup key such as SelfEmployed, or its snake_case form self_employed.

most_recent_occupation_code
string
required

6-digit occupation code. Retrieve the full list from GET /auth/occupation-codes. Example: "151252" (Software developer).

Example:

"151252"

expected_monthly_payments_usd
string
required

Lookup key such as LessThan5K, or its value 0_4999.

source_of_funds
string
required

Lookup key from GET /individual-kyc/source-of-funds, or its snake_case form.

account_purpose
string
required

Lookup key from GET /individual-kyc/account-purposes, or its snake_case form.

middle_name
string

Customer's middle name. Optional.

bvn
string

Bank Verification Number. Required when nationality or residential_address.country is "NG". Exactly 11 digits.

Required string length: 11
nin
string

National Identification Number. Required when nationality or residential_address.country is "NG". Exactly 11 digits.

Required string length: 11
account_purpose_other
string

Required when account_purpose is "other". Provide a plain-text description.

acting_as_intermediary
boolean
default:false

Set to true if the customer is acting on behalf of third parties. Defaults to false.

annual_salary
string

Optional. Up to 20 characters.

Maximum string length: 20
current_employer
string

Optional. Up to 512 characters.

Maximum string length: 512
immigration_status
enum<string>

Optional. "Permanent U.S. Resident", "Non-Permanent U.S. Resident" or "Non-Resident of U.S."

Available options:
Permanent U.S. Resident,
Non-Permanent U.S. Resident,
Non-Resident of U.S.
usd_virtual_account
boolean

Also eur_virtual_account, gbp_virtual_account and native_endorsement: the services to verify the customer for. See Virtual account flags.

eur_virtual_account
boolean
gbp_virtual_account
boolean
native_endorsement
boolean
uploaded_documents
object[]

At least one supporting document is required.

Response

KYC submitted. Verification runs afterwards.

success
boolean
Example:

true

message
string
Example:

"KYC submitted successfully."

data
object

The saved submission.

warnings
object

Fields verification is likely to reject, such as values not on the lookup lists. Only present when there are warnings.