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

# Create internal payout

> Send a same-currency fiat payout to another UQPAY account. Set `account_id` to the recipient account and use `x-on-behalf-of` to pay from an authorized sub-account. Self-transfers are not supported.

The payer must have internal payouts enabled. See `with_transfer` for funding options and balance requirements.

After submission, [retrieve the payout](/global-account/v1.6/api-reference/retrieve-payout) using the returned payout ID and the same payer account to check its status.



## OpenAPI

````yaml /global-account/v1.6/banking.yaml post /v1/payouts/intra
openapi: 3.0.2
info:
  title: Banking API
  version: 0.0.1
  description: >
    UQPAY Banking API provides comprehensive banking and payment solutions for
    global money movement.


    ## Key Features

    - International payments and transfers

    - Multi-currency account management

    - Real-time currency conversion

    - Virtual account services

    - Fund deposit and withdrawal


    ## Authentication

    Use API keys to authenticate your client requests when utilizing UQPAY APIs.

    API keys are unique data strings used to authenticate users and enable
    access to privileged operations.

    Your API key should be kept confidential and secure at all times.


    ## Service Components

    - **Payout**: Create and manage international fund transfers to
    beneficiaries

    - **Payer**: Manage entities making payments and authorizing fund transfers

    - **Beneficiary**: Handle recipient information and bank details

    - **Balance**: View and manage multi-currency account balances

    - **Deposit**: Process incoming fund transfers

    - **Virtual Accounts**: Utilize local bank accounts in foreign currencies

    - **Conversion**: Execute currency exchange at competitive rates


    ## Getting Started

    1. Obtain API credentials

    2. Set up test environment using sandbox URL

    3. Implement authentication

    4. Start with basic operations


    ## Support

    For technical support and integration assistance, contact UQPAY support
    team.
  contact:
    name: UQPAY Support
    url: https://www.uqpay.com/support
    email: banking.tech@uqpay.com
  license:
    name: Proprietary
    url: https://www.uqpay.com/legal/api-terms
  termsOfService: https://www.uqpay.com/legal/terms
  x-api-id: banking-api-v1.6.0
  x-logo:
    url: https://uqpay.com/img/UQPAY_LogoAnimv2.gif
    backgroundColor: '#FFFFFF'
    altText: UQPAY Logo
  x-categories:
    - Banking
    - Payment Processing
    - Foreign Exchange
servers:
  - url: https://api-sandbox.uqpaytech.com/api
    description: Sandbox base URL.
  - url: https://api.uqpay.com/api
    description: Production base URL.
security: []
tags:
  - name: Balances
    description: >-
      View and manage available funds across different currencies in your
      account.
  - name: Transfers
    description: >-
      A wallet transfer resource is used for sending funds directly from your
      UQPAY account to a connected account.
  - name: Deposits
    description: >-
      Deposits are bank transfers made into your UQPAY Global Accounts for
      adding funds or collecting funds from third parties.
  - name: Virtual Accounts
    description: >-
      Virtual Accounts function as local bank accounts in foreign currencies.
      They enable worldwide fund collection with account details that allow you
      to receive funds from various platforms. Virtual Accounts can also be used
      to top up your UQPAY balance.
  - name: Payout
    description: >-
      A Payout resource is created when you send funds to a beneficiary. It
      details the beneficiary, bank details, the amount being paid, its status,
      and other relevant information. You can create the payout using either
      direct beneficiary details or a previously created beneficiary ID.
  - name: Beneficiaries
    description: >-
      The beneficiary is the recipient of the funds and is typically the party
      who will ultimately benefit from the payout.
  - name: Conversion
    description: Manage currency conversions and exchange rates for your transactions.
  - name: Exchange Rates
    description: >-
      Retrieve real-time exchange rates for a specified currency pair or all
      available pairs.
  - name: Global Accounts
    description: >-
      ⚠️ WARNING This API version is deprecated. Eventually, a deprecated API
      version becomes unsupported. Global Accounts are foreign currency accounts
      that function as local bank accounts.
  - name: Simulator
    description: Simulate deposit transactions on the sandbox environment.
paths:
  /v1/payouts/intra:
    post:
      tags:
        - Payouts
      summary: Create internal payout
      description: >-
        Send a same-currency fiat payout to another UQPAY account. Set
        `account_id` to the recipient account and use `x-on-behalf-of` to pay
        from an authorized sub-account. Self-transfers are not supported.


        The payer must have internal payouts enabled. See `with_transfer` for
        funding options and balance requirements.


        After submission, [retrieve the
        payout](/global-account/v1.6/api-reference/retrieve-payout) using the
        returned payout ID and the same payer account to check its status.
      operationId: create-internal-payout
      parameters:
        - name: x-on-behalf-of
          in: header
          required: false
          schema:
            type: string
            format: uuid
          description: >-
            Specifies the authorized direct sub-account on whose behalf the
            request is made. Set this to its `account_id` (a lowercase UUID),
            available from [List Connected
            Accounts](/account-center/v1.6/api-reference/list-connected-accounts).
            If omitted, the request uses the token account.

            For more information, see [Connected
            Accounts](/account-center/v1.6/guide/connected-accounts).
        - name: x-idempotency-key
          in: header
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            A unique identifier (lowercase UUID) used to ensure request
            idempotency. Use the same identifier when retrying an operation to
            avoid duplicate payouts.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InternalPayoutCreationRequest'
            examples:
              sandbox:
                summary: Sandbox request
                description: >-
                  Pay from the payer account balance. Replace `account_id` with
                  your recipient account.
                value:
                  account_id: CB5168811008
                  currency: USD
                  amount: '0.01'
                  purpose_code: business_expenses
                  payout_reference: INTRA-CONTRACT-20261020-01
      responses:
        '200':
          description: Payout accepted. Query the payout to confirm completion.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalPayoutCreationResponse'
              examples:
                sandbox:
                  summary: Sandbox response
                  value:
                    payout_id: d2696076-257d-4da3-858d-c1499d540bb3
                    short_reference_id: PT261020-Y4BU5K4E
                    payout_status: READY_TO_SEND
        '400':
          description: >-
            Invalid parameters, unavailable account or service, insufficient
            balance, or an idempotency conflict.
        '409':
          description: >-
            Request is processing. Retry later with the original key and
            unchanged request.
      security:
        - XAuthToken: []
