> ## 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.

# Create a new associated business

> Create a business associated entity for a business customer using a flat request body. Use this endpoint for intermediate business owners in a nested ownership tree. After creating the business, create its child owners using the associated entity endpoints and set parentEntityId to the returned associated business ID.



## OpenAPI

````yaml post /v1/customers/{customerId}/associated_businesses
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/{customerId}/associated_businesses:
    post:
      tags:
        - Customers
      summary: Create a new associated business
      description: >-
        Create a business associated entity for a business customer using a flat
        request body. Use this endpoint for intermediate business owners in a
        nested ownership tree. After creating the business, create its child
        owners using the associated entity endpoints and set parentEntityId to
        the returned associated business ID.
      operationId: AssociatedEntitiesController_createBusiness_v1
      parameters:
        - name: X-API-Key
          in: header
          description: API key
          required: false
          schema:
            type: string
        - name: customerId
          required: true
          in: path
          description: An ID that uniquely identifies a customer resource
          schema:
            example: cus_1234567890abcdef
            type: string
        - name: Idempotency-Key
          required: false
          in: header
          description: Idempotency key for preventing duplicate requests
          schema:
            type: string
      requestBody:
        required: true
        description: New associated business to be created
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAssociatedBusinessDto'
      responses:
        '201':
          description: Associated business created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssociatedEntityResponseDto'
        '400':
          description: Invalid input data or business rule violation
        '401':
          description: Unauthorized - Invalid or missing authentication credentials
        '403':
          description: Customer belongs to a different organization
        '404':
          description: Customer not found
      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/associated_businesses \
              --body '<request-json>'
        - lang: text
          label: MCP
          source: >-
            Create a new associated business (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:
    CreateAssociatedBusinessDto:
      type: object
      properties:
        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_abc123
        countryCode:
          type: string
          description: >-
            Country code (ISO 3166-1 alpha-2). Nationality for individuals,
            country of incorporation for businesses.
          example: US
        email:
          type: string
          description: Email address. Required when generateVerificationLink is true.
        phone:
          type: string
          description: Phone number
        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.
        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.
        ownershipPercentage:
          type: number
          description: Ownership percentage
          minimum: 0
          maximum: 100
        isSigner:
          type: boolean
          description: Has signing authority
        isDirector:
          type: boolean
          description: Is a director
        role:
          type: string
          description: Structured role at the company.
          enum:
            - CEO
            - CFO
            - COO
            - PRESIDENT
            - GENERAL_COUNSEL
            - MANAGING_MEMBER
            - TREASURER
            - OTHER
        attestedOwnershipStructureAt:
          type: string
          description: Timestamp when ownership structure was attested
          example: '2026-06-01T10:45:05Z'
        relationshipDate:
          type: string
          description: >-
            Date when the relationship with this entity was established
            (YYYY-MM-DD).
          example: '2020-01-15'
        generateVerificationLink:
          type: boolean
          description: >-
            When true, generates a verification link for this UBO to complete
            their KYC. The link will be returned in the response.
          example: true
        sendInvite:
          type: boolean
          description: >-
            When true (and generateVerificationLink is also true), sends an
            email invitation to the UBO to complete their KYC verification.
          example: true
        businessName:
          type: string
          description: Business name
          example: Acme Holdings LLC
        registrationNumber:
          type: string
          description: Business registration number
        dateOfIncorporation:
          type: string
          description: Date of incorporation (YYYY-MM-DD)
          example: '2018-06-15'
        businessAddress:
          description: Business address
          allOf:
            - $ref: '#/components/schemas/AddressDto'
        supportingDocuments:
          description: Supporting document references
          type: array
          items:
            $ref: '#/components/schemas/DocumentUploadDto'
      required:
        - countryCode
        - hasOwnership
        - hasControl
        - businessName
    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
    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
    DocumentUploadDto:
      type: object
      properties:
        requirementId:
          type: string
          description: >-
            Stable identifier for the custom document requirement this upload
            satisfies
        type:
          type: string
          description: >-
            General document category. Optional for context-specific uploads
            where the field already implies the document type.
          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
          example: PROOF_OF_ADDRESS
        subtype:
          type: string
          description: >-
            Specific document type. Optional for generic uploads when the
            subtype is not material to processing.
          enum:
            - GOVERNMENT_ID_FRONT
            - GOVERNMENT_ID_BACK
            - SELFIE
            - UTILITY_BILL
            - LEASE_AGREEMENT
          example: UTILITY_BILL
        description:
          type: string
          description: Description of the document
          example: Passport issued in 2020
        remarks:
          type: string
          description: Free-form remarks or notes about the document
          example: Uploaded to support proof of business address
          maxLength: 1000
        file:
          type: string
          description: >-
            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.
          example: doc_abc123
      required:
        - file
    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'
    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
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: API Key
      type: http
      description: API Key in Bearer format (e.g., Bearer sk_test_...)

````

## Related topics

- [Create a new associated individual](/api-reference/customers/create-a-new-associated-individual.md)
- [Create a new business customer](/api-reference/customers/create-a-new-business-customer.md)
- [Create a new individual customer](/api-reference/customers/create-a-new-individual-customer.md)
- [Update an associated business](/api-reference/customers/update-an-associated-business.md)
- [Initiate a new verification](/api-reference/verification/initiate-a-new-verification.md)
