Individual KYC Requirements
This page is the field-level reference for every attestation that may appear on an individual compliance review. For the end-to-end flow (creating a review, uploading documents, submitting, polling status) see the Individual Compliance Review guide.
Each section below is one attestation. The header states whether the attestation is REQUIRED or CONDITIONALLY REQUIRED, the conditional sections lead with what triggers the requirement, and every section ends with a table describing each field — its JSON name, type, whether it is required or optional, and any input limits enforced by the API.
The
requiredAttestationsarray on the review you create reflects the same rules described here. If the API response and this guide ever disagree, trust the API.
Tier overview
| Tier | Attestations on this page |
|---|---|
light | individualPersonalInfoLight |
standard | individualPersonalInfo, individualContactInfo, individualResidentialAddress, individualIdentityDocument, individualFinancialInfo, individualTaxInfo, individualProofOfAddress (conditional), individualSourceOfFunds (conditional) |
Light tier
individualPersonalInfoLight — REQUIRED
individualPersonalInfoLight — REQUIREDThe single attestation required for the light KYC tier. Captures name, date of birth, optional nationality, phone number, and residential address.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "individualPersonalInfoLight". |
name | object | Yes | See Name object below. |
birthDate | string | Yes | YYYY-MM-DD. Must be a valid ISO date and represent an adult (≥ 18 years). |
nationality | string | Optional | ISO 3166-1 alpha-2 country code (e.g. US). Optional on light tier — omitting it blocks payouts on rails that require nationality (e.g. dLocal China USD). |
phoneNumber | string | Yes | E.164 format with country code (e.g. +14155551234). |
residentialAddress | object | Yes | See Address object below. |
Standard tier
individualPersonalInfo — REQUIRED
individualPersonalInfo — REQUIREDPersonal-identity fields for the standard KYC tier. Unlike the light variant, nationality is required and a politically-exposed-person flag must be declared.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "individualPersonalInfo". |
name | object | Yes | See Name object. |
birthDate | string | Yes | YYYY-MM-DD. Must be a valid ISO date and represent an adult (≥ 18 years). |
nationality | string | Yes | ISO 3166-1 alpha-2 country code (e.g. US). |
isPoliticallyExposed | boolean | Yes | true or false. |
individualContactInfo — REQUIRED
individualContactInfo — REQUIREDEmail and phone number used for compliance correspondence.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "individualContactInfo". |
email | string | Yes | Valid email address. UTF-8 local parts are not accepted. |
phoneNumber | string | Yes | E.164 format with country code (e.g. +14155551234). |
individualResidentialAddress — REQUIRED
individualResidentialAddress — REQUIREDResidential address. The value supplied here drives the conditional requirement for individualProofOfAddress (see below).
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "individualResidentialAddress". |
address | object | Yes | See Address object. |
individualIdentityDocument — REQUIRED
individualIdentityDocument — REQUIREDGovernment-issued identity document. The governmentId field is a discriminated union over 28 document variants — see Government ID object.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "individualIdentityDocument". |
governmentId | object (union) | Yes | Discriminated by inner type field. See Government ID object. |
individualFinancialInfo — REQUIRED
individualFinancialInfo — REQUIREDSource-of-funds, employment, occupation, expected volume, and currency mix. The monthlyUsdVolume value supplied here drives the conditional requirement for individualSourceOfFunds (see below).
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "individualFinancialInfo". |
sourceOfFunds | enum | Yes | One of the SourceOfFunds values (e.g. SALARY, BUSINESS_INCOME, INVESTMENTS). |
employmentStatus | enum | Yes | One of the EmploymentStatus values (e.g. EMPLOYED, SELF_EMPLOYED, UNEMPLOYED, RETIRED, STUDENT). |
employer | string | Conditional | Required when employmentStatus is EMPLOYED. Max 200 characters. |
latestOccupation | enum | Optional | One of the LatestOccupation values. Optional — when supplied, may be OTHER. |
latestOccupationDescription | string | Conditional | Required when latestOccupation is OTHER. Max 500 characters. |
primaryAccountPurpose | enum | Yes | One of the PrimaryAccountPurpose values (e.g. PERSONAL_OR_LIVING_EXPENSES, INVESTMENT). |
monthlyUsdVolume | enum | Yes | One of the MonthlyUsdVolume ranges (e.g. RANGE_0_4999, RANGE_5000_9999, RANGE_10000_49999, ...). |
isTransactingOnBehalfOfOthers | boolean | Yes | true or false. |
transactionCurrencies | array of enum | Yes | At least 1 and at most 11 entries from the TransactionCurrency enum (e.g. ["USD", "EUR"]). |
individualTaxInfo — REQUIRED
individualTaxInfo — REQUIREDTax identification number and type.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "individualTaxInfo". |
taxIdentificationNumber | string | Yes | Max 100 characters. Validated against the country/type-specific format for the chosen taxIdentificationNumberType (e.g. SSN must be XXX-XX-XXXX or 9 digits). |
taxIdentificationNumberType | enum | Yes | One of the individual-applicable IndividualTaxIdentificationNumberType values (e.g. SSN, ITIN, CPF, CURP, RFC, CUIT, RUT). |
individualProofOfAddress — CONDITIONALLY REQUIRED
individualProofOfAddress — CONDITIONALLY REQUIREDRequired when the value of individualResidentialAddress.address.country is in the European Economic Area (EEA) or the United Kingdom. This includes all EU member states, Iceland, Liechtenstein, Norway, and the UK. For residents outside this list, this attestation may be omitted.
One or more uploaded proof-of-address document references. Upload each file via the Generate Upload URL endpoint first and reference the returned documentId here.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "individualProofOfAddress". |
proofOfAddressDocuments | array of object | Yes | 1–10 entries. Each entry has documentType (ProofOfAddressDocumentType enum — e.g. UTILITY_BILL, BANK_STATEMENT, GOVERNMENT_ISSUED_LETTER) and documentId (UUID returned by the upload endpoint). |
individualSourceOfFunds — CONDITIONALLY REQUIRED
individualSourceOfFunds — CONDITIONALLY REQUIREDRequired when individualFinancialInfo.monthlyUsdVolume is any value other than RANGE_0_4999 (i.e. the applicant expects to move ≥ $5,000 USD per month). For volumes below $5,000/month this attestation may be omitted.
One or more uploaded source-of-funds document references. Upload each file via the Generate Upload URL endpoint first and reference the returned documentId here.
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | Must equal "individualSourceOfFunds". |
sourceOfFundsDocuments | array of object | Yes | 1–10 entries. Each entry has documentType (SourceOfFundsDocumentType enum — e.g. EMPLOYMENT_INCOME, BUSINESS_INCOME, INVESTMENT_INCOME) and documentId (UUID returned by the upload endpoint). |
Shared objects
Name object
Used by individualPersonalInfo and individualPersonalInfoLight.
| Field | Type | Required | Limits & format |
|---|---|---|---|
firstName | string | Yes | 1–100 characters. |
lastName | string | Yes | 1–100 characters. |
middleName | string | Optional | Max 100 characters. |
Address object
Used wherever a residentialAddress or address field appears.
| Field | Type | Required | Limits & format |
|---|---|---|---|
address1 | string | Yes | 1–200 characters. Primary street address, including building number and street name. |
address2 | string | Optional | Max 200 characters. Secondary line — apartment, suite, unit, floor, etc. |
country | string | Yes | ISO 3166-1 alpha-2 country code (e.g. US). |
subDivision | string | Yes | 1–100 characters. ISO 3166-2 subdivision code without the country prefix (e.g. NY for New York). |
city | string | Yes | 1–100 characters. |
postalCode | string | Yes | 1–20 characters. |
Government ID object
The governmentId field on individualIdentityDocument is a discriminated union over 28 document variants. Every variant shares the same base shape; only the ID-number field and the document-reference field(s) differ per variant.
Common shape across every variant:
| Field | Type | Required | Limits & format |
|---|---|---|---|
type | string (constant) | Yes | The variant discriminator (e.g. "passport", "driversLicense", "nationalId", "stateId", "passportCard", "visa", ...). |
countryCode | string | Yes | ISO 3166-1 alpha-2 of the issuing authority (e.g. US). |
<variant>Number (e.g. passportNumber) | string | Yes | 4–50 characters. |
<variant>DocumentId or front/back document IDs | UUID(s) | Yes | Each is a documentId returned by the Generate Upload URL endpoint. Two-sided documents (driver's license, national ID, state ID, passport card, etc.) require distinct front and back IDs. |
Single-sided variants (one documentId field): passport, internalPassport, travelDocument, citizenshipCertificate, panCard, nbiClearance.
Double-sided variants (front + back documentId fields): driversLicense, nationalId, stateId, passportCard, permanentResidenceCard, visa, residencePermit, voterId, healthInsuranceCard, workPermit, consularId, foreignId, myNumberCard, longTermPass, ofwId, postalId, sssId, umid, municipalId, tribalId, keypassId.
For the complete per-variant schema (exact field names, country examples, etc.) see the IndividualIdentityDocumentAttestation entry in the API reference.