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 business package:
  • Legal name, business type, description, and 6-digit NAICS industry code
  • Business email, phone, and website
  • Tax identification number and registration date
  • Registered address and physical address
  • Account purpose, source of funds, estimated annual revenue, expected monthly payment volume, expected counterparty countries, expected monthly crypto volume, and primary target market
  • At least one beneficial owner or control person
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

Required at submit. Legal name of business

Example:

"Acme Corporation Inc."

Transliterated legal name

tradeName
string

Trade name / DBA. Separate multiple names with semicolons.

Example:

"Acme; Acme Pay"

transliteratedTradeName
string

Transliterated trade name

businessType
enum<string>

Required at submit. Business type

Available options:
CORPORATION,
LLC,
PARTNERSHIP,
GEN_PARTNERSHIP,
LLP,
LP,
SOLE_PROPRIETORSHIP,
NON_PROFIT,
TRUST,
COOPERATIVE,
PRIVATE_LIMITED_COMPANY,
SPV,
JOINT_VENTURE
Example:

"LLC"

description
string

Required at submit. Brief business description

Example:

"Software development and consulting services"

industry
string

Required at submit. 6-digit NAICS industry classification code

Required string length: 6
Pattern: ^\d{6}$
Example:

"522320"

industryCryptoSubtype
enum<string>

Crypto-specific industry subtype. Required when isCrypto is true.

Available options:
PROTOCOL,
EXCHANGE,
INVESTMENT,
LENDER,
MARKET_MAKER,
SAAS,
MINER
industryFinancialServicesSubtype
enum<string>

Financial-services-specific industry subtype

Available options:
GAMING,
CROWD_FUNDING,
BANK,
FUND,
INSURANCE,
RIA,
INVESTMENT_MANAGER,
MSB,
NBFI,
PAYMENT_PROCESSOR,
VASP
industryExplanation
string

Additional industry explanation

isCrypto
boolean

Set true if the business operates in crypto or digital assets.

Example:

false

email
string

Required at submit. Business email address. Use an email on the company domain when available; personal email domains such as Gmail may require additional due diligence.

Example:

"contact@acme.com"

phone
string

Required at submit. Business phone number in E.164 format

Example:

"+14155551234"

website
string

Required at submit. Primary website

Example:

"https://acme.com"

otherWebsites
string[]

Other websites and social media

registeredAddress
object

Required at submit. Registered address. Use the nested transliterated field for Latin character versions of non-Latin addresses.

physicalAddress
object

Required at submit. Physical business address where business actually operates. Use the nested transliterated field for Latin character versions.

⚠️ IMPORTANT RESTRICTIONS: • Cannot be a virtual address or registered agent address • Cannot be a PO Box • Wyoming and Delaware addresses will be flagged for additional review • If business operates remotely, provide the residential address of the control person • Proof of address may be required if location signals are inconsistent

isRemoteCompany
boolean

Set true when the business operates remotely from an owner or director address.

Example:

false

registrationDate
string

Required at submit. Date of business registration (YYYY-MM-DD)

Example:

"2015-06-01"

registrationNumber
string

Business registration number issued by the state/authority when the business was registered (e.g., LLC filing number, corporation charter number). This is different from the tax identification number.

Example:

"123456789"

taxIdentificationNumber
string

Required at submit. Tax identification number issued by the tax authority (e.g., EIN in the US, VAT number in EU). This is different from the business registration number.

Validated against country-specific formats when countryCode is provided. Accepts NOT_APPLICABLE when no tax ID is available. If the value does not match the expected format, prefix with OVERRIDE: (e.g. OVERRIDE:12-3456789) to store it as-is. These should be used sparingly — missing or overridden tax IDs may trigger additional customer due diligence.

Example:

"12-3456789"

accountPurpose
enum<string>

Required at submit. Purpose of account

Available options:
PAYROLL,
VENDOR_PAYMENTS,
TREASURY,
OPERATIONS,
CAPITAL_DEPLOYMENT,
CROSS_BORDER_PAYMENTS,
STABLECOIN_CONVERSION,
ECOMMERCE,
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 other)

