Customers

Save individual customer verification

Changed on

Save complete individual verification data for an INDIVIDUAL customer.

Key features:

  • Submit comprehensive individual verification data
  • Reference previously uploaded identity and supporting documents via document IDs (doc_xxx)
  • Optionally submit the customer for review in the same request via ?submit=true

Data model covers the individual verification payload:

  • Personal info, address, employment, tax ID, government ID, supporting docs

Document workflow:

  1. Upload documents using POST /documents (with customerId in body)
  2. Confirm each document using POST /documents/:id/confirm
  3. Save the complete verification data to this endpoint using document references (doc_xxx)

Required for all files:

  1. Create a minimal customer record first using POST /customers/individuals with basic info (name, email, country code)
  2. Upload documents using POST /documents (with customerId in body) and POST /documents/:id/confirm
  3. Save the complete verification data to this endpoint using document references (doc_xxx)
post/v1/customers/{id}/verification/individual

Request

Path parameters

idstring required
Example:cus_abc123

Customer ID

Query parameters

submitboolean
Example:true

If true, submit the customer for review after saving verification data.

Headers

X-API-Keystring

API key

Request body

metadataobject

Additional metadata

hasAgreedToTosboolean

Set to true when submitting for verification to indicate the customer has agreed to the Terms of Service and Privacy Policy. When true, a TOS acceptance record will be automatically created. Alternatively, use the /v1/tos endpoints to create a TOS acceptance record and pass the ID in metadata.infiniteTosAcceptanceId (one of these is required at submit).

firstNamestring

First name

middleNamestring

Middle name

nicknamestring

Nickname

lastNamestring

Last name

transliteratedFirstNamestring

Transliterated first name (required if firstName has non-Latin-1 chars)

transliteratedMiddleNamestring

Transliterated middle name (required if middleName has non-Latin-1 chars)

transliteratedLastNamestring

Transliterated last name (required if lastName has non-Latin-1 chars)

emailstring email

Email address

phonestring

Phone number in E.164 format

dateOfBirthstring

Date of birth (YYYY-MM-DD)

nationalitystring

Nationality (ISO 3166-2)

taxResidenceCountrystring

Optional. Country of tax residence (ISO 3166-1 alpha-2). Provide only when it differs from nationality; tax ID format validation falls back to nationality when omitted.

taxIdentificationNumberstring

