Skip to main content
Customer identity verification is required before issuing virtual accounts or enabling certain payment features. Individual customers go through KYC; business customers go through KYB.

KYC — Individual verification

Submit customer identity details via API. The customer must already be created.
POST /verification/verify-customer

Required fields

customer_id
string
required
The customer’s Yativo ID.
type
string
required
"individual"
first_name
string
required
Customer’s first name.
last_name
string
required
Customer’s last name.
birth_date
string
required
Date of birth in YYYY-MM-DD format.
nationality
string
required
ISO 3166-1 alpha-3 code (e.g. "PER", "BRA", "USA").
address
object
required
Customer’s address: street_line_1, city, state (ISO 3166-2 if country has subdivisions), postal_code, country (ISO 3166-1 alpha-3).
employment_status
string
required
"employed", "self_employed", or "unemployed".
expected_monthly_payments
string
required
Range string, e.g. "0_4999", "5000_9999".
acting_as_intermediary
boolean
required
Whether the customer acts as an intermediary.
most_recent_occupation
string
required
Occupation code — retrieve valid codes from GET /occupation-codes.
account_purpose
string
required
e.g. "purchase_goods_and_services".
source_of_funds
string
required
e.g. "salary", "savings", "investments_loans".
identifying_information
array
Required for USA customers. Each item: type, issuing_country, number, image_front (Base64), image_back (Base64).
documents
array
Additional documents: { purposes: string[], file: Base64 }.
curl -X POST 'https://api.yativo.com/api/v1/verification/verify-customer' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: kyc-unique-key' \
  -d '{
    "customer_id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
    "type": "individual",
    "first_name": "Jane",
    "last_name": "Doe",
    "email": "jane@example.com",
    "birth_date": "1990-01-15",
    "nationality": "BRA",
    "address": {
      "street_line_1": "Rua das Flores, 100",
      "city": "São Paulo",
      "state": "SP",
      "postal_code": "01310-100",
      "country": "BRA"
    },
    "employment_status": "employed",
    "expected_monthly_payments": "5000_9999",
    "acting_as_intermediary": false,
    "most_recent_occupation": "132011",
    "account_purpose": "purchase_goods_and_services",
    "source_of_funds": "salary",
    "documents": [],
    "identifying_information": [
      {
        "type": "passport",
        "issuing_country": "BRA",
        "number": "AB123456",
        "image_front": "data:image/jpeg;base64,..."
      }
    ]
  }'
{
  "status": "success",
  "status_code": 200,
  "message": "Request successful",
  "data": {
    "first_name": "Jane",
    "last_name": "Doe",
    "status": "not_started",
    "rejection_reasons": [],
    "requirements_due": []
  }
}

Check KYC status

Poll this after submission. Once status is "approved" and is_va_approved is true, the customer can receive virtual accounts.
GET /customer/kyc/{customer_id}
curl -X GET 'https://api.yativo.com/api/v1/customer/kyc/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
{
  "status": "success",
  "data": {
    "first_name": "Jane",
    "last_name": "Doe",
    "status": "approved",
    "kyc_rejection_reasons": [],
    "bio_data": {
      "customer_kyc_status": "approved",
      "kyc_verified_date": "2026-03-26T12:00:00.000000Z"
    },
    "kyc_link": "https://checkout.yativo.com/kyc/update-biodata/xxxxx",
    "is_va_approved": true
  }
}
If the status is delayed beyond 24 hours, share the kyc_link with your customer to complete verification manually.

KYC update

To update an existing KYC submission:
PUT /customer/kyc/update
Send the updated fields using the same schema as the initial submission.

Get occupation codes

GET /occupation-codes
curl -X GET 'https://api.yativo.com/api/v1/occupation-codes' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
{
  "status": "success",
  "data": [
    { "display_name": "Accountant and auditor", "code": "132011" },
    { "display_name": "Actor", "code": "272011" },
    { "display_name": "Acupuncturist", "code": "291291" }
  ]
}

KYB — Business verification

For customers with customer_type: "business". Uses the same endpoint as KYC.
POST /verification/verify-customer
Set "type": "business" and provide the additional business fields below. All fields are required unless marked optional. Key fields specific to KYB:
FieldDescription
business_nameRegistered business name
registration_numberOfficial registration number
business_typee.g. "corporation", "llc"
business_industryIndustry code (from GET /business-industry-codes)
formation_documentBase64-encoded formation document
ownership_documentBase64-encoded ownership document
tax_identification_numberBusiness TIN
ultimate_beneficial_ownersArray of UBO objects with ID docs
sof_eu_questionnaireSource of funds questionnaire
primary_websiteBusiness website (required if nature_of_business not provided)
KYB requires significantly more documentation than KYC. See your integration team for a full checklist specific to your use case.