components:
  schemas:
    InternalPayoutCreationRequest:
      type: object
      required:
        - account_id
        - currency
        - amount
        - purpose_code
      properties:
        account_id:
          type: string
          description: >-
            Recipient account UUID or short account ID. The recipient must be
            active, have a short account ID, and differ from the payer. Email
            addresses are not supported.
          maxLength: 36
        currency:
          type: string
          description: >-
            Currency of the payout, specified as a three-letter [ISO
            4217](https://en.wikipedia.org/wiki/ISO_4217) currency code. Both
            accounts must support the same fiat currency.
          minLength: 3
          maxLength: 3
        amount:
          type: string
          description: >-
            Payout amount, excluding fees. Must be greater than zero. IDR, JPY,
            and KRW require a whole-number amount.
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
        purpose_code:
          type: string
          description: >-
            Purpose of the payout, case-insensitive. Do not add surrounding
            whitespace. Choose a supported code that matches the business
            purpose:


            | Purpose code | Meaning |

            | --- | --- |

            | `audio_visual_services` | Audiovisual services |

            | `bill_payment` | Bill payment |

            | `business_expenses` | Business expenses |

            | `construction` | Construction |

            | `donation_charitable_contribution` | Donation/charitable
            contribution |

            | `education_training` | Education/training |

            | `family_support` | Family support |

            | `freight` | Freight |

            | `goods_purchased` | Goods purchased |

            | `investment_capital` | Investment capital |

            | `investment_proceeds` | Investment proceeds |

            | `living_expenses` | Living expenses |

            | `loan_credit_repayment` | Loan/credit repayment |

            | `medical_services` | Medical services |

            | `pension` | Pension |

            | `personal_remittance` | Personal remittance |

            | `professional_business_services` | Professional/business services
            |

            | `real_estate` | Real estate |

            | `taxes` | Taxes |

            | `technical_services` | Technical services |

            | `transfer_to_own_account` | Transfer to own account |

            | `travel` | Travel |

            | `wages_salary` | Wages/salary |
          maxLength: 200
        nickname:
          type: string
          description: Recipient nickname.
          maxLength: 120
        payout_reason:
          type: string
          description: Additional explanation of the payout purpose.
          maxLength: 200
        payout_reference:
          type: string
          description: Your business reference for the payout.
          maxLength: 100
        with_transfer:
          type: string
          description: >-
            Whether to transfer funds from the master account to the paying
            sub-account before making the payout.


            With a master-account token, the master pays by default. Include
            `x-on-behalf-of` to pay from the specified sub-account. `account_id`
            always identifies the final recipient.


            - **`N` or omitted: pay directly from the payer's balance.** Funds
            move from **payer → recipient**. The payer must have enough
            available balance for `amount` plus the payout fee. Insufficient
            funds cause the request to fail; no funds are automatically
            transferred from the master.

            - **`Y`, when a sub-account pays: fund the sub-account first, then
            make the payout.** Funds move from **master → paying sub-account →
            recipient**. The master first transfers `amount` plus the payout fee
            to the sub-account, which then makes the payout. This full amount is
            transferred even if the sub-account already has sufficient funds.


            When using `Y` for a sub-account payout, **total master-account
            debit = `amount` + payout fee + master-to-sub-account transfer
            fee**. If the master has insufficient available balance, the request
            fails; it does not use the sub-account's existing balance instead.


            If the payer is the master account, `Y` behaves the same as `N`: the
            payout uses that master's balance directly.


            For sub-account funding, the payer must be a direct sub-account of
            the funding master, with this capability enabled. Its balance
            account for the payout currency must be valid, with a non-negative
            available balance. Contact UQPAY to enable this capability.
          enum:
            - 'Y'
            - 'N'
        documentation:
          type: array
          description: Supporting documents. Use `file_id` or `file` to provide a document.
          items:
            type: object
            properties:
              file_id:
                type: string
                description: Public ID of an uploaded file.
              file:
                type: string
                description: >-
                  Base64-encode the file content and include the Data URI
                  prefix. Supports PDF, JPEG/JPG, and PNG.
    InternalPayoutCreationResponse:
      type: object
      properties:
        payout_id:
          type: string
          description: Unique identifier of the payout.
          format: uuid
        short_reference_id:
          type: string
          description: Short reference of the payout.
        payout_status:
          type: string
          description: |-
            - `READY_TO_SEND`: Accepted and awaiting processing.
            - `PENDING`: Processing.
            - `COMPLETED`: Completed.
            - `FAILED`: Failed or cancelled.
            - `REJECTED`: Rejected during review.
          enum:
            - READY_TO_SEND
            - PENDING
            - COMPLETED
            - FAILED
            - REJECTED
  securitySchemes:
    XAuthToken:
      type: apiKey
      in: header
      name: x-auth-token
      description: The API token for login provided by UQPAY.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.