sourceOfFunds
enum<string>

Required at submit. Source of funds

Available options:
BUSINESS_REVENUE,
INVESTMENT,
OWNER_CAPITAL,
LOAN,
GRANTS,
EQUITY,
INHERITANCE,
GIFT,
OTHER
sourceOfFundsDescription
string

Source of funds description

estimatedAnnualRevenueUsd
enum<string>

Required at submit. Estimated annual revenue in USD

Available options:
PRE_REVENUE,
LESS_THAN_10K,
10K_TO_50K,
50K_TO_100K,
100K_TO_500K,
500K_TO_1M,
1M_TO_5M,
5M_TO_10M,
10M_TO_50M,
50M_TO_250M,
MORE_THAN_250M,
LESS_THAN_100K
expectedMonthlyPaymentsUsd
number

Required at submit. Expected monthly fiat payment volume in USD-equivalent

Example:

50000

expectedCounterpartyCountries
string[]

Required at submit. Expected counterparty countries

Example:
expectedCryptoMonthlyVolume
number

Required at submit. Expected monthly crypto volume in USD-equivalent

Example:

250000

expectedMonthlyAch
number

Expected monthly ACH volume in USD-equivalent

Example:

100000

expectedMonthlyWire
number

Expected monthly wire volume in USD-equivalent

Example:

500000

primaryTargetMarket
enum<string>

Required at submit. Primary target market. RETAIL = B2C (consumers), COMMERCIAL = B2B (businesses), GOVERNMENT = B2G (government entities), OTHER = another market not covered by the standard options.

Available options:
RETAIL,
COMMERCIAL,
GOVERNMENT,
OTHER
primaryTargetMarketExplanation
string

Primary target market explanation (required if primaryTargetMarket is OTHER)

moneyServicesDescription
string

Money services description. Collected through enhanced diligence when required.

complianceScreeningExplanation
string

Compliance screening explanation. Collected through enhanced diligence when required.

operatesInProhibitedCountries
boolean

Operates in prohibited countries

Example:

false

highRiskActivities
enum<string>[]

High risk activities the business engages in

Available options:
MONEY_SERVICES,
LENDING_BANKING,
OTC_FX_CRYPTO_BROKERAGE,
HOLD_CLIENT_FUNDS,
INVESTMENT_SERVICES,
SAFE_DEPOSIT_BOX,
PRECIOUS_METALS_STONES_JEWELRY,
NICOTINE_TOBACCO,
MARIJUANA,
PHARMACEUTICALS,
THIRD_PARTY_PAYMENT_PROCESSING,
ADULT_ENTERTAINMENT,
WEAPONS_FIREARMS_EXPLOSIVES,
GAMBLING
highRiskActivitiesExplanation
string

Explanation of high risk activities (required if high risk activities present)

hasMaterialIntermediaryOwnership
boolean

Has intermediate legal entity ownership (25%+)

ownershipThreshold
number

Ownership threshold percentage (0-100, default 25)

Example:

25

associatedEntities
object[]

Required at submit. At least one beneficial owner or control person. Submit only individual leaf beneficial owners and control persons here. If ownership passes through an intermediate business, create that business first via the associated entity endpoints and then create its child entities with parentEntityId set to that business entity ID.

supportingDocuments
object[]

Supporting documents (business formation, ownership info, license/regulatory registration if applicable). Required for full KYB verification.

businessFormationDocuments
object[]

Business formation documents such as articles of incorporation or an operating agreement.

ownershipInformationDocuments
object[]

Ownership information documents such as a cap table, shareholder registry, or trust deed.

businessAddressProof
object[]

Business address proof documents for business EDD.

amlPolicy
object[]

AML / BSA policy documents for money services businesses.

directorsRegistry
object[]

Directors registry documents for business EDD.

proofOfSignatoryAuthority
object[]

Proof of signatory authority documents such as a board resolution or certificate of incumbency.

msbLicense
object[]

MSB license documents when applicable.

bankStatements
object[]

Bank statements covering the last 3 months. Required for business EDD.

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: