---
title: "Save business customer verification"
method: POST
path: "/v1/customers/{id}/verification/business"
tags: ["Customers"]
---

# Save business customer verification

`POST /v1/customers/{id}/verification/business`

Save complete business verification data for a BUSINESS customer.

Key features:
- Submit comprehensive business verification data
- Reference previously uploaded business 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 business verification payload:
- Legal name, business type, addresses, tax info, UBOs, business docs, regulatory info
- `associatedEntities` on this payload should contain only individual leaf beneficial owners and control persons
- If ownership passes through an intermediate business, create that business first via the associated entity endpoints and then create child entities with `parentEntityId` set to that business entity ID

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/businesses 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)

## Path parameters

- `id` string, required

## Query parameters

- `submit` boolean

## Headers

- `X-API-Key` string

## Request body

- SubmitBusinessCustomerVerificationDto
  - `metadata` object — Additional metadata
  - `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.
  - `legalName` string — Legal name of business
  - `transliteratedLegalName` string — Transliterated legal name
  - `tradeName` string — Trade name / DBA. Separate multiple names with semicolons.
  - `transliteratedTradeName` string — Transliterated trade name
  - `businessType` 'CORPORATION' | 'LLC' | 'PARTNERSHIP' | 'GEN_PARTNERSHIP' | 'LLP' | 'LP' | 'SOLE_PROPRIETORSHIP' | 'NON_PROFIT' | 'TRUST' | 'COOPERATIVE' | 'PRIVATE_LIMITED_COMPANY' | 'SPV' | 'JOINT_VENTURE' — Business type
  - `description` string — Brief business description
  - `industry` string — 6-digit NAICS industry classification code
  - `industryCryptoSubtype` 'PROTOCOL' | 'EXCHANGE' | 'INVESTMENT' | 'LENDER' | 'MARKET_MAKER' | 'SAAS' | 'MINER' — Crypto-specific industry subtype. Required when isCrypto is true.
  - `industryFinancialServicesSubtype` 'GAMING' | 'CROWD_FUNDING' | 'BANK' | 'FUND' | 'INSURANCE' | 'RIA' | 'INVESTMENT_MANAGER' | 'MSB' | 'NBFI' | 'PAYMENT_PROCESSOR' | 'VASP' — Financial-services-specific industry subtype
  - `industryExplanation` string — Additional industry explanation
  - `isCrypto` boolean — Set true if the business operates in crypto or digital assets.
  - `email` string, email — Business email address. Use an email on the company domain when available; personal email domains such as Gmail may require additional due diligence.
  - `phone` string — Business phone number in E.164 format
  - `website` string, uri — Primary website
  - `otherWebsites` string[] — Other websites and social media
  - `registeredAddress` AddressDto
    - `addressLine1` string, required — Address line 1
    - `addressLine2` string — Address line 2 (apartment, suite, etc.)
    - `city` string, required — City
    - `state` string — State / Province
    - `postalCode` string, required — Postal code / ZIP code. May be empty for countries without a postal-code system, including the United Arab Emirates.
    - `country` string, required — Country code (ISO 3166-2)
    - `transliterated` TransliteratedAddressDto
      - `addressLine1` string — Transliterated address line 1 (Latin characters)
      - `addressLine2` string — Transliterated address line 2 (Latin characters)
      - `city` string — Transliterated city (Latin characters)
      - `state` string — Transliterated state/province (Latin characters)
  - `physicalAddress` AddressDto
    - `addressLine1` string, required — Address line 1
    - `addressLine2` string — Address line 2 (apartment, suite, etc.)
    - `city` string, required — City
    - `state` string — State / Province
    - `postalCode` string, required — Postal code / ZIP code. May be empty for countries without a postal-code system, including the United Arab Emirates.
    - `country` string, required — Country code (ISO 3166-2)
    - `transliterated` TransliteratedAddressDto
      - `addressLine1` string — Transliterated address line 1 (Latin characters)
      - `addressLine2` string — Transliterated address line 2 (Latin characters)
      - `city` string — Transliterated city (Latin characters)
      - `state` string — Transliterated state/province (Latin characters)
  - `isRemoteCompany` boolean — Set true when the business operates remotely from an owner or director address.
  - `registrationDate` string — Date of business registration (YYYY-MM-DD)
  - `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.
  - `taxIdentificationNumber` string — 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.
  - `accountPurpose` 'PAYROLL' | 'VENDOR_PAYMENTS' | 'TREASURY' | 'OPERATIONS' | 'CAPITAL_DEPLOYMENT' | 'CROSS_BORDER_PAYMENTS' | 'STABLECOIN_CONVERSION' | 'ECOMMERCE' | 'OTHER' — Purpose of account
  - `requestedCapabilities` string[] — Capabilities requested by the customer
  - `accountPurposeExplanation` string — Account purpose explanation (required if other)
  - `sourceOfFunds` 'BUSINESS_REVENUE' | 'INVESTMENT' | 'OWNER_CAPITAL' | 'LOAN' | 'GRANTS' | 'EQUITY' | 'INHERITANCE' | 'GIFT' | 'OTHER' — Source of funds
  - `sourceOfFundsDescription` string — Source of funds description
  - `estimatedAnnualRevenueUsd` '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' — Estimated annual revenue in USD
  - `expectedMonthlyPaymentsUsd` number — Expected monthly fiat payment volume in USD-equivalent
  - `expectedCounterpartyCountries` string[] — Expected counterparty countries
  - `expectedCryptoMonthlyVolume` number — Expected monthly crypto volume in USD-equivalent
  - `expectedMonthlyAch` number — Expected monthly ACH volume in USD-equivalent
  - `expectedMonthlyWire` number — Expected monthly wire volume in USD-equivalent
  - `primaryTargetMarket` 'RETAIL' | 'COMMERCIAL' | 'GOVERNMENT' | 'OTHER' — Primary target market. RETAIL = B2C (consumers), COMMERCIAL = B2B (businesses), GOVERNMENT = B2G (government entities), OTHER = another market not covered by the standard options.
  - `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
  - `highRiskActivities` string[] — High risk activities the business engages in
  - `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)
  - `associatedEntities` VerificationAssociatedEntityDto[] — Associated entities (UBOs, control persons). Required for full KYB verification. 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.
    - `associatedEntityId` string — Stable associated entity identifier
    - `entityType` 'INDIVIDUAL' | 'BUSINESS' — Type of entity - INDIVIDUAL (person) or BUSINESS (company)
    - `parentEntityId` string — Parent entity ID for nested ownership. Use the associated business entity ID returned from the associated entity endpoints when linking a child owner beneath an intermediate business owner.
    - `firstName` string — First name (required for INDIVIDUAL)
    - `lastName` string — Last name (required for INDIVIDUAL)
    - `middleName` string — Middle name
    - `nickname` string — Nickname
    - `dateOfBirth` string — Date of birth (YYYY-MM-DD) - required for INDIVIDUAL
    - `taxIdentificationNumber` string — Tax identification number (e.g., SSN for individuals, EIN for businesses). Required for US nationals or US residents and validated against country-specific formats when provided. Accepts NOT_APPLICABLE when no tax ID is available, except for US nationals or residents, who must provide a real SSN/ITIN. Nationals or residents of countries that do not issue personal tax IDs (e.g. the Cayman Islands) may record an all-zeros placeholder. If the value does not match the expected format, prefix with OVERRIDE:. These should be used sparingly — missing or overridden tax IDs may trigger additional customer due diligence.
    - `taxIdentificationDocumentType` string — Tax identification document type when the issuing country supports multiple tax ID types.
    - `transliteratedFirstName` string — Transliterated first name
    - `transliteratedMiddleName` string — Transliterated middle name
    - `transliteratedLastName` string — Transliterated last name
    - `businessName` string — Business name (required for BUSINESS)
    - `registrationNumber` string — Business registration number
    - `dateOfIncorporation` string — Date of incorporation (YYYY-MM-DD)
    - `businessAddress` AddressDto
      - `addressLine1` string, required — Address line 1
      - `addressLine2` string — Address line 2 (apartment, suite, etc.)
      - `city` string, required — City
      - `state` string — State / Province
      - `postalCode` string, required — Postal code / ZIP code. May be empty for countries without a postal-code system, including the United Arab Emirates.
      - `country` string, required — Country code (ISO 3166-2)
      - `transliterated` TransliteratedAddressDto
        - `addressLine1` string — Transliterated address line 1 (Latin characters)
        - `addressLine2` string — Transliterated address line 2 (Latin characters)
        - `city` string — Transliterated city (Latin characters)
        - `state` string — Transliterated state/province (Latin characters)
    - `countryCode` 'AD' | 'AE' | 'AF' | 'AG' | 'AI' | 'AL' | 'AM' | 'AO' | 'AR' | 'AS' | 'AT' | 'AU' | 'AW' | 'AZ' | 'BA' | 'BB' | 'BD' | 'BE' | 'BF' | 'BG' | 'BH' | 'BI' | 'BJ' | 'BL' | 'BM' | 'BN' | 'BO' | 'BR' | 'BS' | 'BT' | 'BW' | 'BY' | 'BZ' | 'CA' | 'CC' | 'CD' | 'CF' | 'CG' | 'CH' | 'CI' | 'CK' | 'CL' | 'CM' | 'CN' | 'CO' | 'CR' | 'CU' | 'CV' | 'CW' | 'CX' | 'CY' | 'CZ' | 'DE' | 'DJ' | 'DK' | 'DM' | 'DO' | 'DZ' | 'EC' | 'EE' | 'EG' | 'EH' | 'ER' | 'ES' | 'ET' | 'EU' | 'FI' | 'FJ' | 'FK' | 'FM' | 'FO' | 'FR' | 'GA' | 'GB' | 'GD' | 'GE' | 'GH' | 'GI' | 'GL' | 'GM' | 'GN' | 'GP' | 'GQ' | 'GR' | 'GS' | 'GT' | 'GU' | 'GW' | 'GY' | 'HK' | 'HN' | 'HR' | 'HT' | 'HU' | 'ID' | 'IE' | 'IL' | 'IM' | 'IN' | 'IQ' | 'IR' | 'IS' | 'IT' | 'JE' | 'JM' | 'JO' | 'JP' | 'KE' | 'KG' | 'KH' | 'KI' | 'KM' | 'KN' | 'KP' | 'KR' | 'KW' | 'KY' | 'KZ' | 'LA' | 'LB' | 'LC' | 'LI' | 'LK' | 'LR' | 'LS' | 'LT' | 'LU' | 'LV' | 'LY' | 'MA' | 'MC' | 'MD' | 'ME' | 'MF' | 'MG' | 'MH' | 'MK' | 'ML' | 'MM' | 'MN' | 'MO' | 'MP' | 'MQ' | 'MR' | 'MS' | 'MT' | 'MU' | 'MV' | 'MW' | 'MX' | 'MY' | 'MZ' | 'NA' | 'NC' | 'NE' | 'NF' | 'NG' | 'NI' | 'NL' | 'NO' | 'NP' | 'NR' | 'NU' | 'NZ' | 'OM' | 'PA' | 'PE' | 'PF' | 'PG' | 'PH' | 'PK' | 'PL' | 'PM' | 'PN' | 'PR' | 'PS' | 'PT' | 'PW' | 'PY' | 'QA' | 'RE' | 'RO' | 'RS' | 'RU' | 'RW' | 'SA' | 'SB' | 'SC' | 'SD' | 'SE' | 'SG' | 'SH' | 'SI' | 'SJ' | 'SK' | 'SL' | 'SM' | 'SN' | 'SO' | 'SR' | 'SS' | 'ST' | 'SV' | 'SY' | 'SZ' | 'TC' | 'TD' | 'TG' | 'TH' | 'TJ' | 'TK' | 'TL' | 'TM' | 'TN' | 'TO' | 'TR' | 'TT' | 'TV' | 'TW' | 'TZ' | 'UA' | 'UG' | 'UM' | 'US' | 'UY' | 'UZ' | 'VA' | 'VC' | 'VE' | 'VG' | 'VI' | 'VN' | 'VU' | 'WF' | 'WS' | 'YE' | 'YT' | 'ZA' | 'ZM' | 'ZW', required — Country code (ISO 3166-1 alpha-2). Nationality for individuals, country of incorporation for businesses.
    - `email` string, email — Email address. Required when generateVerificationLink is true.
    - `phone` string — Phone number
    - `address` AddressDto
      - `addressLine1` string, required — Address line 1
      - `addressLine2` string — Address line 2 (apartment, suite, etc.)
      - `city` string, required — City
      - `state` string — State / Province
      - `postalCode` string, required — Postal code / ZIP code. May be empty for countries without a postal-code system, including the United Arab Emirates.
      - `country` string, required — Country code (ISO 3166-2)
      - `transliterated` TransliteratedAddressDto
        - `addressLine1` string — Transliterated address line 1 (Latin characters)
        - `addressLine2` string — Transliterated address line 2 (Latin characters)
        - `city` string — Transliterated city (Latin characters)
        - `state` string — Transliterated state/province (Latin characters)
    - `hasOwnership` boolean, required — Whether this entity is an owner. For an individual with indirect ownership whose percentage is not quantified, set this to true to identify them as a beneficial owner.
    - `hasControl` boolean, required — Has significant control
    - `ownershipPercentage` number — Ownership percentage
    - `isSigner` boolean — Has signing authority
    - `isDirector` boolean — Is a director
    - `role` 'CEO' | 'CFO' | 'COO' | 'PRESIDENT' | 'GENERAL_COUNSEL' | 'MANAGING_MEMBER' | 'TREASURER' | 'OTHER' — Structured role at the company.
    - `governmentId` VerificationAssociatedEntityGovernmentIdDto
      - `type` 'PASSPORT' | 'DRIVERS_LICENSE' | 'NATIONAL_ID' | 'MILITARY_ID' | 'PERMANENT_RESIDENCY_ID' | 'STATE_OR_PROVINCIAL_ID'
      - `countryCode` string — Country of issuance (ISO 3166-1 alpha-2)
      - `number` string — ID number
      - `issuanceDate` string — Issuance date (YYYY-MM-DD)
      - `expirationDate` string, nullable — Expiration date (YYYY-MM-DD), or null for non-expiring IDs
      - `frontImage` string — Front image document ID reference
      - `backImage` string — Back image document ID reference
      - `selfie` string — Selfie document ID reference
    - `proofOfAddress` ProofOfAddressDto
      - `type` 'UTILITY_BILL' | 'BANK_STATEMENT' | 'LEASE_AGREEMENT' | 'GOVERNMENT_LETTER' | 'OTHER', required — Type of proof of address document
      - `countryCode` 'AD' | 'AE' | 'AF' | 'AG' | 'AI' | 'AL' | 'AM' | 'AO' | 'AR' | 'AS' | 'AT' | 'AU' | 'AW' | 'AZ' | 'BA' | 'BB' | 'BD' | 'BE' | 'BF' | 'BG' | 'BH' | 'BI' | 'BJ' | 'BL' | 'BM' | 'BN' | 'BO' | 'BR' | 'BS' | 'BT' | 'BW' | 'BY' | 'BZ' | 'CA' | 'CC' | 'CD' | 'CF' | 'CG' | 'CH' | 'CI' | 'CK' | 'CL' | 'CM' | 'CN' | 'CO' | 'CR' | 'CU' | 'CV' | 'CW' | 'CX' | 'CY' | 'CZ' | 'DE' | 'DJ' | 'DK' | 'DM' | 'DO' | 'DZ' | 'EC' | 'EE' | 'EG' | 'EH' | 'ER' | 'ES' | 'ET' | 'EU' | 'FI' | 'FJ' | 'FK' | 'FM' | 'FO' | 'FR' | 'GA' | 'GB' | 'GD' | 'GE' | 'GH' | 'GI' | 'GL' | 'GM' | 'GN' | 'GP' | 'GQ' | 'GR' | 'GS' | 'GT' | 'GU' | 'GW' | 'GY' | 'HK' | 'HN' | 'HR' | 'HT' | 'HU' | 'ID' | 'IE' | 'IL' | 'IM' | 'IN' | 'IQ' | 'IR' | 'IS' | 'IT' | 'JE' | 'JM' | 'JO' | 'JP' | 'KE' | 'KG' | 'KH' | 'KI' | 'KM' | 'KN' | 'KP' | 'KR' | 'KW' | 'KY' | 'KZ' | 'LA' | 'LB' | 'LC' | 'LI' | 'LK' | 'LR' | 'LS' | 'LT' | 'LU' | 'LV' | 'LY' | 'MA' | 'MC' | 'MD' | 'ME' | 'MF' | 'MG' | 'MH' | 'MK' | 'ML' | 'MM' | 'MN' | 'MO' | 'MP' | 'MQ' | 'MR' | 'MS' | 'MT' | 'MU' | 'MV' | 'MW' | 'MX' | 'MY' | 'MZ' | 'NA' | 'NC' | 'NE' | 'NF' | 'NG' | 'NI' | 'NL' | 'NO' | 'NP' | 'NR' | 'NU' | 'NZ' | 'OM' | 'PA' | 'PE' | 'PF' | 'PG' | 'PH' | 'PK' | 'PL' | 'PM' | 'PN' | 'PR' | 'PS' | 'PT' | 'PW' | 'PY' | 'QA' | 'RE' | 'RO' | 'RS' | 'RU' | 'RW' | 'SA' | 'SB' | 'SC' | 'SD' | 'SE' | 'SG' | 'SH' | 'SI' | 'SJ' | 'SK' | 'SL' | 'SM' | 'SN' | 'SO' | 'SR' | 'SS' | 'ST' | 'SV' | 'SY' | 'SZ' | 'TC' | 'TD' | 'TG' | 'TH' | 'TJ' | 'TK' | 'TL' | 'TM' | 'TN' | 'TO' | 'TR' | 'TT' | 'TV' | 'TW' | 'TZ' | 'UA' | 'UG' | 'UM' | 'US' | 'UY' | 'UZ' | 'VA' | 'VC' | 'VE' | 'VG' | 'VI' | 'VN' | 'VU' | 'WF' | 'WS' | 'YE' | 'YT' | 'ZA' | 'ZM' | 'ZW', required — Country code (ISO 3166-2)
      - `issueDate` string, required — Issue date of the document (YYYY-MM-DD). Must be within the last 90 days.
      - `file` string, required — Proof of address document ID reference (`doc_xxx`). Upload the file with `POST /documents`, confirm it, then pass the resulting document ID here. Accepted formats for the uploaded file are PDF, JPEG, PNG, and WEBP.
    - `supportingDocuments` DocumentUploadDto[] — Supporting documents
      - `requirementId` string — Stable identifier for the custom document requirement this upload satisfies
      - `type` 'IDENTITY' | 'PROOF_OF_ADDRESS' | 'INVOICE' | 'CONTRACT' | 'BANK_STATEMENT' | 'BUSINESS_LICENSE' | 'ARTICLES_OF_INCORPORATION' | 'ARTICLES_OF_ASSOCIATION' | 'CERTIFICATE_OF_FORMATION' | 'CERTIFICATE_OF_INCUMBENCY' | 'OPERATING_AGREEMENT' | 'PARTNERSHIP_AGREEMENT' | 'OWNERSHIP_STRUCTURE' | 'SHAREHOLDER_AGREEMENT' | 'STOCK_CERTIFICATE' | 'TAX_RETURN' | 'FINANCIAL_STATEMENT' | 'MARKETING_MATERIALS' | 'DOMAIN_OWNERSHIP_PROOF' | 'BUSINESS_PLAN' | 'BILL_OF_LADING' | 'AML_POLICY' | 'AML_COMFORT_LETTER' | 'FUNDS_FLOW_DIAGRAM' | 'GOOD_STANDING_CERTIFICATE' | 'TIN_VERIFICATION' | 'MSB_LICENSE' | 'DIRECTORS_REGISTRY' | 'OWNERSHIP_CHART' | 'PROOF_OF_SIGNATORY_AUTHORITY' | 'PROOF_OF_SOURCE_OF_FUNDS' | 'PROOF_OF_ENTITY_NAME_CHANGE' | 'REMOTE_ADDRESS_ATTESTATION' | 'E_SIGNATURE_CERTIFICATE' | 'COMPLIANCE_NOTES' | 'PROOF_OF_SOURCE_OF_WEALTH' | 'TAX_EXEMPT_ENTITY_CONFIRMATION' | 'OTHER' — General document category. Optional for context-specific uploads where the field already implies the document type.
      - `subtype` 'GOVERNMENT_ID_FRONT' | 'GOVERNMENT_ID_BACK' | 'SELFIE' | 'UTILITY_BILL' | 'LEASE_AGREEMENT' — Specific document type. Optional for generic uploads when the subtype is not material to processing.
      - `description` string — Description of the document
      - `remarks` string — Free-form remarks or notes about the document
      - `file` string, required — Document ID reference (`doc_xxx`) created via the document upload flow. Upload the file with `POST /documents`, confirm it, then pass the resulting document ID here.
    - `attestedOwnershipStructureAt` string — Timestamp when ownership structure was attested
    - `relationshipDate` string — Date when the relationship with this entity was established (YYYY-MM-DD). For individuals, this is when they became an owner/director. For businesses, this is when the ownership structure was established.
    - `generateVerificationLink` boolean — When true, generates a verification link for this UBO to complete their KYC. The link will be returned in the response. Requires entityType to be INDIVIDUAL, firstName, lastName, and email to be provided.
    - `sendInvite` boolean — When true (and generateVerificationLink is also true), sends an email invitation to the UBO to complete their KYC verification. The email includes the verification link and expiration details.
  - `supportingDocuments` DocumentUploadDto[] — Supporting documents (business formation, ownership info, license/regulatory registration if applicable). Required for full KYB verification.
    - `requirementId` string — Stable identifier for the custom document requirement this upload satisfies
    - `type` 'IDENTITY' | 'PROOF_OF_ADDRESS' | 'INVOICE' | 'CONTRACT' | 'BANK_STATEMENT' | 'BUSINESS_LICENSE' | 'ARTICLES_OF_INCORPORATION' | 'ARTICLES_OF_ASSOCIATION' | 'CERTIFICATE_OF_FORMATION' | 'CERTIFICATE_OF_INCUMBENCY' | 'OPERATING_AGREEMENT' | 'PARTNERSHIP_AGREEMENT' | 'OWNERSHIP_STRUCTURE' | 'SHAREHOLDER_AGREEMENT' | 'STOCK_CERTIFICATE' | 'TAX_RETURN' | 'FINANCIAL_STATEMENT' | 'MARKETING_MATERIALS' | 'DOMAIN_OWNERSHIP_PROOF' | 'BUSINESS_PLAN' | 'BILL_OF_LADING' | 'AML_POLICY' | 'AML_COMFORT_LETTER' | 'FUNDS_FLOW_DIAGRAM' | 'GOOD_STANDING_CERTIFICATE' | 'TIN_VERIFICATION' | 'MSB_LICENSE' | 'DIRECTORS_REGISTRY' | 'OWNERSHIP_CHART' | 'PROOF_OF_SIGNATORY_AUTHORITY' | 'PROOF_OF_SOURCE_OF_FUNDS' | 'PROOF_OF_ENTITY_NAME_CHANGE' | 'REMOTE_ADDRESS_ATTESTATION' | 'E_SIGNATURE_CERTIFICATE' | 'COMPLIANCE_NOTES' | 'PROOF_OF_SOURCE_OF_WEALTH' | 'TAX_EXEMPT_ENTITY_CONFIRMATION' | 'OTHER' — General document category. Optional for context-specific uploads where the field already implies the document type.
    - `subtype` 'GOVERNMENT_ID_FRONT' | 'GOVERNMENT_ID_BACK' | 'SELFIE' | 'UTILITY_BILL' | 'LEASE_AGREEMENT' — Specific document type. Optional for generic uploads when the subtype is not material to processing.
    - `description` string — Description of the document
    - `remarks` string — Free-form remarks or notes about the document
    - `file` string, required — Document ID reference (`doc_xxx`) created via the document upload flow. Upload the file with `POST /documents`, confirm it, then pass the resulting document ID here.
  - `businessFormationDocuments` DocumentUploadDto[] — Business formation documents such as articles of incorporation or an operating agreement.
    - `requirementId` string — Stable identifier for the custom document requirement this upload satisfies
    - `type` 'IDENTITY' | 'PROOF_OF_ADDRESS' | 'INVOICE' | 'CONTRACT' | 'BANK_STATEMENT' | 'BUSINESS_LICENSE' | 'ARTICLES_OF_INCORPORATION' | 'ARTICLES_OF_ASSOCIATION' | 'CERTIFICATE_OF_FORMATION' | 'CERTIFICATE_OF_INCUMBENCY' | 'OPERATING_AGREEMENT' | 'PARTNERSHIP_AGREEMENT' | 'OWNERSHIP_STRUCTURE' | 'SHAREHOLDER_AGREEMENT' | 'STOCK_CERTIFICATE' | 'TAX_RETURN' | 'FINANCIAL_STATEMENT' | 'MARKETING_MATERIALS' | 'DOMAIN_OWNERSHIP_PROOF' | 'BUSINESS_PLAN' | 'BILL_OF_LADING' | 'AML_POLICY' | 'AML_COMFORT_LETTER' | 'FUNDS_FLOW_DIAGRAM' | 'GOOD_STANDING_CERTIFICATE' | 'TIN_VERIFICATION' | 'MSB_LICENSE' | 'DIRECTORS_REGISTRY' | 'OWNERSHIP_CHART' | 'PROOF_OF_SIGNATORY_AUTHORITY' | 'PROOF_OF_SOURCE_OF_FUNDS' | 'PROOF_OF_ENTITY_NAME_CHANGE' | 'REMOTE_ADDRESS_ATTESTATION' | 'E_SIGNATURE_CERTIFICATE' | 'COMPLIANCE_NOTES' | 'PROOF_OF_SOURCE_OF_WEALTH' | 'TAX_EXEMPT_ENTITY_CONFIRMATION' | 'OTHER' — General document category. Optional for context-specific uploads where the field already implies the document type.
    - `subtype` 'GOVERNMENT_ID_FRONT' | 'GOVERNMENT_ID_BACK' | 'SELFIE' | 'UTILITY_BILL' | 'LEASE_AGREEMENT' — Specific document type. Optional for generic uploads when the subtype is not material to processing.
    - `description` string — Description of the document
    - `remarks` string — Free-form remarks or notes about the document
    - `file` string, required — Document ID reference (`doc_xxx`) created via the document upload flow. Upload the file with `POST /documents`, confirm it, then pass the resulting document ID here.
  - `ownershipInformationDocuments` DocumentUploadDto[] — Ownership information documents such as a cap table, shareholder registry, or trust deed.
    - `requirementId` string — Stable identifier for the custom document requirement this upload satisfies
    - `type` 'IDENTITY' | 'PROOF_OF_ADDRESS' | 'INVOICE' | 'CONTRACT' | 'BANK_STATEMENT' | 'BUSINESS_LICENSE' | 'ARTICLES_OF_INCORPORATION' | 'ARTICLES_OF_ASSOCIATION' | 'CERTIFICATE_OF_FORMATION' | 'CERTIFICATE_OF_INCUMBENCY' | 'OPERATING_AGREEMENT' | 'PARTNERSHIP_AGREEMENT' | 'OWNERSHIP_STRUCTURE' | 'SHAREHOLDER_AGREEMENT' | 'STOCK_CERTIFICATE' | 'TAX_RETURN' | 'FINANCIAL_STATEMENT' | 'MARKETING_MATERIALS' | 'DOMAIN_OWNERSHIP_PROOF' | 'BUSINESS_PLAN' | 'BILL_OF_LADING' | 'AML_POLICY' | 'AML_COMFORT_LETTER' | 'FUNDS_FLOW_DIAGRAM' | 'GOOD_STANDING_CERTIFICATE' | 'TIN_VERIFICATION' | 'MSB_LICENSE' | 'DIRECTORS_REGISTRY' | 'OWNERSHIP_CHART' | 'PROOF_OF_SIGNATORY_AUTHORITY' | 'PROOF_OF_SOURCE_OF_FUNDS' | 'PROOF_OF_ENTITY_NAME_CHANGE' | 'REMOTE_ADDRESS_ATTESTATION' | 'E_SIGNATURE_CERTIFICATE' | 'COMPLIANCE_NOTES' | 'PROOF_OF_SOURCE_OF_WEALTH' | 'TAX_EXEMPT_ENTITY_CONFIRMATION' | 'OTHER' — General document category. Optional for context-specific uploads where the field already implies the document type.
    - `subtype` 'GOVERNMENT_ID_FRONT' | 'GOVERNMENT_ID_BACK' | 'SELFIE' | 'UTILITY_BILL' | 'LEASE_AGREEMENT' — Specific document type. Optional for generic uploads when the subtype is not material to processing.
    - `description` string — Description of the document
    - `remarks` string — Free-form remarks or notes about the document
    - `file` string, required — Document ID reference (`doc_xxx`) created via the document upload flow. Upload the file with `POST /documents`, confirm it, then pass the resulting document ID here.
  - `businessAddressProof` DocumentUploadDto[] — Business address proof documents for business EDD.
    - `requirementId` string — Stable identifier for the custom document requirement this upload satisfies
    - `type` 'IDENTITY' | 'PROOF_OF_ADDRESS' | 'INVOICE' | 'CONTRACT' | 'BANK_STATEMENT' | 'BUSINESS_LICENSE' | 'ARTICLES_OF_INCORPORATION' | 'ARTICLES_OF_ASSOCIATION' | 'CERTIFICATE_OF_FORMATION' | 'CERTIFICATE_OF_INCUMBENCY' | 'OPERATING_AGREEMENT' | 'PARTNERSHIP_AGREEMENT' | 'OWNERSHIP_STRUCTURE' | 'SHAREHOLDER_AGREEMENT' | 'STOCK_CERTIFICATE' | 'TAX_RETURN' | 'FINANCIAL_STATEMENT' | 'MARKETING_MATERIALS' | 'DOMAIN_OWNERSHIP_PROOF' | 'BUSINESS_PLAN' | 'BILL_OF_LADING' | 'AML_POLICY' | 'AML_COMFORT_LETTER' | 'FUNDS_FLOW_DIAGRAM' | 'GOOD_STANDING_CERTIFICATE' | 'TIN_VERIFICATION' | 'MSB_LICENSE' | 'DIRECTORS_REGISTRY' | 'OWNERSHIP_CHART' | 'PROOF_OF_SIGNATORY_AUTHORITY' | 'PROOF_OF_SOURCE_OF_FUNDS' | 'PROOF_OF_ENTITY_NAME_CHANGE' | 'REMOTE_ADDRESS_ATTESTATION' | 'E_SIGNATURE_CERTIFICATE' | 'COMPLIANCE_NOTES' | 'PROOF_OF_SOURCE_OF_WEALTH' | 'TAX_EXEMPT_ENTITY_CONFIRMATION' | 'OTHER' — General document category. Optional for context-specific uploads where the field already implies the document type.
    - `subtype` 'GOVERNMENT_ID_FRONT' | 'GOVERNMENT_ID_BACK' | 'SELFIE' | 'UTILITY_BILL' | 'LEASE_AGREEMENT' — Specific document type. Optional for generic uploads when the subtype is not material to processing.
    - `description` string — Description of the document
    - `remarks` string — Free-form remarks or notes about the document
    - `file` string, required — Document ID reference (`doc_xxx`) created via the document upload flow. Upload the file with `POST /documents`, confirm it, then pass the resulting document ID here.
  - `amlPolicy` DocumentUploadDto[] — AML / BSA policy documents for money services businesses.
    - `requirementId` string — Stable identifier for the custom document requirement this upload satisfies
    - `type` 'IDENTITY' | 'PROOF_OF_ADDRESS' | 'INVOICE' | 'CONTRACT' | 'BANK_STATEMENT' | 'BUSINESS_LICENSE' | 'ARTICLES_OF_INCORPORATION' | 'ARTICLES_OF_ASSOCIATION' | 'CERTIFICATE_OF_FORMATION' | 'CERTIFICATE_OF_INCUMBENCY' | 'OPERATING_AGREEMENT' | 'PARTNERSHIP_AGREEMENT' | 'OWNERSHIP_STRUCTURE' | 'SHAREHOLDER_AGREEMENT' | 'STOCK_CERTIFICATE' | 'TAX_RETURN' | 'FINANCIAL_STATEMENT' | 'MARKETING_MATERIALS' | 'DOMAIN_OWNERSHIP_PROOF' | 'BUSINESS_PLAN' | 'BILL_OF_LADING' | 'AML_POLICY' | 'AML_COMFORT_LETTER' | 'FUNDS_FLOW_DIAGRAM' | 'GOOD_STANDING_CERTIFICATE' | 'TIN_VERIFICATION' | 'MSB_LICENSE' | 'DIRECTORS_REGISTRY' | 'OWNERSHIP_CHART' | 'PROOF_OF_SIGNATORY_AUTHORITY' | 'PROOF_OF_SOURCE_OF_FUNDS' | 'PROOF_OF_ENTITY_NAME_CHANGE' | 'REMOTE_ADDRESS_ATTESTATION' | 'E_SIGNATURE_CERTIFICATE' | 'COMPLIANCE_NOTES' | 'PROOF_OF_SOURCE_OF_WEALTH' | 'TAX_EXEMPT_ENTITY_CONFIRMATION' | 'OTHER' — General document category. Optional for context-specific uploads where the field already implies the document type.
    - `subtype` 'GOVERNMENT_ID_FRONT' | 'GOVERNMENT_ID_BACK' | 'SELFIE' | 'UTILITY_BILL' | 'LEASE_AGREEMENT' — Specific document type. Optional for generic uploads when the subtype is not material to processing.
    - `description` string — Description of the document
    - `remarks` string — Free-form remarks or notes about the document
    - `file` string, required — Document ID reference (`doc_xxx`) created via the document upload flow. Upload the file with `POST /documents`, confirm it, then pass the resulting document ID here.
  - `directorsRegistry` DocumentUploadDto[] — Directors registry documents for business EDD.
    - `requirementId` string — Stable identifier for the custom document requirement this upload satisfies
    - `type` 'IDENTITY' | 'PROOF_OF_ADDRESS' | 'INVOICE' | 'CONTRACT' | 'BANK_STATEMENT' | 'BUSINESS_LICENSE' | 'ARTICLES_OF_INCORPORATION' | 'ARTICLES_OF_ASSOCIATION' | 'CERTIFICATE_OF_FORMATION' | 'CERTIFICATE_OF_INCUMBENCY' | 'OPERATING_AGREEMENT' | 'PARTNERSHIP_AGREEMENT' | 'OWNERSHIP_STRUCTURE' | 'SHAREHOLDER_AGREEMENT' | 'STOCK_CERTIFICATE' | 'TAX_RETURN' | 'FINANCIAL_STATEMENT' | 'MARKETING_MATERIALS' | 'DOMAIN_OWNERSHIP_PROOF' | 'BUSINESS_PLAN' | 'BILL_OF_LADING' | 'AML_POLICY' | 'AML_COMFORT_LETTER' | 'FUNDS_FLOW_DIAGRAM' | 'GOOD_STANDING_CERTIFICATE' | 'TIN_VERIFICATION' | 'MSB_LICENSE' | 'DIRECTORS_REGISTRY' | 'OWNERSHIP_CHART' | 'PROOF_OF_SIGNATORY_AUTHORITY' | 'PROOF_OF_SOURCE_OF_FUNDS' | 'PROOF_OF_ENTITY_NAME_CHANGE' | 'REMOTE_ADDRESS_ATTESTATION' | 'E_SIGNATURE_CERTIFICATE' | 'COMPLIANCE_NOTES' | 'PROOF_OF_SOURCE_OF_WEALTH' | 'TAX_EXEMPT_ENTITY_CONFIRMATION' | 'OTHER' — General document category. Optional for context-specific uploads where the field already implies the document type.
    - `subtype` 'GOVERNMENT_ID_FRONT' | 'GOVERNMENT_ID_BACK' | 'SELFIE' | 'UTILITY_BILL' | 'LEASE_AGREEMENT' — Specific document type. Optional for generic uploads when the subtype is not material to processing.
    - `description` string — Description of the document
    - `remarks` string — Free-form remarks or notes about the document
    - `file` string, required — Document ID reference (`doc_xxx`) created via the document upload flow. Upload the file with `POST /documents`, confirm it, then pass the resulting document ID here.
  - `proofOfSignatoryAuthority` DocumentUploadDto[] — Proof of signatory authority documents such as a board resolution or certificate of incumbency.
    - `requirementId` string — Stable identifier for the custom document requirement this upload satisfies
    - `type` 'IDENTITY' | 'PROOF_OF_ADDRESS' | 'INVOICE' | 'CONTRACT' | 'BANK_STATEMENT' | 'BUSINESS_LICENSE' | 'ARTICLES_OF_INCORPORATION' | 'ARTICLES_OF_ASSOCIATION' | 'CERTIFICATE_OF_FORMATION' | 'CERTIFICATE_OF_INCUMBENCY' | 'OPERATING_AGREEMENT' | 'PARTNERSHIP_AGREEMENT' | 'OWNERSHIP_STRUCTURE' | 'SHAREHOLDER_AGREEMENT' | 'STOCK_CERTIFICATE' | 'TAX_RETURN' | 'FINANCIAL_STATEMENT' | 'MARKETING_MATERIALS' | 'DOMAIN_OWNERSHIP_PROOF' | 'BUSINESS_PLAN' | 'BILL_OF_LADING' | 'AML_POLICY' | 'AML_COMFORT_LETTER' | 'FUNDS_FLOW_DIAGRAM' | 'GOOD_STANDING_CERTIFICATE' | 'TIN_VERIFICATION' | 'MSB_LICENSE' | 'DIRECTORS_REGISTRY' | 'OWNERSHIP_CHART' | 'PROOF_OF_SIGNATORY_AUTHORITY' | 'PROOF_OF_SOURCE_OF_FUNDS' | 'PROOF_OF_ENTITY_NAME_CHANGE' | 'REMOTE_ADDRESS_ATTESTATION' | 'E_SIGNATURE_CERTIFICATE' | 'COMPLIANCE_NOTES' | 'PROOF_OF_SOURCE_OF_WEALTH' | 'TAX_EXEMPT_ENTITY_CONFIRMATION' | 'OTHER' — General document category. Optional for context-specific uploads where the field already implies the document type.
    - `subtype` 'GOVERNMENT_ID_FRONT' | 'GOVERNMENT_ID_BACK' | 'SELFIE' | 'UTILITY_BILL' | 'LEASE_AGREEMENT' — Specific document type. Optional for generic uploads when the subtype is not material to processing.
    - `description` string — Description of the document
    - `remarks` string — Free-form remarks or notes about the document
    - `file` string, required — Document ID reference (`doc_xxx`) created via the document upload flow. Upload the file with `POST /documents`, confirm it, then pass the resulting document ID here.
  - `msbLicense` DocumentUploadDto[] — MSB license documents when applicable.
    - `requirementId` string — Stable identifier for the custom document requirement this upload satisfies
    - `type` 'IDENTITY' | 'PROOF_OF_ADDRESS' | 'INVOICE' | 'CONTRACT' | 'BANK_STATEMENT' | 'BUSINESS_LICENSE' | 'ARTICLES_OF_INCORPORATION' | 'ARTICLES_OF_ASSOCIATION' | 'CERTIFICATE_OF_FORMATION' | 'CERTIFICATE_OF_INCUMBENCY' | 'OPERATING_AGREEMENT' | 'PARTNERSHIP_AGREEMENT' | 'OWNERSHIP_STRUCTURE' | 'SHAREHOLDER_AGREEMENT' | 'STOCK_CERTIFICATE' | 'TAX_RETURN' | 'FINANCIAL_STATEMENT' | 'MARKETING_MATERIALS' | 'DOMAIN_OWNERSHIP_PROOF' | 'BUSINESS_PLAN' | 'BILL_OF_LADING' | 'AML_POLICY' | 'AML_COMFORT_LETTER' | 'FUNDS_FLOW_DIAGRAM' | 'GOOD_STANDING_CERTIFICATE' | 'TIN_VERIFICATION' | 'MSB_LICENSE' | 'DIRECTORS_REGISTRY' | 'OWNERSHIP_CHART' | 'PROOF_OF_SIGNATORY_AUTHORITY' | 'PROOF_OF_SOURCE_OF_FUNDS' | 'PROOF_OF_ENTITY_NAME_CHANGE' | 'REMOTE_ADDRESS_ATTESTATION' | 'E_SIGNATURE_CERTIFICATE' | 'COMPLIANCE_NOTES' | 'PROOF_OF_SOURCE_OF_WEALTH' | 'TAX_EXEMPT_ENTITY_CONFIRMATION' | 'OTHER' — General document category. Optional for context-specific uploads where the field already implies the document type.
    - `subtype` 'GOVERNMENT_ID_FRONT' | 'GOVERNMENT_ID_BACK' | 'SELFIE' | 'UTILITY_BILL' | 'LEASE_AGREEMENT' — Specific document type. Optional for generic uploads when the subtype is not material to processing.
    - `description` string — Description of the document
    - `remarks` string — Free-form remarks or notes about the document
    - `file` string, required — Document ID reference (`doc_xxx`) created via the document upload flow. Upload the file with `POST /documents`, confirm it, then pass the resulting document ID here.
  - `bankStatements` DocumentUploadDto[] — Bank statements covering the last 3 months. Required for business EDD.
    - `requirementId` string — Stable identifier for the custom document requirement this upload satisfies
    - `type` 'IDENTITY' | 'PROOF_OF_ADDRESS' | 'INVOICE' | 'CONTRACT' | 'BANK_STATEMENT' | 'BUSINESS_LICENSE' | 'ARTICLES_OF_INCORPORATION' | 'ARTICLES_OF_ASSOCIATION' | 'CERTIFICATE_OF_FORMATION' | 'CERTIFICATE_OF_INCUMBENCY' | 'OPERATING_AGREEMENT' | 'PARTNERSHIP_AGREEMENT' | 'OWNERSHIP_STRUCTURE' | 'SHAREHOLDER_AGREEMENT' | 'STOCK_CERTIFICATE' | 'TAX_RETURN' | 'FINANCIAL_STATEMENT' | 'MARKETING_MATERIALS' | 'DOMAIN_OWNERSHIP_PROOF' | 'BUSINESS_PLAN' | 'BILL_OF_LADING' | 'AML_POLICY' | 'AML_COMFORT_LETTER' | 'FUNDS_FLOW_DIAGRAM' | 'GOOD_STANDING_CERTIFICATE' | 'TIN_VERIFICATION' | 'MSB_LICENSE' | 'DIRECTORS_REGISTRY' | 'OWNERSHIP_CHART' | 'PROOF_OF_SIGNATORY_AUTHORITY' | 'PROOF_OF_SOURCE_OF_FUNDS' | 'PROOF_OF_ENTITY_NAME_CHANGE' | 'REMOTE_ADDRESS_ATTESTATION' | 'E_SIGNATURE_CERTIFICATE' | 'COMPLIANCE_NOTES' | 'PROOF_OF_SOURCE_OF_WEALTH' | 'TAX_EXEMPT_ENTITY_CONFIRMATION' | 'OTHER' — General document category. Optional for context-specific uploads where the field already implies the document type.
    - `subtype` 'GOVERNMENT_ID_FRONT' | 'GOVERNMENT_ID_BACK' | 'SELFIE' | 'UTILITY_BILL' | 'LEASE_AGREEMENT' — Specific document type. Optional for generic uploads when the subtype is not material to processing.
    - `description` string — Description of the document
    - `remarks` string — Free-form remarks or notes about the document
    - `file` string, required — Document ID reference (`doc_xxx`) created via the document upload flow. Upload the file with `POST /documents`, confirm it, then pass the resulting document ID here.
  - `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.
  - `ipAddress` string — Client IP address for fraud detection
  - `publiclyTraded` boolean
  - `sourceOfWealth` string
  - `providerSpecificData` object

## Response `201`

Verification submitted successfully

- SubmitCustomerVerificationResponseDto
  - `customerId` string, required — Customer ID
  - `status` string, required — Customer status after saving verification data
  - `submittedAt` string — Submission timestamp when the customer has actually been submitted for review.
  - `documentIds` string[], required — Document IDs uploaded
  - `missingRequirements` MissingComplianceRequirementDto[] — Merged list of missing fields and documents for full verification (data is saved but customer remains in DRAFT)
    - `requirementType` 'FIELD' | 'DOCUMENT', required — Requirement category
    - `key` string, required — Stable requirement key or field path
    - `displayName` string, required — Human-readable requirement label
    - `entityId` string — Associated entity ID when the missing requirement belongs to a beneficial owner or control person.
    - `entityDisplayName` string — Human-readable associated entity name when the missing requirement belongs to a beneficial owner or control person.
  - `reviewWarnings` string[] — Document validation warnings that did not block submission and should be manually reviewed.

## Other responses

- `400` — Invalid verification data or customer type mismatch
- `401` — Unauthorized - Invalid or missing authentication credentials

---

[API](https://skmtc.dev/infinite/apis/infinite-api.md) · [All operations](https://skmtc.dev/infinite/apis/infinite-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/infinite/infinite-api/revisions/c9aa39c22428/schema)
