Skip to main content
POST
CLI

Required at submit

Every field on this endpoint is optional so you can save progress. Passing submit=true, or calling POST /customers/{id}/submit, requires the base individual package: first and last name, email, phone, date of birth, tax identification number, residential address, government ID, and a selfie. Proof of address is required when the customer does not reside in the US. Terms acceptance is also required. The authoritative checklist for a customer is GET /customers//compliance. Enhanced diligence is not part of that base gate. When it applies, it is collected after submit.

Authorizations

Authorization
string
header
required

API Key in Bearer format (e.g., Bearer sk_test_...)

Headers

X-API-Key
string

API key

Path Parameters

id
string
required

Customer ID

Example:

"cus_abc123"

Query Parameters

submit
boolean

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

Example:

true

Body

application/json
metadata
object

Additional metadata

Example:
hasAgreedToTos
boolean

Set to true to indicate the customer has agreed to the Terms of Service and Privacy Policy. When true, a TOS acceptance record will be automatically created. This is a convenience for API-based integrations - alternatively, you can use the /v1/tos endpoints to create a TOS acceptance record and pass the ID in metadata.infiniteTosAcceptanceId.

Example:

true

firstName
string

First name

Example:

"John"

middleName
string

Middle name

Example:

"Michael"

nickname
string

Nickname

Example:

"Johnny"

lastName
string

Last name

Example:

"Doe"

transliteratedFirstName
string

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

Example:

"Zhang"

transliteratedMiddleName
string

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

transliteratedLastName
string

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

Example:

"San"

email
string

Email address

Example:

"john.doe@example.com"

phone
string

Phone number in E.164 format

Example:

"+14155551234"

dateOfBirth
string

Date of birth (YYYY-MM-DD)

Example:

"1990-01-15"

address
object

Current residential address. Use the nested transliterated field for Latin character versions of non-Latin addresses.

nationality
string

Nationality (ISO 3166-2)

Example:

"US"

taxResidenceCountry
string

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.

Example:

"GB"

taxIdentificationNumber
string

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.

Example:

"123-45-6789"

occupation
string

Current occupation as an occupation code

Example:

"151252"

employmentStatus
enum<string>

Employment status

Available options:
EMPLOYED,
SELF_EMPLOYED,
UNEMPLOYED,
STUDENT,
RETIRED,
HOMEMAKER
accountPurpose
enum<string>

Purpose of account

Available options:
PERSONAL_EXPENSES,
BUSINESS_OPERATIONS,
INVESTMENT,
SAVINGS,
OTHER
requestedCapabilities
enum<string>[]

Capabilities requested by the customer

Available options:
USD_ACH_PAYIN,
USD_ACH_PAYOUT,
USD_WIRE_PAYIN,
USD_WIRE_PAYOUT,
USD_BALANCE,
USD_YIELD,
SWIFT_PAYIN,
SWIFT_PAYOUT,
STABLECOIN_PAYIN,
STABLECOIN_PAYOUT,
STABLECOIN_SWAPS,
AED_FX_PAYOUT,
AUD_FX_PAYOUT,
BHD_FX_PAYOUT,
BOB_FX_PAYOUT,
BRL_FX_PAYOUT,
CLP_FX_PAYOUT,
CNY_FX_PAYOUT,
COP_FX_PAYOUT,
DOP_FX_PAYOUT,
EGP_FX_PAYOUT,
EUR_FX_PAYOUT,
GBP_FX_PAYOUT,
HKD_FX_PAYOUT,
IDR_FX_PAYOUT,
INR_FX_PAYOUT,
JPY_FX_PAYOUT,
KRW_FX_PAYOUT,
KWD_FX_PAYOUT,
MXN_FX_PAYOUT,
MYR_FX_PAYOUT,
PEN_FX_PAYOUT,
PHP_FX_PAYOUT,
PYG_FX_PAYOUT,
QAR_FX_PAYOUT,
SAR_FX_PAYOUT,
SGD_FX_PAYOUT,
THB_FX_PAYOUT,
TRY_FX_PAYOUT,
TWD_FX_PAYOUT,
USD_FX_PAYOUT,
VND_FX_PAYOUT
accountPurposeExplanation
string

Account purpose explanation (required if purpose is other)

sourceOfFunds
enum<string>

Source of funds

Available options:
COMPANY_FUNDS,
ECOMMERCE_RESELLER,
GAMBLING_PROCEEDS,
GIFTS,
GOVERNMENT_BENEFITS,
INHERITANCE,
INVESTMENTS_LOANS,
PENSION_RETIREMENT,
SALARY,
SALE_OF_ASSETS_REAL_ESTATE,
SAVINGS,
SOMEONE_ELSES_FUNDS
sourceOfFundsDescription
string

Source of funds description

expectedMonthlyPaymentsUsd
number

Expected monthly payment volume in USD

Example:

5000

actingAsIntermediary
boolean

Acting as intermediary for others

Example:

false

governmentId
object

Physical government-issued ID document (e.g., passport, driver's license, state ID). Includes document type, ID number, and front/back images. For tax/identity numbers like SSN, use taxIdentificationNumber instead.

proofOfAddress
object

Proof of address document. Required for individual customers residing outside the US. Acceptable documents: utility bill, bank statement, lease agreement, or government letter dated within the last 90 days.

supportingDocuments
object[]

Supporting documents

proofOfSourceOfFunds
object[]

Proof of source of funds documents for individual EDD flows.

signedAgreementId
string

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.

Example:

"tos_abc123"

ipAddress
string

Client IP address for fraud detection

Example:

"192.168.1.1"

Response

Verification submitted successfully

customerId
string
required

Customer ID

Example:

"cus_abc123"

status
string
required

Customer status after saving verification data

Example:

"DRAFT"

documentIds
string[]
required

Document IDs uploaded

Example:
submittedAt
string

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

Example:

"2026-09-15T10:30:00Z"

missingRequirements
object[]

Merged list of missing fields and documents for full verification (data is saved but customer remains in DRAFT)

Example:
reviewWarnings
string[]

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

Example: