Skip to main content
POST
cURL
Submits a business’s KYB (Know Your Business) data for verification. The endpoint accepts the submission and returns immediately with 202 Accepted — the underlying AiPrise call chain (session creation, business profile creation, questionnaire, document uploads, related-person verification, and running the verification) is driven asynchronously in the background. Poll GET /details to track progress and retrieve the final verification result.

Important Notes

  • This endpoint always returns 202 Accepted with submissionStage: "DRAFT" and no externalResourceId — the AiPrise call chain hasn’t started yet at response time.
  • Only one KYB submission can be in progress per user at a time. Submitting again while a prior submission is IN_PROGRESS returns the existing verification instead of creating a new one.
  • An optional Idempotency-Key header (16–128 printable ASCII characters) protects against duplicate submissions from client-side retries — a repeated request with the same key and body replays the original response instead of processing twice.
  • country accepts MX, US, DO, or any SEPA-region country code for EUR-market businesses.
  • Several fields are conditionally required based on other answers (e.g. isUsMsb fields only apply when country is US; mx* fields only apply when country is MX) — see each field’s description in the schema.
  • Every relatedPersons entry represents a UBO, director, authorized representative, controlling person, or legal representative — at least one is required. taxRegistrationDocument, beneficialOwnerDeclarationDocument, and accountStatementDocument are optional per person and only relevant in specific markets/products (see field descriptions).
  • All document fields expect base64-encoded file content (fileBase64) alongside a fileName.

Use Cases

  • Business onboarding: Collect and submit a business’s full KYB questionnaire and supporting documents in a single call without blocking on AiPrise’s processing time.
  • Status tracking: Combine with GET /details to build a progress UI for partners while the verification runs in the background.

Error Codes

Common Errors

User Ownership Errors

Idempotency Errors

Endpoint-Specific Errors

Authorizations

partner-api-key
string
header
required

API key for the affiliated partner performing the request.

Headers

Idempotency-Key
string

Optional client-generated key (16-128 printable ASCII characters). If provided, a retried request with the same key and body replays the original response instead of creating a second submission.

Example:

"b7e1c2b0-2f3a-4a5b-9c0e-1a2b3c4d5e6f"

Body

application/json
userId
string<uuid>
required
country
enum<string>
required

Also accepts any SEPA-region ISO alpha-2 code for EUR-market businesses.

Available options:
MX,
US,
DO
businessName
string
required
incorporationDate
string<date>
required
incorporationCountry
string
required

ISO 3166-1 alpha-2.

businessAddress
object
required
termsAndConditionsAcceptance
object
required
industry
enum<string>
required
Available options:
Financial services,
Crypto / digital assets,
Technology,
Real estate,
Construction,
Energy,
Entertainment,
Health,
Professional services,
Trade / commerce,
Gambling / gaming,
Non-profit,
Government,
Other
Available options:
Limited Liability Company (LLC),
Corporation,
Partnership,
Sole proprietorship,
Non-profit organization,
Other
businessModelDescription
string
required
Minimum string length: 100
sourceOfFunds
enum<string>[]
required
Minimum array length: 1
Available options:
Business revenue,
Employment income,
Investment income,
Loans / financing,
Donations,
Third-party funds,
Other
accountPurpose
enum<string>[]
required
Minimum array length: 1
Available options:
Business operations,
Payroll,
Cross-border payments,
Domestic payments,
Personal remittances,
Investment,
Treasury management,
Third-party money transmission,
Charitable / donations,
Personal expenses,
Other
licenses
enum<string>[]
required
Minimum array length: 1
Available options:
Money Services Business (MSB),
Money transmitter license,
Virtual Asset Service Provider (VASP),
Crypto-Asset Service Provider (CASP / MiCA),
Electronic Money Institution (EMI),
Payment institution (PSD2),
Banking license,
Broker-dealer license,
Trust company,
None / not applicable,
Other
counterpartyCountries
string[]
required
Minimum array length: 1
expectedFiatMonthlyVolume
enum<string>
required
Available options:
Less than $5,000 USD,
$5,000 – $50,000 USD,
$50,000 – $500,000 USD,
$500,000 – $5,000,000 USD,
More than $5,000,000 USD
expectedCryptoMonthlyVolume
enum<string>
required
Available options:
No crypto activity,
Less than $5,000 USD,
$5,000 – $50,000 USD,
$50,000 – $500,000 USD,
$500,000 – $5,000,000 USD,
More than $5,000,000 USD
primaryTargetMarket
enum<string>
required
Available options:
Commercial (businesses),
Retail (individual consumers),
Government,
Other
expectedCryptoMonthlyOperationCount
enum<string>
required
Available options:
0-100,
101-200,
201<
expectedFiatMonthlyOperationCount
enum<string>
required
Available options:
0-100,
100-200,
201<
operatingCountries
string[]
required
Minimum array length: 1
highRiskIndustryExposure
boolean
required
asiaExposure
boolean
required
capaProducts
enum<string>[]
required
Minimum array length: 1
Available options:
Stablecoin FX,
International Payments
regulatedCountries
string[]
required
Minimum array length: 1
businessRegistrationDocument
object
required
addressProofDocument
object
required
bankStatementDocument
object
required
directorsRegistry
object
required
articlesOfIncorporation
object
required
shareholdersRegistry
object
required
taxRegistrationCertificate
object
required
Minimum array length: 1
dbaName
string
taxId
string
website
string<uri>
registrationEntityId
string
stateCode
string
registeredAddress
object

