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

> Creates a new payout to a beneficiary. With development and support from SWIFT and local payment rails, you can make faster and more cost-effective international payments to your overseas corporate accounts, suppliers, and employees.

This API supports multiple payment modes, including standard payouts and Payment-On-Behalf-Of (POBO), enabling flexible and efficient fund management. Additionally, you can select the fee payment method to control how transaction fees are handled.

#### Usage Guidelines
- Supports payouts to over 180 countries in 30+ currencies, including CNY payouts in Mainland China.
- Sub-accounts for POBO transactions must be created in advance, and the account status must be active.
- To enable POBO mode, include the `x-on-behalf-of` parameter in the request header and specify the sub-account ID used for the payout. The beneficiary will see the customized payer name instead of the actual paying entity.
- Users can select the fee charge type by `fee_paid_by` parameter to determine who covers transaction costs:
  1. `SHARED` – Transaction fees are split between payer and recipient; payer pays sending bank fees while recipient pays receiving bank fees.
  2. `OURS` – All transaction fees, including intermediary bank charges, are paid by the payer.
- There are two ways to specify the beneficiary:
  1. Using `beneficiary_id` – If the beneficiary has already been created, provide the `beneficiary_id` to reference an existing beneficiary.
  2. Providing full beneficiary details – If the beneficiary has not been created before, include the full beneficiary information in the request. In this case, do not pass `beneficiary_id`.

  **Note**: A beneficiary will be created when full details are provided. For any future payouts to the same beneficiary, you should pass the corresponding `beneficiary_id`, not the full details of beneficiary.

- If you intend to make cross-currency payouts, you can refer to the [Cross-Currency Guide](/global-account/v1.6/guide/cross-currency-payout-guide) for details and examples.




## OpenAPI

````yaml /global-account/v1.6/banking.yaml post /v1/payouts
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: Payers
    description: >-
      The payer is the party making the payout and authorizing the transfer of
      funds from their account to the beneficiary's account.
  - 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:
    post:
      tags:
        - Payouts
      summary: Create Payout
      description: >
        Creates a new payout to a beneficiary. With development and support from
        SWIFT and local payment rails, you can make faster and more
        cost-effective international payments to your overseas corporate
        accounts, suppliers, and employees.


        This API supports multiple payment modes, including standard payouts and
        Payment-On-Behalf-Of (POBO), enabling flexible and efficient fund
        management. Additionally, you can select the fee payment method to
        control how transaction fees are handled.


        #### Usage Guidelines

        - Supports payouts to over 180 countries in 30+ currencies, including
        CNY payouts in Mainland China.

        - Sub-accounts for POBO transactions must be created in advance, and the
        account status must be active.

        - To enable POBO mode, include the `x-on-behalf-of` parameter in the
        request header and specify the sub-account ID used for the payout. The
        beneficiary will see the customized payer name instead of the actual
        paying entity.

        - Users can select the fee charge type by `fee_paid_by` parameter to
        determine who covers transaction costs:
          1. `SHARED` – Transaction fees are split between payer and recipient; payer pays sending bank fees while recipient pays receiving bank fees.
          2. `OURS` – All transaction fees, including intermediary bank charges, are paid by the payer.
        - There are two ways to specify the beneficiary:
          1. Using `beneficiary_id` – If the beneficiary has already been created, provide the `beneficiary_id` to reference an existing beneficiary.
          2. Providing full beneficiary details – If the beneficiary has not been created before, include the full beneficiary information in the request. In this case, do not pass `beneficiary_id`.

          **Note**: A beneficiary will be created when full details are provided. For any future payouts to the same beneficiary, you should pass the corresponding `beneficiary_id`, not the full details of beneficiary.

        - If you intend to make cross-currency payouts, you can refer to the
        [Cross-Currency
        Guide](/global-account/v1.6/guide/cross-currency-payout-guide) for
        details and examples.
      operationId: create-payout
      parameters:
        - in: header
          name: x-on-behalf-of
          schema:
            type: string
          required: false
          description: >-
            The value set to the connected account's ID. If the value is not
            empty, the request parameter `is_payer` will default to `Y`. More
            information at [List Connected
            Accounts](/account-center/v1.6/api-reference/list-connected-accounts)
          example: 18523f72-f4de-4f9c-bb8e-ec7d1c4f32be
        - $ref: '#/components/parameters/XIdempotencyKey'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayoutCreationRequest'
      responses:
        '200':
          headers:
            x-response-id:
              $ref: '#/components/headers/XResponseId'
          description: Payout creation successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutCreationResponse'
                title: PayoutCreationResponse
      security:
        - XAuthToken: []
components:
  parameters:
    XIdempotencyKey:
      in: header
      name: x-idempotency-key
      schema:
        type: string
        format: uuid
      required: true
      description: >-
        A unique identifier (UUID) used to maintain operation idempotency,
        ensuring that repeated executions of the same operation do not result in
        unintended effects or duplication. It helps preserve data consistency in
        the face of network errors, retries, or failures.
      example: 2adesf8e-9d63-44bc-b975-9b6ae3440dde
  schemas:
    PayoutCreationRequest:
      type: object
      required:
        - currency
        - amount
        - purpose_code
        - payout_reference
        - fee_paid_by
        - payout_date
      properties:
        currency:
          $ref: '#/components/schemas/SourceCurrency'
        amount:
          $ref: '#/components/schemas/Amount'
        quote_id:
          type: string
          example: 784832f7-1f8a-4b08-ac2a-8719b5b2a590
          description: >
            ID of the pre-created quote, obtained via [Create
            Quote](/global-account/v1.6/api-reference/create-quote).  


            Required only for cross-currency payout scenarios. 

            If provided, `payout_currency` and `payout_amount` must also be
            supplied.
        payout_currency:
          type: string
          description: >
            The currency that the beneficiary will receive. Refer to [Supported
            Currencies](/global-account/v1.6/guide/cross-currency-payout-supported-currency-pairs)
            for the complete list of available currencies.


            Required when `quote_id` is specified. Must match the `buy_currency`
            returned in the Create Quote response.
          example: SGD
        payout_amount:
          type: number
          format: decimal
          description: >
            The amount that the beneficiary will receive, in
            `payout_currency`.  


            Required when `quote_id` is specified. Must match the `buy_amount`
            returned in the Create Quote response.
          example: 100
        purpose_code:
          $ref: '#/components/schemas/PurposeCode'
        payout_reference:
          $ref: '#/components/schemas/PayoutReference'
        fee_paid_by:
          $ref: '#/components/schemas/FeePaidBy'
        payout_date:
          $ref: '#/components/schemas/PayoutDate'
        beneficiary_id:
          type: string
          format: uuid
          example: b3d9d2d5-4c12-4946-a09d-953e82sed2b0
          description: >-
            Universally unique identifier (UUID v4) of the beneficiary, This may
            be provided in place of the beneficiary section and should be empty
            if the beneficiary fields are provided, and vice versa.
        beneficiary:
          $ref: '#/components/schemas/BeneficiaryCreationRequest'
          description: >-
            Details for the beneficiary in the payout request. If beneficiary_id
            provided in the payout request then beneficiary should be empty.
        is_payer:
          $ref: '#/components/schemas/IsPayer'
        payer_id:
          $ref: '#/components/schemas/CreationPayerId'
        documentation:
          type: array
          description: >
            Supporting documents related to this payout.


            - **General**: Optional field for attaching files relevant to the
            payout.  

            - **Mandatory case**: When
            `beneficiary.bank_details.account_currency_code = INR` and
            `clearing_system = IFSC`, an **invoice document** must be uploaded
            via the `documentation` field.
          items:
            $ref: '#/components/schemas/PayoutDocumentationItem'
            type: object
    PayoutCreationResponse:
      type: object
      properties:
        payout_id:
          $ref: '#/components/schemas/PayoutId'
        short_reference_id:
          $ref: '#/components/schemas/ShortReferenceId'
        payout_status:
          $ref: '#/components/schemas/PayoutStatus'
    SourceCurrency:
      type: string
      example: USD
      description: |
        The currency that the payer will send out.  
      maxLength: 3
      minLength: 3
    Amount:
      type: string
      example: '1000.00'
      description: |
        The amount that the payer will send out, in `currency`.
    PurposeCode:
      type: string
      example: AUDIO_VISUAL_SERVICES
      description: |
        Purpose code of payout and must be one of: 
          * `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.
    PayoutReference:
      type: string
      maxLength: 100
      example: '026073150'
      description: >
        Bank payment reference displayed in the beneficiary's bank transaction
        records. Sent to the recipient (e.g. For Further Credit, For Benefit of,
        or a custom message). aka Payment reference in Dashboard.


        - **SWIFT payments**: Must comply with the regex `/^[a-zA-Z0-9/-?:().'+,
        ]+$/`.  
          Allowed characters: English letters, digits, spaces, and the following special symbols: `- / ? : ( ) . ' + ,`.  
        - **LOCAL payments**: When `payment_method = LOCAL` and
        `account_currency_code` is not CNH or SGD, no input format validation is
        applied.
    FeePaidBy:
      type: string
      example: SHARED
      description: >
        The charge type of payment fee. Will only be effective and required when
        `payment_method = SWIFT`.


        - `SHARED`: Transaction fees are split between payer and recipient;
        payer pays sending bank fees while recipient pays receiving bank fees.
        Available for SWIFT payouts when the payer is a company and the payer's
        country is one of the following: SG, VN, HK, or AU.

        - `OURS`: All transaction fees, including intermediary bank charges, are
        paid by the payer.
      enum:
        - SHARED
        - OURS
    PayoutDate:
      type: string
      format: date
      example: '2024-03-01'
      description: >-
        Date of when the system attempt to submit the payment to the
        beneficiary.
    BeneficiaryCreationRequest:
      type: object
      discriminator:
        propertyName: entity_type
        mapping:
          INDIVIDUAL:
            $ref: '#/components/schemas/IndividualBeneficiaryCreation'
          COMPANY:
            $ref: '#/components/schemas/CompanyBeneficiaryCreation'
      properties:
        entity_type:
          type: string
          description: The type of beneficiary entity.
      oneOf:
        - $ref: '#/components/schemas/CompanyBeneficiaryCreation'
        - $ref: '#/components/schemas/IndividualBeneficiaryCreation'
    IsPayer:
      type: string
      example: 'N'
      description: >
        **Important Notice:**

        **This field is scheduled to be deprecated in the next version. It is
        recommended to avoid using this field in new development.**

        Whether the current user is a payer. One of Y, N
    CreationPayerId:
      type: string
      example: d36384c8-5df1-4ede-b054-804578601ae7
      format: uuid
      description: >
        **Important Notice:**

        **This field is scheduled to be deprecated in the next version. It is
        recommended to avoid using this field in new development.**

        Unique identifier of the payer. If `is_payer` is `Y`, `payer_id` is
        empty, if `is_payer` is `N`, payer_id is queried from this interface Get
        list of payers. 
    PayoutDocumentationItem:
      type: object
      properties:
        file:
          type: string
          format: base64-encoded
          example: >-
            data:image/png;base64,TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4=
          description: >-
            Must start with a prefix like "data:image/jpeg;base64," followed by
            the actual base64-encoded.
        file_id:
          type: string
          format: uuid
          example: 5135e6cc-28b6-4889-81dc-3b86a09e1395
          description: >-
            The file ID of the document, file ID is generated by file upload
            API.
    PayoutId:
      type: string
      format: uuid
      example: b3d9d2d5-4c12-4946-a09d-953e82sed2b0
      description: Unique identifier for the payout.
    ShortReferenceId:
      type: string
      example: P220406-LLCVLRM
      description: The reference generated by the system to identify the entity.
    PayoutStatus:
      type: string
      description: >
        The payout's status.


        - `READY_TO_SEND`: The payout has been validated and is ready for
        processing.

        - `PENDING`: The payout is currently being processed by the system.

        - `REJECTED`: The payout was rejected due to validation or compliance
        requirements not being met.

        - `FAILED`: The payout process encountered an error and could not be
        completed.

        - `COMPLETED`: The payout has been successfully processed and funds have
        been transferred.
      enum:
        - READY_TO_SEND
        - PENDING
        - REJECTED
        - FAILED
        - COMPLETED
    IndividualBeneficiaryCreation:
      title: INDIVIDUAL
      type: object
      required:
        - entity_type
        - first_name
        - last_name
        - payment_method
        - bank_details
        - address
      properties:
        email:
          $ref: '#/components/schemas/BeneficiaryEmail'
        entity_type:
          $ref: '#/components/schemas/IndividualEntityType'
        payment_method:
          $ref: '#/components/schemas/PaymentMethod'
        nickname:
          $ref: '#/components/schemas/BeneficiaryNickname'
        first_name:
          $ref: '#/components/schemas/FirstName'
        last_name:
          $ref: '#/components/schemas/LastName'
        id_number:
          $ref: '#/components/schemas/BeneficiaryIdNumber'
        bank_details:
          $ref: '#/components/schemas/BeneficiaryBankDetails'
        address:
          $ref: '#/components/schemas/BeneficiaryAddress'
        additional_info:
          $ref: '#/components/schemas/BeneficiaryAdditionalInfo'
    CompanyBeneficiaryCreation:
      title: COMPANY
      type: object
      required:
        - entity_type
        - company_name
        - payment_method
        - bank_details
        - address
      properties:
        email:
          $ref: '#/components/schemas/BeneficiaryEmail'
        entity_type:
          $ref: '#/components/schemas/CompanyEntityType'
        company_name:
          $ref: '#/components/schemas/BeneficiaryCompanyName'
        payment_method:
          $ref: '#/components/schemas/PaymentMethod'
        nickname:
          $ref: '#/components/schemas/BeneficiaryNickname'
        bank_details:
          $ref: '#/components/schemas/BeneficiaryBankDetails'
        address:
          $ref: '#/components/schemas/BeneficiaryAddress'
        additional_info:
          $ref: '#/components/schemas/BeneficiaryAdditionalInfo'
    BeneficiaryEmail:
      type: string
      example: example@uqpay.com
      description: Email address of the beneficiary.
    IndividualEntityType:
      type: string
      example: INDIVIDUAL
      default: INDIVIDUAL
    PaymentMethod:
      type: string
      example: LOCAL
      description: >
        The payment method needs to be specified to ensure that accurate banking
        details are captured and validated for the specified payment method.


        - `LOCAL`: Payment processed through domestic payment networks with
        local clearing systems.

        - `SWIFT`: International payment processed through the SWIFT network for
        cross-border transfers.
      enum:
        - LOCAL
        - SWIFT
    BeneficiaryNickname:
      type: string
      example: John Doe
      description: Nickname of the beneficiary.
      maxLength: 120
    FirstName:
      type: string
      example: John
      description: >
        First name of the beneficiary, only exist when the entity_type is
        INDIVIDUAL.


        - When `payment_method = SWIFT`:  
          * Only English letters, numbers, special characters (half-width format), and spaces can be included.  
          * Allowed special characters: `-_().,@#~ ! $ % ^ & * + = { } [ ] \ | : " ' < > ? /・……`  

        - When `payment_method = LOCAL`:  
          * No strict validation rules apply, local language characters are supported.

        - No need to pass this field when `bank_details.bank_country_code = SG`
        & `bank_details.account_currency_code = SGD` 
      maxLength: 45
      pattern: ^[a-zA-Z0-9 -_().,@#~!$%^&*+={}\|:"'<>?/・……]*$
    LastName:
      type: string
      example: Doe
      description: >
        Last name of the beneficiary, only exist when the entity_type is
        INDIVIDUAL.


        - When `payment_method = SWIFT`:  
          * Only English letters, numbers, special characters (half-width format), and spaces can be included.  
          * Allowed special characters: `-_().,@#~ ! $ % ^ & * + = { } [ ] \ | : " ' < > ? /・……`  

        - When `payment_method = LOCAL`:  
          * No strict validation rules apply, local language characters are supported.

        - No need to pass this field when `bank_details.bank_country_code = SG`
        & `bank_details.account_currency_code = SGD` 
      maxLength: 45
      pattern: ^[a-zA-Z0-9 -_().,@#~!$%^&*+={}\|:"'<>?/・……]*$
    BeneficiaryIdNumber:
      type: string
      example: '110101199001011234'
      description: >
        The identification number of the individual beneficiary.  

        Mandatory when the beneficiary is a Mainland China resident and the
        following conditions are met:  

        - `bank_details.account_currency_code` is `CNH`  

        - `payment_method` is `LOCAL`
    BeneficiaryBankDetails:
      type: object
      required:
        - bank_name
        - bank_address
        - bank_country_code
        - account_holder
        - account_currency_code
        - clearing_system
        - swift_code
      properties:
        bank_name:
          $ref: '#/components/schemas/BankName'
        bank_address:
          $ref: '#/components/schemas/BankAddress'
        bank_country_code:
          $ref: '#/components/schemas/CountryCode'
        account_holder:
          $ref: '#/components/schemas/AccountHolder'
        account_currency_code:
          $ref: '#/components/schemas/Currency'
        account_number:
          $ref: '#/components/schemas/AccountNumber'
        iban:
          $ref: '#/components/schemas/Iban'
        swift_code:
          $ref: '#/components/schemas/SwiftCode'
        clearing_system:
          $ref: '#/components/schemas/ClearingSystem'
        routing_code_type1:
          $ref: '#/components/schemas/RoutingCodeType1'
        routing_code_value1:
          $ref: '#/components/schemas/RoutingCodeValue1'
        routing_code_type2:
          $ref: '#/components/schemas/RoutingCodeType2'
        routing_code_value2:
          $ref: '#/components/schemas/RoutingCodeValue2'
    BeneficiaryAddress:
      type: object
      required:
        - country
        - city
        - street_address
        - postal_code
        - state
      description: >
        Address of the beneficiary.


        - No need to pass this field when `bank_details.bank_country_code = SG`
        & `bank_details.account_currency_code = SGD` 
      properties:
        country:
          $ref: '#/components/schemas/CountryCode'
        nationality:
          $ref: '#/components/schemas/BeneficiaryNationality'
        city:
          $ref: '#/components/schemas/City'
        street_address:
          $ref: '#/components/schemas/StreetAddress'
        postal_code:
          $ref: '#/components/schemas/PostalCode'
        state:
          $ref: '#/components/schemas/State'
    BeneficiaryAdditionalInfo:
      type: object
      description: |
        Additional information for beneficiaries.
      properties:
        organization_code:
          $ref: '#/components/schemas/OrganizationCode'
        proxy_id:
          $ref: '#/components/schemas/ProxyId'
        id_type:
          type: string
          example: PASSPORT
          description: >
            Identification document type for individual beneficiaries. 


            - Required when bank_details.account_currency_code = COP &
            entity_type = INDIVIDUAL.
          enum:
            - PASSPORT
            - NATIONAL_ID
            - DRIVERS_LICENSE
        id_number:
          type: string
          example: AB1234567
          description: >
            Identification number for individual beneficiaries. 


            - Required when bank_details.account_currency_code = COP &
            entity_type = INDIVIDUAL.
        tax_id:
          type: string
          example: '123456789'
          description: >
            Tax identification number for company beneficiaries. 


            - Required when bank_details.account_currency_code = COP &
            entity_type = COMPANY.
        msisdn:
          type: string
          example: '+65111111'
          description: >
            Mobile phone number in international format with country code. 


            - Format: +[country_code][phone_number], e.g., +65111111. 

            - Required when bank_details.account_currency_code = COP.

            - Required when bank_details.account_currency_code = HKD &
            clearing_system = LOCAL
    CompanyEntityType:
      type: string
      example: COMPANY
      default: COMPANY
    BeneficiaryCompanyName:
      type: string
      example: UQPAY TECHNOLOGY SG PTE LTD
      description: >
        Company name of the beneficiary, only exist when the entity_type is
        COMPANY.


        - When `payment_method = SWIFT`:  
          * Only English letters, numbers, special characters (half-width format), and spaces can be included.  
          * Allowed special characters: `-_().,@#~ ! $ % ^ & * + = { } [ ] \ | : " ' < > ? /・……`  

        - When `payment_method = LOCAL`:  
          * No strict validation rules apply, local language characters are supported.

        - No need to pass this field when `bank_details.bank_country_code = SG`
        & `bank_details.account_currency_code = SGD` 

        - When `bank_country_code = CN` & `account_currency_code = CNH` &
        `payment_method = LOCAL` & `entity_type = COMPANY`, Chinese characters
        and Chinese parentheses `（）` are supported.
      maxLength: 120
      pattern: ^[a-zA-Z0-9 -_().,@#~!$%^&*+={}\|:"'<>?/・……]*$
    BankName:
      type: string
      example: Bank of America
      description: Name of the bank.
      maxLength: 240
    BankAddress:
      type: string
      example: 123 Main St
      description: Address of the bank.
      maxLength: 240
    CountryCode:
      type: string
      example: SG
      description: >-
        Two-letter country code [ISO 3166-1
        alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
      maxLength: 2
      minLength: 2
    AccountHolder:
      type: string
      example: John Doe
      description: >
        Account holder name of the beneficiary's bank account.


        - When `payment_method = SWIFT`:  
          * Only English letters, numbers, special characters (half-width format), and spaces can be included.  
          * Allowed special characters: `-_().,@#~ ! $ % ^ & * + = { } [ ] \ | : " ' < > ? /・……`  

        - When `payment_method = LOCAL`:  
          * No strict validation rules apply, local language characters are supported.


        - When `entity_type = INDIVIDUAL`, `bank_details.bank_country_code =
        SG`, and `bank_details.account_currency_code = SGD`, another validation
        rules apply:
          * `account_holder` must contain only English alphabetic characters (A–Z, a–z) and spaces.  
          * Length must be between 2 and 140 characters.  
          * At least one space is required to separate first name and last name. 
        - If the `bank_country_code = CN`, `account_currency_code = CNH`, and
        `payment_method = LOCAL` please provide the account holder name in
        **Chinese characters**, as required by local banks.
          * Furthermore, when `entity_type = COMPANY`, Chinese parentheses `（）` are also supported.
      maxLength: 240
      pattern: ^[a-zA-Z0-9 _().,@#~!$%^&*+={}\|:"'<>?/・……]*$
    Currency:
      type: string
      example: USD
      description: >-
        Currency in which money is held in the beneficiary's bank account.
        Three-letter [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
        code.
      maxLength: 3
      minLength: 3
    AccountNumber:
      type: string
      example: '12345678'
      description: >
        Account number, mostly for non-european countries, either account_number
        or iban should be filled.


        Only English letters (uppercase and lowercase) and digits are allowed;
        dashes or other special characters are not permitted.
      pattern: ^[a-zA-Z0-9]*$
      maxLength: 60
    Iban:
      type: string
      example: GB82 WEST 1234 5698 7654 32
      description: >
        For the following countries/regions, **IBAN is mandatory** (mostly
        applicable to European and some other countries):


        **Country Codes**:

        `AL`, `AD`, `AT`, `AZ`, `BH`, `BY`, `BE`, `BA`, `BR`, `BG`, `CR`, `HR`,
        `CY`, `CZ`, `DK`, `DO`, `EG`, `SV`, `EE`, `FO`, `FI`, `FR`, `GE`, `DE`,
        `GI`, `GR`, `GL`, `GT`, `VA`, `HU`, `IS`, `IQ`, `IE`, `IL`, `IT`, `JO`,
        `KZ`, `XK`, `KW`, `LV`, `LB`, `LY`, `LI`, `LT`, `LU`, `MT`, `MR`, `MU`,
        `MD`, `MC`, `ME`, `NL`, `MK`, `NO`, `PK`, `PS`, `PL`, `PT`, `QA`, `RO`,
        `LC`, `SM`, `ST`, `SA`, `RS`, `SC`, `SK`, `SI`, `ES`, `SD`, `SE`, `CH`,
        `TL`, `TN`, `TR`, `UA`, `AE`, `GB`, `VG`.


        If the beneficiary bank is located in any of the above-listed
        countries/regions, **IBAN must be provided**.
      maxLength: 36
    SwiftCode:
      type: string
      example: WELGBE22
      description: Swift code of the beneficiary's bank account.
      maxLength: 30
    ClearingSystem:
      type: string
      example: GIRO
      description: >
        Specifies the clearing system to be used for the transaction. The
        available options vary by currency and correspond to the local payment
        infrastructure.  


        - **USD:** `ACH`, `Fedwire`, `SWIFT`

        - **SGD:** `FAST`, `GIRO`, `RTGS`, `SWIFT`, `PayNow`

        - **CNH:** `LOCAL`, `SWIFT`

        - **HKD:** `ACH`, `FPS`, `RTGS`, `SWIFT`

        - **EUR:** `LOCAL`, `SWIFT`

        - **CAD:** `EFT`, `Interac e-Transfer`, `SWIFT`, `Bill Payment`

        - **MYR:** `LOCAL`

        - **GBP:** `Faster Payments`, `CHAPS`, `SWIFT`

        - **IDR:** `LOCAL`

        - **JPY:** `LOCAL`, `SWIFT`

        - **NZD:** `Bank Transfer`, `SWIFT`

        - **AUD:** `Bank Transfer`, `SWIFT`
      maxLength: 30
    RoutingCodeType1:
      type: string
      example: aba
      description: |
        Routing code type, must be one of: 
          * `ach` - Required when account_currency_code = "USD" and clearing_system = "ACH".
          * `aba` 
            - Required when account_currency_code = "USD" and clearing_system = "FEDWIRE".
            - Required when account_currency_code = "USD" and clearing_system = "SWIFT" and bank_country_code = "US"
          * `bank_code` - Required when account_currency_code = "CAD" and clearing_system = "EFT" OR account_currency_code = "HKD" and clearing_system = "LOCAL".
          * `sort_code` - Required when account_currency_code = "GBP" and clearing_system = "FASTER PAYMENTS". **Must be exactly 6 digits.**
          * `bsb_code` - Required when account_currency_code = "AUD" and clearing_system = "LOCAL".
          * `ifsc` - Required when account_currency_code = "INR" and clearing_system = "IFSC".
          * `cnaps_number` - Required when account_currency_code = "CNH" and bank_country_code = "CN".
      maxLength: 12
    RoutingCodeValue1:
      type: string
      example: '123456789'
      description: >-
        Routing code value.Routing code for routing_code_type_1.If supplied,
        routing_code_type_1 should also be supplied.
      maxLength: 48
    RoutingCodeType2:
      type: string
      example: ach
      description: |
        Routing code sub type.
          * `branch_code` - Required when account_currency_code = "CAD" and clearing_system = "EFT".
      maxLength: 12
    RoutingCodeValue2:
      type: string
      example: '123456789'
      description: >-
        Routing code sub type value.Routing code for routing_code_type_2.If
        supplied, routing_code_type_2 should also be supplied.
      maxLength: 48
    BeneficiaryNationality:
      type: string
      example: SG
      description: |
        Two-letter country code representing nationality of the beneficiary.
      maxLength: 2
      minLength: 2
    City:
      type: string
      example: Singapore
      description: >
        City of the beneficiary.


        For request validation, non-empty values must match
        `^[A-Za-z0-9\s\-_().,:@#~!$%^&*+={}\[\]\\|"'<>?/・……]+$`. This applies to
        all currencies and payment methods.


        Empty strings and omitted fields skip the character-regex check; whether
        the field is required is still determined by the existing required-field
        rules for the endpoint and payout scenario.
      maxLength: 36
      pattern: ^[A-Za-z0-9\s\-_().,:@#~!$%^&*+={}\[\]\\|"'<>?/・……]+$
    StreetAddress:
      type: string
      example: 123 Main St
      description: >
        Street of the beneficiary.


        For request validation, non-empty values must match
        `^[A-Za-z0-9\s\-_().,:@#~!$%^&*+={}\[\]\\|"'<>?/・……]+$`. This applies to
        all currencies and payment methods.


        Empty strings and omitted fields skip the character-regex check; whether
        the field is required is still determined by the existing required-field
        rules for the endpoint and payout scenario.
      maxLength: 255
      pattern: ^[A-Za-z0-9\s\-_().,:@#~!$%^&*+={}\[\]\\|"'<>?/・……]+$
    PostalCode:
      type: string
      example: '123456'
      description: Postal code of the beneficiary.
      maxLength: 12
    State:
      type: string
      example: CA
      description: >
        State or province of the beneficiary.


        For request validation, non-empty values must match
        `^[A-Za-z0-9\s\-_().,:@#~!$%^&*+={}\[\]\\|"'<>?/・……]+$`. This applies to
        all currencies and payment methods.


        Empty strings and omitted fields skip the character-regex check; whether
        the field is required is still determined by the existing required-field
        rules for the endpoint and payout scenario.
      maxLength: 96
      pattern: ^[A-Za-z0-9\s\-_().,:@#~!$%^&*+={}\[\]\\|"'<>?/・……]+$
    OrganizationCode:
      type: string
      example: 91210106MA0P46BWXY
      description: >-
        The Unified Social Credit Identifier assigned to the organization. This
        field is for companies registered in Mainland China.
    ProxyId:
      type: string
      description: >-
        PayNow proxy identifier (SGD). Supports UEN, phone number, or VPA as the
        value.
  headers:
    XResponseId:
      description: >-
        Universally unique identifier (UUID v4) for the response. Helpful for
        identifying a request when communicating with UQPAY support.
      schema:
        type: string
        format: uuid
        example: 2adba88e-9d63-44bc-b975-9b6ae3440dde
  securitySchemes:
    XAuthToken:
      type: apiKey
      in: header
      name: x-auth-token
      description: The API token for login provided by UQPay.

````