Skip to main content
Prerequisite: have a session token. See Authentication.

Flow

Steps

1

1) Get fields + values

GET /kyc/values to see required fields and allowed values.
2

2) Submit application

POST /kyc/applications with the fields below. Sandbox: set lastName to approved to auto‑approve.
3

3) Complete verification

We return a completionLink (or externalVerificationLink). Open it in a browser for document upload and face match. Users finish verification there — you don’t need to handle media.
4

4) Check status

Poll GET /kyc/status until the status becomes approved (or an actionable state such as needs_information).
5

5) Accept agreements

After approval, fetch the agreements and collect user consent. See Agreements.

States

  • approved
  • pending
  • needs_information
  • needs_verification
  • manual_review
  • denied
  • locked
  • canceled

Fields (submit application)

firstName
string
required
Given name.
lastName
string
required
Family name. Sandbox shortcut: set to approved to auto-approve.
birthDate
string
required
YYYY-MM-DD (e.g., 1990-01-01).
nationalId
string
required
Government ID number (letters, numbers, dashes only).
countryOfIssue
string
required
ISO-3166-1 alpha-2 country code (e.g., US). Case-insensitive.
email
string
required
Email address.
phoneCountryCode
string
Optional phone dial code digits only (e.g., 1).
phoneNumber
string
Optional phone number digits only (include area code).
address.line1
string
required
Street address (line 1).
address.line2
string
Street address (line 2).
address.city
string
required
City.
address.region
string
required
State/region (e.g., CA).
address.postalCode
string
required
Postal/ZIP code.
address.countryCode
string
required
ISO-3166-1 alpha-2 country code (e.g., US). Case-insensitive.
occupation
string
required
SOC occupation code (e.g., 49-3023). Full list: KYC Field Values.
annualSalary
string
required
Choose one label (we map to the underlying range for you):
  • <40k
  • 50k–99k
  • 100k–149k
  • 150k+
accountPurpose
string
required
Choose one:
  • everyday spend
  • subscriptions
  • business expenses
  • testing
  • other
expectedMonthlyVolume
string
required
Choose one label (we map to the underlying range for you):
  • under $1k
  • 1k1k–5k
  • 5k5k–20k
  • $20k+

Response (status)

status
string
required
One of: approved, pending, needs_information, needs_verification, manual_review, denied, locked, canceled.
applicationId
string
Identifier for the submitted application (when available).
reason
string
Additional context for non-approved statuses.
Sandbox shortcut: set lastName to approved to auto‑approve. See KYC Field Values for allowed field values.