Only if different from businessAddress.

contactPhone
string
contactEmail
string<email>
industryOtherDescription
string

Required if industry is "Other".

financialServicesSubtype
string

Required if industry is "Financial services".

cryptoSubtype
enum<string>

Required if industry is "Crypto / digital assets".

Available options:
Protocol,
Exchange,
Investment,
Lending,
Market maker,
SaaS,
Mining,
Custody,
Virtual asset service provider (VASP),
Other

Required if legalEntityType is "Other".

sourceOfFundsOtherDescription
string

Required if sourceOfFunds includes "Other".

accountPurposeOtherDescription
string

Required if accountPurpose includes "Other".

licensesOtherDescription
string

Required if licenses includes "Other".

primaryTargetMarketOtherDescription
string

Required if primaryTargetMarket is "Other".

highRiskIndustries
enum<string>[]

Required (min 1) if highRiskIndustryExposure is true.

Available options:
Money Services Businesses (MSBs),
Cryptocurrency and Digital Asset Exchanges,
Online Gambling and Gaming,
Adult Entertainment,
Cannabis and Marijuana,
Firearms and Weapons,
Pharmaceuticals and Controlled Substances,
Political Organizations and PACs,
Nonprofits and International Charities,
Shell Companies and Complex Holding Structures,
Precious Metals and Gems Dealers,
High-Value Real Estate,
Luxury Goods,
Private ATM Operators,
Pawn Shops,
Import and Export Trade Finance
highRiskActivityDescription
string

Required if highRiskIndustryExposure is true.

asiaExposureCountries
string[]

Required (min 1) if asiaExposure is true.

isUsMsb
boolean

Required if country is US.

usMsbCategories
enum<string>[]

Required (min 1) if isUsMsb is true.

Available options:
Money transmitter,
Currency dealer or exchanger,
Check casher,
Issuer of traveler's checks or money orders,
Provider of prepaid access,
Seller of prepaid access,
Dealer in foreign exchange,
Virtual currency / asset provider,
Other
usMsbCategoriesOtherDescription
string

Required if usMsbCategories includes "Other".

msbVirtualAssetSubtype
string

Required if usMsbCategories includes "Virtual currency / asset provider".

msbServiceDescription
string

Required if isUsMsb is true.

Required if country is MX.

Available options:
Personas Morales de nacionalidad mexicana,
Persona Moral de Nacionalidad Extranjera,
Persona Moral o Entidad referida en el Anexo 7-A de las Reglas de Carácter General
mxAnnex7ASubtype
string

Required if mxLegalEntityType is the Anexo 7-A option.

mxVulnerableActivityOrLicense
boolean

Required if country is MX.

mxVulnerableActivityDescription
string

Required if mxVulnerableActivityOrLicense is true.

mxExpectedMonthlyOperationCount
enum<string>

Required if country is MX.

Available options:
0 to 100,
101 to 200,
More than 201
mxEconomicActivity
string

Required if country is MX. See Appendix — 136-entry official "giro" catalog.

sourceOfFundsDocument
object

AiPrise's Source of Funds slot (also labeled "Estado financiero" for EUR-market businesses) — optional, every market.

operatingLicenseDocument
object

Required if isUsMsb is true; optional otherwise.

amlPolicy
object

Required if isUsMsb is true.

beneficialControllerDeclaration
object

"Declaración Beneficiario Controlador Final" — optional, every market.

Response

Business profile accepted for asynchronous processing — the AiPrise call chain runs in the background. Poll GET /details for progress.

success
boolean
Example:

true

data
object