> ## 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 global payout batch

> Create a global payout batch. Supports USDT and USDC across their available networks (USDT on Ethereum, Arbitrum, Polygon, Solana, Tron; USDC on Ethereum, Base, Arbitrum, Polygon, Solana). Defaults to DRAFT unless `confirm` is true (PENDING_APPROVAL). Use Idempotency-Key to prevent duplicates.



## OpenAPI

````yaml post /v1/global-payout-batches
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/global-payout-batches:
    post:
      tags:
        - Global Payout Batches
      summary: Create a global payout batch
      description: >-
        Create a global payout batch. Supports USDT and USDC across their
        available networks (USDT on Ethereum, Arbitrum, Polygon, Solana, Tron;
        USDC on Ethereum, Base, Arbitrum, Polygon, Solana). Defaults to DRAFT
        unless `confirm` is true (PENDING_APPROVAL). Use Idempotency-Key to
        prevent duplicates.
      operationId: GlobalPayoutBatchesController_create_v1
      parameters:
        - name: X-API-Key
          in: header
          description: API key
          required: false
          schema:
            type: string
        - name: Idempotency-Key
          required: false
          in: header
          description: Optional idempotency key (UUID) to prevent duplicate batch creation
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePayoutBatchDto'
      responses:
        '201':
          description: Global payout batch created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutBatchResponseDto'
        '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/global-payout-batches \
              --body '<request-json>'
        - lang: text
          label: MCP
          source: >-
            Create a global payout batch.


            # Infinite MCP is read-only for this endpoint — use a dedicated MCP
            tool when one exists, otherwise run the CLI tab.
components:
  schemas:
    CreatePayoutBatchDto:
      type: object
      properties:
        onBehalfOf:
          type: string
          description: Customer ID on whose behalf the batch is created.
          example: cus_abc123
        source:
          description: >-
            Source funding details. Draws the chosen stablecoin from the
            customer's provider-held balance on the chosen network.
          allOf:
            - $ref: '#/components/schemas/PayoutBatchSourceDto'
        paymentReason:
          type: string
          enum:
            - CAPITAL_CONTRIBUTIONS
            - CHARITABLE_CONTRIBUTIONS
            - CONSULTING_FEES
            - CORPORATE_TAX_PAYMENTS
            - DOWN_PAYMENTS_FOR_REAL_ESTATE
            - EDUCATION_FEES
            - EMPLOYEE_SALARIES_OR_WAGES
            - EXPENSES_REIMBURSEMENT
            - GIFTS
            - GOVERNMENT_GRANTS
            - INCOME_TAX_PAYMENTS
            - INHERITANCE_PAYMENTS
            - INSURANCE_CLAIM_PAYOUTS
            - INSURANCE_PREMIUM_PAYMENTS
            - INVESTMENTS
            - LOAN_ADVANCES
            - MORTGAGE_PAYMENTS
            - OTHER
            - PAYMENT_FOR_GOODS_AND_SERVICES
            - PERSONAL_TRANSFERS
            - REAL_ESTATE_PURCHASES
            - REMITTANCES
            - RENT
            - REPAYMENT_OF_LOANS
            - ROYALTIES
            - SELF
            - TRADE_SETTLEMENT
            - TRUST_FUND_DISTRIBUTIONS
            - UTILITY_BILLS
            - WELFARE_OR_BENEFITS
            - WINNINGS_AND_PRIZES
          description: Reason for the payments (compliance/AML). Applied to every item.
          example: PAYMENT_FOR_GOODS_AND_SERVICES
        items:
          description: >-
            Payout items (max 100). Each item pays the batch source stablecoin
            on the source network to an external wallet.
          minItems: 1
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/CreatePayoutBatchItemDto'
        confirm:
          type: boolean
          description: >-
            If true, submit the batch for review immediately. If false or
            omitted, the batch is created in DRAFT and can be confirmed later.
      required:
        - onBehalfOf
        - source
        - paymentReason
        - items
    PayoutBatchResponseDto:
      type: object
      properties:
        id:
          type: string
          example: pb_abc123
        organizationId:
          type: string
          example: org_abc123
        onBehalfOf:
          type: string
          example: cus_abc123
        source:
          $ref: '#/components/schemas/PayoutBatchSourceResponseDto'
        status:
          type: string
          enum:
            - DRAFT
            - PENDING_APPROVAL
            - PROCESSING
            - COMPLETED
            - PARTIALLY_COMPLETED
            - FAILED
            - CANCELLED
            - REJECTED
          example: DRAFT
        paymentReason:
          type: string
          enum:
            - CAPITAL_CONTRIBUTIONS
            - CHARITABLE_CONTRIBUTIONS
            - CONSULTING_FEES
            - CORPORATE_TAX_PAYMENTS
            - DOWN_PAYMENTS_FOR_REAL_ESTATE
            - EDUCATION_FEES
            - EMPLOYEE_SALARIES_OR_WAGES
            - EXPENSES_REIMBURSEMENT
            - GIFTS
            - GOVERNMENT_GRANTS
            - INCOME_TAX_PAYMENTS
            - INHERITANCE_PAYMENTS
            - INSURANCE_CLAIM_PAYOUTS
            - INSURANCE_PREMIUM_PAYMENTS
            - INVESTMENTS
            - LOAN_ADVANCES
            - MORTGAGE_PAYMENTS
            - OTHER
            - PAYMENT_FOR_GOODS_AND_SERVICES
            - PERSONAL_TRANSFERS
            - REAL_ESTATE_PURCHASES
            - REMITTANCES
            - RENT
            - REPAYMENT_OF_LOANS
            - ROYALTIES
            - SELF
            - TRADE_SETTLEMENT
            - TRUST_FUND_DISTRIBUTIONS
            - UTILITY_BILLS
            - WELFARE_OR_BENEFITS
            - WINNINGS_AND_PRIZES
          example: PAYMENT_FOR_GOODS_AND_SERVICES
        items:
          type: array
          items:
            $ref: '#/components/schemas/PayoutBatchItemResponseDto'
        rejectionReason:
          type: string
          nullable: true
          description: Reason when the batch was rejected during review.
        createdAt:
          format: date-time
          type: string
        updatedAt:
          format: date-time
          type: string
      required:
        - id
        - organizationId
        - onBehalfOf
        - source
        - status
        - paymentReason
        - items
        - createdAt
        - updatedAt
    PayoutBatchSourceDto:
      type: object
      properties:
        currency:
          type: string
          enum:
            - USDT
            - USDC
          description: 'Source stablecoin. Supported: USDT, USDC.'
          example: USDT
        paymentRail:
          type: string
          enum:
            - ETHEREUM
            - BASE
            - ARBITRUM
            - POLYGON
            - SOLANA
            - TRON
          description: >-
            Source network. Supported per currency: USDT on Ethereum, Arbitrum,
            Polygon, Solana, Tron; USDC on Ethereum, Base, Arbitrum, Polygon,
            Solana.
          example: ETHEREUM
      required:
        - currency
        - paymentRail
    CreatePayoutBatchItemDto:
      type: object
      properties:
        amount:
          description: >-
            Payout amount in the batch source stablecoin, minor units (6
            decimals). Currency must equal the batch source currency.
          example:
            currency: USDT
            rawValue: '1000000'
          allOf:
            - $ref: '#/components/schemas/MoneyInputDto'
        counterpartyId:
          type: string
          description: >-
            Existing counterparty ID for the beneficiary. Required when inline
            beneficiary fields are omitted.
          example: cp_abc123
        beneficiaryType:
          type: string
          description: >-
            Beneficiary type when creating a new counterparty. Required when
            `counterpartyId` is omitted.
          enum:
            - INDIVIDUAL
            - BUSINESS
          example: INDIVIDUAL
        beneficiaryName:
          type: string
          description: >-
            Beneficiary legal name when creating a new counterparty. Required
            when `counterpartyId` is omitted.
          example: Jane Doe
        beneficiaryAddress:
          description: >-
            Beneficiary address when creating a new counterparty. Required when
            `counterpartyId` is omitted.
          allOf:
            - $ref: '#/components/schemas/AddressDto'
        destination:
          description: Payout destination for this item.
          allOf:
            - $ref: '#/components/schemas/PayoutBatchDestinationDto'
        clientReferenceId:
          type: string
          description: >-
            Client's internal reference ID for this item (e.g. invoice or
            payroll line ID). Must be unique within the batch when provided.
          example: payroll_line_42
          maxLength: 256
        developerFeeFixed:
          type: number
          description: >-
            Fixed developer fee in minor units of source currency. Added on top
            of network fees and deducted from the transfer amount.
          example: 100
        developerFeePercent:
          type: number
          description: >-
            Developer fee as decimal percentage (e.g., 0.015 for 1.5%). Maximum
            0.1 (10%).
          example: 0.015
          maximum: 0.1
      required:
        - amount
        - destination
    PayoutBatchSourceResponseDto:
      type: object
      properties:
        currency:
          type: string
          example: USDT
        paymentRail:
          type: string
          example: ETHEREUM
      required:
        - currency
        - paymentRail
    PayoutBatchItemResponseDto:
      type: object
      properties:
        id:
          type: string
          example: pbi_abc123
        position:
          type: number
          example: 0
          description: 0-based position within the batch
        amount:
          $ref: '#/components/schemas/MoneyOutputDto'
        counterpartyId:
          type: string
          example: cp_abc123
        destination:
          $ref: '#/components/schemas/PayoutBatchItemDestinationResponseDto'
        transferId:
          type: string
          example: tfr_abc123
          nullable: true
          description: Child transfer ID once created after approval.
        status:
          type: string
          enum:
            - PENDING
            - TRANSFER_CREATED
            - COMPLETED
            - FAILED
            - CANCELLED
          example: PENDING
        clientReferenceId:
          type: string
          example: payroll_line_42
          nullable: true
        developerFeeFixed:
          type: number
          example: 100
          nullable: true
          description: Fixed developer fee in minor units.
        developerFeePercent:
          type: number
          example: 0.015
          nullable: true
          description: Developer fee as decimal percentage.
        errorMessage:
          type: string
          nullable: true
          description: Customer-safe error when item creation or settlement failed.
        createdAt:
          format: date-time
          type: string
        updatedAt:
          format: date-time
          type: string
      required:
        - id
        - position
        - amount
        - counterpartyId
        - destination
        - status
        - createdAt
        - updatedAt
    MoneyInputDto:
      type: object
      properties:
        currency:
          type: string
          description: Currency code (ISO 4217 for fiat, symbol for crypto)
          example: USD
        rawValue:
          type: string
          description: >-
            Amount in smallest unit as a string (cents for USD, satoshi for BTC,
            etc.)
          example: '1000000'
      required:
        - currency
        - rawValue
    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
    PayoutBatchDestinationDto:
      type: object
      properties:
        type:
          type: string
          enum:
            - EXTERNAL_WALLET
          description: >-
            Destination type. The initial Global Payouts launch supports
            `EXTERNAL_WALLET` destinations.
          example: EXTERNAL_WALLET
        address:
          type: string
          description: >-
            Recipient wallet address on the batch source network. Must match the
            address family of that chain (EVM, Solana, or Tron).
          example: '0x1234567890abcdef1234567890abcdef12345678'
      required:
        - type
        - address
    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
    PayoutBatchItemDestinationResponseDto:
      type: object
      properties:
        type:
          type: string
          enum:
            - EXTERNAL_WALLET
          example: EXTERNAL_WALLET
        currency:
          type: string
          example: USDT
        paymentRail:
          type: string
          example: ETHEREUM
        accountId:
          type: string
          example: ewa_abc123
          description: Public destination account ID.
        address:
          type: string
          example: '0x1234567890abcdef1234567890abcdef12345678'
          description: Destination wallet address snapshot from batch creation.
      required:
        - type
        - currency
        - paymentRail
        - accountId
        - address
    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

- [Confirm a global payout batch](/api-reference/global-payout-batches/confirm-a-global-payout-batch.md)
- [Cancel a global payout batch](/api-reference/global-payout-batches/cancel-a-global-payout-batch.md)
- [Get a global payout batch](/api-reference/global-payout-batches/get-a-global-payout-batch.md)
- [List global payout batches](/api-reference/global-payout-batches/list-global-payout-batches.md)
- [Agents](/concepts/agents.md)
