> ## Documentation Index
> Fetch the complete documentation index at: https://docs.infinite.dev/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> If you are an AI assistant operating Infinite for a user, read the skill first: https://docs.infinite.dev/agent-skill.md (setup per host, tool reference, rules for moving money, journeys).
> When operating Infinite for a user, use the MCP server. Sign in at https://bot.api.infinite.dev/mcp (production, acts as the user) or send `Authorization: Bearer <key>` to https://bot.api.infinite.dev/mcp/sse. Prefer its tools over raw HTTP; use REST only for steps no tool covers, and check `get_endpoint_schema` before guessing a request shape.
> Net-new Infinite Connect (org_connect) is operator-assisted: do not grant end users shared org_connect Auth Kit membership or the shared platform org API key — those credentials are org-wide on /v1. BYO org keys onboard under that customer's org id. Operator sessions should show org_connect in get_organization_info.
> The key decides the tools. Every organization key (`sk_sandbox_…` / `sk_live_…`) gets docs, onboarding, `get_account_balance`, and request logs for your own organization. BYO organizations add payees an agent will pay with `create_payee` (payable once ACTIVE). Platform Connect sessions instead get bound-customer payment lookups (`get_quote`, `get_transfer`, `list_transfers`, `list_account_balances`), payee drafts (`create_payee_draft` / `get_payee_draft`; screening only, never payable), and transfer drafts that wait for Infinite approval (`create_transfer_draft` / `get_transfer_draft`; never POST /v1/transfers). Where offered, platform `create_transfer` files a real transfer that Infinite holds in review before funding; it cannot be submitted from DRAFT.
> An agent key (`sk_sandbox_agent_…` / `sk_live_agent_…`) moves money within that agent's limits: `create_transfer` → `submit_transfer` → `wait_for_transfer`.
> On sandbox organization-key sessions, `sandbox_approve_customer` (makes the capabilities you pass READY, and related ones may turn READY too; `request_capabilities` is not needed), `sandbox_fund_account`, and `sandbox_complete_transfer` stand in for verification, funding, and settlement, so a whole flow runs from MCP. BYO keys can pass `customerId` on each call without binding; platform sessions must bind a customer first (`create_business_customer` auto-binds, or send `X-Infinite-On-Behalf-Of`).
> When searching documentation without a key, use the docs MCP at https://docs.infinite.dev/mcp.
> Start in sandbox (https://sandbox.api.infinite.dev). Do not use production unless the user explicitly asks.
> Confirm amount, currency, and payee with the user before any payment is submitted. Pass the invoice number as `reference` on `create_transfer`; the summary says what the payee will see.
> REST amounts are integer minor units (`"4000"` = 40.00 USD). MCP payment tools take exact decimal strings (`"40.00"`). Never mix them.
> Agent denials return `403 { denial: { code, message, window, limit, used, remaining, attemptedAmount, currency }, hint }` with decimal amounts; per-transfer denials omit `used` and `remaining`. Report them to the user; do not work around them.

# Submit customer for verification

> Submit a DRAFT customer for verification review.

This endpoint is used when you've progressively built up customer data via PATCH requests
and are ready to submit for verification. The customer must be in DRAFT status.

**Workflow:**
1. Create customer → customer is in DRAFT status
2. Add data via PATCH /customers/:id as needed
3. Call POST /customers/:id/submit to submit for verification

After submission, the customer status transitions to IN_REVIEW. Document AI validation runs
asynchronously; validation results are stored on each document's metadata and returned on internal document responses.

For RFI (Request for Information) flows:
1. Customer gets NEED_ACTIONS status with missingRequirements
2. Add missing data via PATCH /customers/:id
3. Call POST /customers/:id/submit to re-submit



## OpenAPI

````yaml post /v1/customers/{id}/submit
openapi: 3.0.0
info:
  title: Infinite API
  description: API for Infinite
  version: '1.0'
  contact: {}
servers:
  - url: https://sandbox.api.infinite.dev
    description: Sandbox
  - url: https://api.infinite.dev
    description: Production
security: []
tags:
  - name: Accounts
    description: Virtual and external account management
  - name: Customers
    description: Customer identity management
  - name: Documents
    description: Document upload and management
  - name: Fixed Routes
    description: Fixed route management
  - name: External Bank Accounts
    description: External bank account management
  - name: External Wallets
    description: External wallet management
  - name: Infinite Wallets
    description: Infinite Wallet management
  - name: Organizations
    description: Organization management
  - name: Quotes
    description: Quote creation and management
  - name: Transfers
    description: Money movement and transaction tracking
  - name: Verification
    description: Identity verification workflows
  - name: Terms of Service
    description: Terms of Service acceptance
  - name: Health
    description: System health and monitoring
  - name: Sandbox
    description: Sandbox utilities
paths:
  /v1/customers/{id}/submit:
    post:
      tags:
        - Customers
      summary: Submit customer for verification
      description: >-
        Submit a DRAFT customer for verification review.


        This endpoint is used when you've progressively built up customer data
        via PATCH requests

        and are ready to submit for verification. The customer must be in DRAFT
        status.


        **Workflow:**

        1. Create customer → customer is in DRAFT status

        2. Add data via PATCH /customers/:id as needed

        3. Call POST /customers/:id/submit to submit for verification


        After submission, the customer status transitions to IN_REVIEW. Document
        AI validation runs

        asynchronously; validation results are stored on each document's
        metadata and returned on internal document responses.


        For RFI (Request for Information) flows:

        1. Customer gets NEED_ACTIONS status with missingRequirements

        2. Add missing data via PATCH /customers/:id

        3. Call POST /customers/:id/submit to re-submit
      operationId: CustomersController_submitCustomer_v1
      parameters:
        - name: X-API-Key
          in: header
          description: API key
          required: false
          schema:
            type: string
        - name: id
          required: true
          in: path
          description: Customer ID
          schema:
            type: string
            example: cus_abc123
      responses:
        '202':
          description: >-
            Customer accepted for verification; document AI validation may still
            be running
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerResponseDto'
        '400':
          description: Customer is not in a submittable state or missing required fields
        '401':
          description: Unauthorized - Invalid or missing authentication credentials
      security:
        - bearer: []
      x-codeSamples:
        - lang: bash
          label: CLI
          source: >-
            # Requires: npm i -g @infinite_dev/cli && export
            INFINITE_API_KEY=sk_sandbox_...

            # Escape hatch for any endpoint: infinite api <METHOD> <path>

            infinite api POST /v1/customers/cus_abc123/submit
        - lang: text
          label: MCP
          source: >-
            Submit customer for verification (cus_abc123).


            # Infinite MCP is read-only for this endpoint — use a dedicated MCP
            tool when one exists, otherwise run the CLI tab.
components:
  schemas:
    CustomerResponseDto:
      type: object
      properties:
        id:
          type: string
          description: Customer ID
        customerName:
          type: string
          description: Customer name
        organizationId:
          type: string
          description: Organization ID
        type:
          type: string
          enum:
            - INDIVIDUAL
            - BUSINESS
          description: Customer type
        status:
          type: string
          enum:
            - DRAFT
            - IN_REVIEW
            - NEED_ACTIONS
            - REJECTED
            - ACTIVE
            - INACTIVE
            - SUSPENDED
          description: Customer status
        email:
          type: string
          description: Customer email address
        countryCode:
          type: string
          description: Country code (ISO 3166-2)
          enum:
            - 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
        imageUrl:
          type: string
          description: Customer image URL
        requestedCapabilities:
          type: array
          description: Capabilities requested by the customer
          nullable: true
          items:
            type: string
            enum:
              - 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
        capabilities:
          description: >-
            Computed capability statuses. Included on list responses. READY only
            when the customer is ACTIVE.
          type: array
          items:
            $ref: '#/components/schemas/CustomerCapabilityStateDto'
        createdAt:
          type: string
          description: Customer creation date
          format: date-time
          example: '2026-01-15T10:00:00Z'
        updatedAt:
          type: string
          description: Customer last update date
          format: date-time
          example: '2026-01-15T10:00:00Z'
        customerDetails:
          description: >-
            Customer details with transliteration support.


            For INDIVIDUAL customers:

            - firstName, lastName, middleName

            - transliteratedFirstName, transliteratedMiddleName,
            transliteratedLastName

            - dateOfBirth, phone, occupation, sourceOfIncome


            For BUSINESS customers:

            - businessName, tradeName, businessType, taxIdentificationNumber

            - website, industry, email, phone


            Verification and EDD-specific fields are submitted separately
            through the verification endpoints.
          oneOf:
            - $ref: '#/components/schemas/IndividualDetailsDto'
            - $ref: '#/components/schemas/BusinessDetailsDto'
        associatedEntities:
          description: >-
            Associated entities (beneficial owners and control persons) for
            business customers.
          type: array
          items:
            $ref: '#/components/schemas/AssociatedEntityResponseDto'
        addresses:
          description: >-
            Customer addresses.


            Each address must include addressLine1, city, postalCode, and
            country.
          type: array
          items:
            $ref: '#/components/schemas/CustomerAddressDto'
        missingRequirements:
          description: >-
            Merged list of missing fields and documents required for full
            verification. Only populated when customer data is incomplete.
          example:
            - requirementType: FIELD
              key: businessData.taxIdentificationNumber
              displayName: Tax Identification Number
            - requirementType: DOCUMENT
              key: ownership.ownership_structure
              displayName: Ownership Information
          type: array
          items:
            $ref: '#/components/schemas/MissingComplianceRequirementDto'
        accounts:
          description: >-
            Customer accounts (only included when expand=accounts). Returns all
            accounts for this customer.
          type: array
          items:
            type: array
        documents:
          description: >-
            Customer documents (only included when expand=documents). Returns
            all documents for this customer.
          type: array
          items:
            $ref: '#/components/schemas/DocumentResponseDto'
        treasury:
          description: >-
            Treasury balances (only included when expand=treasury). Returns
            treasury wallet balances grouped by treasury.
          allOf:
            - $ref: '#/components/schemas/CustomerTreasuryResponseDto'
        verificationSessions:
          description: >-
            Verification sessions (only included when
            expand=verificationSessions). Returns verification session
            summaries.
          type: array
          items:
            $ref: '#/components/schemas/CustomerVerificationSessionResponseDto'
      required:
        - id
        - customerName
        - organizationId
        - type
        - status
        - createdAt
        - updatedAt
    CustomerCapabilityStateDto:
      type: object
      properties:
        capability:
          type: string
          enum:
            - 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
          example: USD_WIRE_PAYIN
        status:
          type: string
          enum:
            - READY
            - IN_REVIEW
            - UNAVAILABLE
          example: READY
      required:
        - capability
        - status
    IndividualDetailsDto:
      type: object
      properties:
        firstName:
          type: string
          description: First name
          example: John
          maxLength: 1024
        lastName:
          type: string
          description: Last name
          example: Smith
          maxLength: 1024
        middleName:
          type: string
          description: Middle name
          example: Michael
          maxLength: 1024
        transliteratedFirstName:
          type: string
          description: >-
            Transliterated first name (Latin characters).


            Required when firstName contains non-Latin characters (Chinese,
            Arabic, Cyrillic, etc.).
          example: Li Ming
          maxLength: 256
        transliteratedMiddleName:
          type: string
          description: |-
            Transliterated middle name (Latin characters).

            Required when middleName contains non-Latin characters.
          example: Wen
          maxLength: 256
        transliteratedLastName:
          type: string
          description: |-
            Transliterated last name (Latin characters).

            Required when lastName contains non-Latin characters.
          example: Wang
          maxLength: 256
        dateOfBirth:
          type: string
          description: Date of birth in ISO 8601 format (YYYY-MM-DD)
          example: '1990-01-15'
        nationality:
          type: string
          description: Nationality (ISO 3166-2)
          example: US
        taxResidenceCountry:
          type: string
          description: >-
            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
        phone:
          type: string
          description: Phone number in E.164 format
          example: '+14155551234'
          maxLength: 16
        occupation:
          type: string
          description: Occupation code
          example: '151252'
        employmentStatus:
          type: string
          description: Employment status
          enum:
            - EMPLOYED
            - SELF_EMPLOYED
            - UNEMPLOYED
            - STUDENT
            - RETIRED
            - HOMEMAKER
        sourceOfIncome:
          type: string
          description: Source of income
          example: SALARY
          enum:
            - 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:
          type: string
          description: Source of funds description
    BusinessDetailsDto:
      type: object
      properties:
        businessName:
          type: string
          description: Legal business name
          example: Acme Corporation
          maxLength: 1024
        businessType:
          type: string
          description: Business legal structure
          example: LLC
          enum:
            - CORPORATION
            - LLC
            - PARTNERSHIP
            - GEN_PARTNERSHIP
            - LLP
            - LP
            - SOLE_PROPRIETORSHIP
            - NON_PROFIT
            - TRUST
            - COOPERATIVE
            - PRIVATE_LIMITED_COMPANY
            - SPV
            - JOINT_VENTURE
        taxIdentificationNumber:
          type: string
          description: >-
            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
          maxLength: 50
        website:
          type: string
          description: Business website URL
          example: https://acme.com
          maxLength: 512
        industry:
          type: string
          description: 6-digit NAICS industry classification code
          example: '522320'
          minLength: 6
          maxLength: 6
          pattern: ^\d{6}$
        isCrypto:
          type: boolean
          description: Set true if the business operates in crypto or digital assets.
          example: false
        isRemoteCompany:
          type: boolean
          description: >-
            Set true when the business operates remotely from an owner or
            director address.
          example: false
        industryCryptoSubtype:
          type: string
          description: Crypto-specific industry subtype. Required when isCrypto is true.
          enum:
            - PROTOCOL
            - EXCHANGE
            - INVESTMENT
            - LENDER
            - MARKET_MAKER
            - SAAS
            - MINER
        yearEstablished:
          type: number
          description: Year the business was established
          example: 2010
          minimum: 1800
        numberOfEmployees:
          type: number
          description: Number of employees
          example: 50
          minimum: 0
        tradeName:
          type: string
          description: Business trade name (DBA). Separate multiple names with semicolons.
          example: Acme Services; Acme Pay
          maxLength: 1024
        description:
          type: string
          description: Business description
          example: Cloud software services provider
          maxLength: 2048
        email:
          type: string
          description: >-
            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
          maxLength: 255
        phone:
          type: string
          description: Business phone number in E.164 format
          example: '+14155551234'
          maxLength: 16
        registrationDate:
          type: string
          description: Business registration date in ISO 8601 format (YYYY-MM-DD)
          example: '2020-01-15'
        registrationNumber:
          type: string
          description: >-
            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'
          maxLength: 50
        hasMaterialIntermediaryOwnership:
          type: boolean
          description: >-
            Whether the business has material intermediary ownership (25%+ owned
            by another entity)
          example: false
        accountPurpose:
          type: string
          description: Purpose of the account
          example: OPERATIONS
          enum:
            - PAYROLL
            - VENDOR_PAYMENTS
            - TREASURY
            - OPERATIONS
            - CAPITAL_DEPLOYMENT
            - CROSS_BORDER_PAYMENTS
            - STABLECOIN_CONVERSION
            - ECOMMERCE
            - OTHER
        accountPurposeExplanation:
          type: string
          description: Detailed explanation of account purpose
          example: Operating expenses and customer settlements
          maxLength: 2048
        sourceOfFunds:
          type: string
          description: Source of funds for the business
          example: BUSINESS_REVENUE
          enum:
            - BUSINESS_REVENUE
            - INVESTMENT
            - OWNER_CAPITAL
            - LOAN
            - GRANTS
            - EQUITY
            - INHERITANCE
            - GIFT
            - OTHER
        sourceOfFundsDescription:
          type: string
          description: Detailed description of source of funds
          example: Revenue from software services
          maxLength: 2048
        estimatedAnnualRevenueUsd:
          type: string
          description: Estimated annual revenue in USD
          enum:
            - 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:
          type: number
          description: Expected monthly fiat payment volume in USD-equivalent
          example: 50000
          minimum: 0
        primaryTargetMarket:
          type: string
          description: >-
            Primary target market. RETAIL = B2C (consumers), COMMERCIAL = B2B
            (businesses), GOVERNMENT = B2G (government entities), OTHER =
            another market not covered by the standard options.
          enum:
            - RETAIL
            - COMMERCIAL
            - GOVERNMENT
            - OTHER
          example: COMMERCIAL
        primaryTargetMarketExplanation:
          type: string
          description: >-
            Primary target market explanation (required if primaryTargetMarket
            is OTHER)
          example: Marketplace serving mixed B2B and B2C sellers
          maxLength: 2048
        operatesInProhibitedCountries:
          type: boolean
          description: Whether the business operates in prohibited countries
          example: false
        highRiskActivities:
          type: array
          description: List of high-risk activities the business engages in
          example:
            - MONEY_SERVICES
          items:
            type: string
            enum:
              - 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:
          type: string
          description: Explanation of high-risk activities
          example: Cryptocurrency exchange services
          maxLength: 2048
        signedAgreementId:
          type: string
          description: Signed agreement ID
          example: tos_abc123
          maxLength: 256
    AssociatedEntityResponseDto:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier
          example: asp_abc123
        createdAt:
          type: string
          description: Created timestamp
          example: '2026-01-15T10:30:00Z'
        updatedAt:
          type: string
          description: Last updated timestamp
          example: '2026-01-15T10:30:00Z'
        entityType:
          type: string
          enum:
            - INDIVIDUAL
            - BUSINESS
          description: Type of entity
          example: BUSINESS
        parentEntityId:
          type: string
          description: >-
            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.
          example: asp_parent123
        details:
          description: Type-specific details (individual or business)
          oneOf:
            - $ref: '#/components/schemas/IndividualEntityDetailsDto'
            - $ref: '#/components/schemas/BusinessEntityDetailsDto'
          example:
            businessName: Acme Holdings LLC
            registrationNumber: LLC-12345678
            dateOfIncorporation: '2018-06-15'
            businessAddress:
              addressLine1: 100 Market Street
              addressLine2: Suite 500
              city: San Francisco
              state: CA
              postalCode: '94105'
              country: US
        countryCode:
          type: string
          description: Country code (ISO 3166-1 alpha-2)
          example: US
        email:
          type: string
          description: Email address
          example: contact@acmeholdings.com
        phone:
          type: string
          description: Phone number
          example: '+14155551234'
        address:
          description: >-
            Address. Use the nested transliterated field for Latin character
            versions of non-Latin addresses.
          allOf:
            - $ref: '#/components/schemas/AddressDto'
        hasOwnership:
          type: boolean
          description: >-
            Whether this entity is an owner. For an individual with indirect
            ownership whose percentage is not quantified, omit
            ownershipPercentage and set this to true to identify them as a
            beneficial owner.
          example: true
        hasControl:
          type: boolean
          description: >-
            Has significant control (e.g. CEO, managing member). A control
            person satisfies the business submission requirement when no
            individual holds 25% or more effective ownership.
          example: true
        ownershipPercentage:
          type: number
          description: Ownership percentage
          example: 51
        isSigner:
          type: boolean
          description: Has signing authority
          example: false
        isDirector:
          type: boolean
          description: Is a director
          example: false
        role:
          type: string
          description: Structured role at the company.
          enum:
            - CEO
            - CFO
            - COO
            - PRESIDENT
            - GENERAL_COUNSEL
            - MANAGING_MEMBER
            - TREASURER
            - OTHER
        title:
          type: string
          description: Custom title at the company.
          example: Managing Director
        documents:
          description: Array of document IDs
          example:
            - doc_abc123
          type: array
          items:
            type: string
        attestedOwnershipStructureAt:
          type: string
          description: Timestamp when ownership structure was attested
          example: '2026-01-15T10:30:00Z'
        displayName:
          type: string
          description: Display name
          example: Acme Holdings LLC
        verificationLink:
          description: >-
            Verification link for UBO KYC. Present on create (when
            generateVerificationLink is true) and on single entity GET if there
            is an active/pending verification session.
          allOf:
            - $ref: '#/components/schemas/VerificationLinkDto'
      required:
        - id
        - createdAt
        - updatedAt
        - entityType
        - hasOwnership
        - hasControl
    CustomerAddressDto:
      type: object
      properties:
        addressLine1:
          type: string
          description: Address line 1
          example: 123 Main Street
          maxLength: 1024
        addressLine2:
          type: string
          description: Address line 2 (apartment, suite, etc.)
          example: Apt 4B
          maxLength: 1024
        city:
          type: string
          description: City
          example: San Francisco
          maxLength: 256
        state:
          type: string
          description: State / Province
          example: CA
          maxLength: 256
        postalCode:
          type: string
          description: >-
            Postal code / ZIP code. May be empty for countries without a
            postal-code system, including the United Arab Emirates.
          example: '94102'
          maxLength: 50
        country:
          type: string
          description: Country code (ISO 3166-2)
          example: US
          minLength: 2
          maxLength: 2
        transliterated:
          description: >-
            Transliterated address fields (Latin characters) for non-Latin
            addresses. Required when address contains non-Latin characters
            (Chinese, Arabic, Cyrillic, etc.).
          allOf:
            - $ref: '#/components/schemas/TransliteratedAddressDto'
        label:
          type: string
          description: Address label/type
          example: HOME
          enum:
            - REGISTERED
            - OPERATIONAL
            - US_REGISTERED
            - HEADQUARTERS
            - BILLING
            - SHIPPING
            - HOME
            - OFFICE
        isDefault:
          type: boolean
          description: Whether this is the default/primary address
          example: true
      required:
        - addressLine1
        - city
        - postalCode
        - country
    MissingComplianceRequirementDto:
      type: object
      properties:
        requirementType:
          type: string
          description: Requirement category
          enum:
            - FIELD
            - DOCUMENT
          example: FIELD
        key:
          type: string
          description: Stable requirement key or field path
          example: businessData.legalName
        displayName:
          type: string
          description: Human-readable requirement label
          example: Legal Name
        entityId:
          type: string
          description: >-
            Associated entity ID when the missing requirement belongs to a
            beneficial owner or control person.
          example: asp_abc123
        entityDisplayName:
          type: string
          description: >-
            Human-readable associated entity name when the missing requirement
            belongs to a beneficial owner or control person.
          example: Jane Owner
      required:
        - requirementType
        - key
        - displayName
    DocumentResponseDto:
      type: object
      properties:
        id:
          type: string
          example: doc_abc123
        organizationId:
          type: string
          example: org_xyz789
        customerId:
          type: string
          example: cus_abc123
        transferId:
          type: string
          example: txn_xyz789
        documentType:
          type: string
          enum:
            - IDENTITY
            - LIVENESS_CHECK
            - 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
          description: Document type
          example: INVOICE
        documentSubtype:
          type: string
          description: Specific document subtype
          example: BANK_STATEMENT
        fileName:
          type: string
          example: invoice-2026-001.pdf
        contentType:
          type: string
          example: application/pdf
        sizeBytes:
          type: number
          example: 1024000
        remarks:
          type: string
          description: Free-form remarks or notes about the document
        fileHash:
          type: string
          description: SHA-256 hash of file content
        downloadUrl:
          type: string
          description: Signed URL to download the document
        status:
          type: string
          enum:
            - PENDING
            - UPLOADING
            - UPLOADED
            - FAILED
          description: Document status
          example: UPLOADED
        createdAt:
          format: date-time
          type: string
        uploadedAt:
          format: date-time
          type: string
        associatedEntityId:
          type: string
          description: Associated entity ID (e.g., UBO)
      required:
        - id
        - organizationId
        - customerId
        - documentType
        - fileName
        - contentType
        - sizeBytes
        - status
        - createdAt
    CustomerTreasuryResponseDto:
      type: object
      properties:
        customerId:
          type: string
          description: Customer ID
          example: cus_abc123
        treasuries:
          description: Customer treasuries with wallet balances
          type: array
          items:
            $ref: '#/components/schemas/TreasuryDto'
      required:
        - customerId
        - treasuries
    CustomerVerificationSessionResponseDto:
      type: object
      properties:
        id:
          type: string
          example: vs_abc123
        status:
          type: string
          example: COMPLETED
        createdAt:
          type: string
          example: '2026-01-15T10:30:00Z'
        completedAt:
          type: string
          example: '2026-01-15T11:00:00Z'
        progressPercentage:
          type: number
          example: 100
      required:
        - id
        - status
        - createdAt
    IndividualEntityDetailsDto:
      type: object
      properties:
        firstName:
          type: string
          example: John
        nickname:
          type: string
          example: Johnny
        lastName:
          type: string
          example: Doe
        middleName:
          type: string
          example: Michael
        dateOfBirth:
          type: string
          example: '1985-03-15'
        taxResidenceCountry:
          type: string
          description: >-
            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
        transliteratedFirstName:
          type: string
        transliteratedMiddleName:
          type: string
        transliteratedLastName:
          type: string
        taxIdentificationDocumentType:
          type: string
          example: UTR
    BusinessEntityDetailsDto:
      type: object
      properties:
        businessName:
          type: string
          example: Acme Holdings LLC
        registrationNumber:
          type: string
          example: LLC-12345678
        dateOfIncorporation:
          type: string
          example: '2018-06-15'
        businessAddress:
          $ref: '#/components/schemas/AddressDto'
    AddressDto:
      type: object
      properties:
        addressLine1:
          type: string
          description: Address line 1
          example: 123 Main Street
          maxLength: 1024
        addressLine2:
          type: string
          description: Address line 2 (apartment, suite, etc.)
          example: Apt 4B
          maxLength: 1024
        city:
          type: string
          description: City
          example: San Francisco
          maxLength: 256
        state:
          type: string
          description: State / Province
          example: CA
          maxLength: 256
        postalCode:
          type: string
          description: >-
            Postal code / ZIP code. May be empty for countries without a
            postal-code system, including the United Arab Emirates.
          example: '94102'
          maxLength: 50
        country:
          type: string
          description: Country code (ISO 3166-2)
          example: US
          minLength: 2
          maxLength: 2
        transliterated:
          description: >-
            Transliterated address fields (Latin characters) for non-Latin
            addresses. Required when address contains non-Latin characters
            (Chinese, Arabic, Cyrillic, etc.).
          allOf:
            - $ref: '#/components/schemas/TransliteratedAddressDto'
      required:
        - addressLine1
        - city
        - postalCode
        - country
    VerificationLinkDto:
      type: object
      properties:
        sessionId:
          type: string
          description: Verification session ID
          example: vsess_abc123
        verificationUrl:
          type: string
          description: URL for the UBO to complete their verification
          example: https://verify.infinite.dev/?sessionId=vsess_abc123
        expiresAt:
          type: string
          description: When the verification link expires
          example: '2026-01-09T10:30:00Z'
        status:
          type: string
          enum:
            - PENDING
            - ACTIVE
            - IN_PROGRESS
            - COMPLETED
            - EXPIRED
            - CANCELLED
            - SUBMITTED
          description: Current status of the verification session
          example: ACTIVE
      required:
        - sessionId
        - verificationUrl
        - expiresAt
        - status
    TransliteratedAddressDto:
      type: object
      properties:
        addressLine1:
          type: string
          description: Transliterated address line 1 (Latin characters)
          example: 123 Main Street
          maxLength: 1024
        addressLine2:
          type: string
          description: Transliterated address line 2 (Latin characters)
          example: Apt 4B
          maxLength: 1024
        city:
          type: string
          description: Transliterated city (Latin characters)
          example: Beijing
          maxLength: 256
        state:
          type: string
          description: Transliterated state/province (Latin characters)
          example: Hebei
          maxLength: 256
    TreasuryDto:
      type: object
      properties:
        id:
          type: string
          description: Treasury ID
          example: trs_abc123
        name:
          type: string
          description: Treasury name
          example: Main Treasury
        provider:
          type: string
          description: Provider backing this treasury
          example: INFINITE
        balances:
          type: object
          description: Balances held in this treasury keyed by currency code
          additionalProperties:
            $ref: '#/components/schemas/TreasuryBalanceDto'
        fundingMethods:
          description: Funding methods that can pay into this treasury
          type: array
          items:
            $ref: '#/components/schemas/TreasuryFundingMethodDto'
        wallets:
          description: Wallets in this treasury
          type: array
          items:
            $ref: '#/components/schemas/TreasuryWalletDto'
      required:
        - id
        - balances
        - fundingMethods
        - wallets
    TreasuryBalanceDto:
      type: object
      properties:
        available:
          description: Available balance for this currency
          allOf:
            - $ref: '#/components/schemas/MoneyOutputDto'
        pending:
          description: Pending balance for this currency
          allOf:
            - $ref: '#/components/schemas/MoneyOutputDto'
      required:
        - available
    TreasuryFundingMethodDto:
      type: object
      properties:
        id:
          type: string
          description: Funding method ID
          example: vba_abc123
        type:
          type: string
          description: Funding method type
          enum:
            - BANK_ACCOUNT
            - CRYPTO_ADDRESS
          example: BANK_ACCOUNT
        provider:
          type: string
          description: Provider backing this treasury funding method
          example: INFINITE
        currency:
          type: string
          description: Primary currency accepted by this funding method
          example: USD
        currencyCodes:
          description: Currencies accepted by this funding method
          example:
            - USDC
          type: array
          items:
            type: string
        rail:
          type: string
          description: Inbound payment rail or network
          example: ACH
        rails:
          description: Supported inbound payment rails
          example:
            - ACH
            - WIRE
          type: array
          items:
            type: string
        bankName:
          type: string
          description: Bank name for bank funding methods
          example: Infinite Bank
        beneficiaryName:
          type: string
          description: Beneficiary name for bank funding methods
          example: Acme Treasury
        accountNumber:
          type: string
          description: Bank account number for bank funding methods
          example: '1234567890'
        routingNumber:
          type: string
          description: Routing number for bank funding methods
          example: '021000021'
        iban:
          type: string
          description: IBAN for bank funding methods
          example: GB82WEST12345698765432
        swiftBic:
          type: string
          description: SWIFT/BIC code for bank funding methods
          example: CHASUS33
        address:
          type: string
          description: Deposit address for crypto funding methods
          example: '0x1234567890abcdef1234567890abcdef12345678'
        addressType:
          type: string
          description: Address type for crypto funding methods
          enum:
            - EVM
            - TRON
            - BITCOIN
            - SOLANA
          example: EVM
        chains:
          type: array
          description: Supported chains for crypto funding methods
          example:
            - ETHEREUM
            - BASE
          items:
            type: string
            enum:
              - ETHEREUM
              - BASE
              - POLYGON
              - SOLANA
              - TRON
              - BITCOIN
              - ARBITRUM
              - ROBINHOOD
      required:
        - id
        - type
        - provider
    TreasuryWalletDto:
      type: object
      properties:
        accountId:
          type: string
          description: >-
            Infinite wallet account id (`inw_…`). Use as transfer
            `source.accountId` and as a fixed-route `sweepTargetAccountId`.
          example: inw_abc123
        address:
          type: string
          description: Wallet address
          example: '0x1234567890abcdef1234567890abcdef12345678'
        addressType:
          type: string
          description: Address type
          enum:
            - EVM
            - TRON
            - BITCOIN
            - SOLANA
          example: EVM
        balances:
          description: Token balances on this wallet
          type: array
          items:
            $ref: '#/components/schemas/WalletTokenBalanceDto'
      required:
        - accountId
        - address
        - addressType
        - balances
    MoneyOutputDto:
      type: object
      properties:
        currency:
          type: string
          description: Currency code
          example: USD
        exponent:
          type: number
          description: >-
            Number of decimal places for this currency (e.g., 2 for USD, 6 for
            USDC)
          example: 2
        value:
          type: string
          description: Amount in smallest unit as a string
          example: '12345'
        displayValue:
          type: string
          description: Human-readable decimal value
          example: '123.45'
      required:
        - currency
        - exponent
        - value
        - displayValue
    WalletTokenBalanceDto:
      type: object
      properties:
        currency:
          type: string
          description: Currency symbol
          example: USDC
        balance:
          description: Balance amount
          allOf:
            - $ref: '#/components/schemas/MoneyOutputDto'
        chain:
          type: string
          description: Chain name
          example: ETHEREUM
      required:
        - currency
        - balance
        - chain
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: API Key
      type: http
      description: API Key in Bearer format (e.g., Bearer sk_test_...)

````

## Related topics

- [MCP Server](/guides/mcp.md)
- [Infinite skill for AI assistants](/agent-skill.md)
- [Save individual customer verification](/api-reference/customers/save-individual-customer-verification.md)
- [Save business customer verification](/api-reference/customers/save-business-customer-verification.md)
- [Submit customer RFI response](/api-reference/rfis/submit-customer-rfi-response.md)