Tax/identity number (e.g., SSN in US, NINO in UK). This is the number only - for physical ID documents (passport, driver's license, state ID), use the governmentId field.

Validated against country-specific formats when nationality is provided. Accepts NOT_APPLICABLE when no tax ID is available, except for US nationals, who must provide a real SSN/ITIN. If the value does not match the expected format, prefix with OVERRIDE: (e.g. OVERRIDE:123-45-6789) to store it as-is. These should be used sparingly — missing or overridden tax IDs may trigger additional customer due diligence.

occupationstring

Current occupation as an occupation code

employmentStatus'EMPLOYED' | 'SELF_EMPLOYED' | 'UNEMPLOYED' | 'STUDENT' | 'RETIRED' | 'HOMEMAKER'

Employment status

accountPurpose'PERSONAL_EXPENSES' | 'BUSINESS_OPERATIONS' | 'INVESTMENT' | 'SAVINGS' | 'OTHER'

Purpose of account

requestedCapabilitiesstring[]

Capabilities requested by the customer

accountPurposeExplanationstring

Required whenever accountPurpose is OTHER, including partial saves before submit.

sourceOfFunds'COMPANY_FUNDS' | 'ECOMMERCE_RESELLER' | 'GAMBLING_PROCEEDS' | 'GIFTS' | 'GOVERNMENT_BENEFITS' | 'INHERITANCE' | 'INVESTMENTS_LOANS' | 'PENSION_RETIREMENT' | 'SALARY' | 'SALE_OF_ASSETS_REAL_ESTATE' | 'SAVINGS' | 'SOMEONE_ELSES_FUNDS'

Source of funds

sourceOfFundsDescriptionstring

Source of funds description

expectedMonthlyPaymentsUsdnumber

Expected monthly payment volume in USD

actingAsIntermediaryboolean

Acting as intermediary for others

signedAgreementIdstring

Signed terms of service agreement ID. Use POST /v1/tos/generate to create a TOS agreement and obtain the ID. See Terms of Service documentation for details.

ipAddressstring

Client IP address for fraud detection

providerSpecificDataobject

Example request

{
  "metadata": {
    "source": "mobile_app",
    "referrer": "partner_xyz"
  },
  "hasAgreedToTos": true,
  "firstName": "John",
  "middleName": "Michael",
  "nickname": "Johnny",
  "lastName": "Doe",
  "transliteratedFirstName": "Zhang",
  "transliteratedLastName": "San",
  "email": "john.doe@example.com",
  "phone": "+14155551234",
  "dateOfBirth": "1990-01-15",
  "address": {
    "addressLine1": "123 Main Street",
    "addressLine2": "Apt 4B",
    "city": "San Francisco",
    "state": "CA",
    "postalCode": "94102",
    "country": "US",
    "transliterated": {
      "addressLine1": "123 Main Street",
      "addressLine2": "Apt 4B",
      "city": "Beijing",
      "state": "Hebei"
    }
  },
  "nationality": "US",
  "taxResidenceCountry": "GB",
  "taxIdentificationNumber": "123-45-6789",
  "occupation": "151252",
  "expectedMonthlyPaymentsUsd": 5000,
  "governmentId": {
    "type": "PASSPORT",
    "countryCode": "US",
    "number": "A12345678",
    "issuanceDate": "2020-01-15",
    "expirationDate": "2030-01-15",
    "frontImage": "doc_abc123"
  },
  "proofOfAddress": {
    "type": "PROOF_OF_ADDRESS",
    "subtype": "UTILITY_BILL",
    "description": "Passport issued in 2020",
    "remarks": "Uploaded to support proof of business address",
    "file": "doc_abc123"
  },
  "supportingDocuments": [
    {
      "type": "PROOF_OF_ADDRESS",
      "subtype": "UTILITY_BILL",
      "description": "Passport issued in 2020",
      "remarks": "Uploaded to support proof of business address",
      "file": "doc_abc123"
    }
  ],
  "proofOfSourceOfFunds": [
    {
      "type": "PROOF_OF_ADDRESS",
      "subtype": "UTILITY_BILL",
      "description": "Passport issued in 2020",
      "remarks": "Uploaded to support proof of business address",
      "file": "doc_abc123"
    }
  ],
  "signedAgreementId": "tos_abc123",
  "ipAddress": "192.168.1.1"
}

Response

Verification submitted successfully

customerIdstring required

Customer ID

statusstring required

Customer status after saving verification data

submittedAtstring

Submission timestamp when the customer has actually been submitted for review.

documentIdsstring[] required

Document IDs uploaded

reviewWarningsstring[]

Document validation warnings that did not block submission and should be manually reviewed.

Example response

{
  "customerId": "cus_abc123",
  "status": "DRAFT",
  "submittedAt": "2026-09-15T10:30:00Z",
  "documentIds": [
    "doc_abc123",
    "doc_xyz789"
  ],
  "missingRequirements": [
    {
      "requirementType": "FIELD",
      "key": "metadata.infiniteTosAcceptanceId",
      "displayName": "Infinite Terms of Service & Privacy Policy"
    },
    {
      "requirementType": "DOCUMENT",
      "key": "identity.government_id_front",
      "displayName": "Government ID"
    }
  ],
  "reviewWarnings": [
    "businessData.businessAddressProof[0] failed AI proof-of-address validation (confidence 0.62): The address appears similar but the issue date is unclear."
  ]
}

Changes

    • info

      added the new optional request property

    • info

      added the new LIVENESS_CHECK enum value to the request property /////

    • info

      added the new LIVENESS_CHECK enum value to the request property //

    • info

      added the new LIVENESS_CHECK enum value to the request property //