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

# Retrieve Virtual Account Application

> Returns the latest details of an application owned by the authenticated account. For a sub-account application, pass the same account ID in `x-on-behalf-of`.

Use `application_id` to identify the application and `public_version` to ignore older responses or webhook events. A missing application and an application owned by another account return the same HTTP `400` error.

See [Integrate Virtual Accounts with the API](/global-account/v1.6/guide/virtual-account-api-lifecycle) for polling, webhook recovery, and status handling.




## OpenAPI

````yaml /global-account/v1.6/banking.yaml get /v1/virtual/applications/{application_id}
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/virtual/applications/{application_id}:
    get:
      tags:
        - Virtual Accounts
      summary: Retrieve Virtual Account Application
      description: >
        Returns the latest details of an application owned by the authenticated
        account. For a sub-account application, pass the same account ID in
        `x-on-behalf-of`.


        Use `application_id` to identify the application and `public_version` to
        ignore older responses or webhook events. A missing application and an
        application owned by another account return the same HTTP `400` error.


        See [Integrate Virtual Accounts with the
        API](/global-account/v1.6/guide/virtual-account-api-lifecycle) for
        polling, webhook recovery, and status handling.
      operationId: retrieve-virtual-account-application
      parameters:
        - $ref: '#/components/parameters/XOnBehalfOf'
        - $ref: '#/components/parameters/VirtualAccountApplicationId'
      responses:
        '200':
          description: OK - Virtual Account application returned successfully.
          headers:
            x-response-id:
              $ref: '#/components/headers/XResponseId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualAccountApplicationResponse'
                title: RetrieveVirtualAccountApplicationResponse
              examples:
                submitted:
                  summary: Application is still processing
                  value:
                    data:
                      account_id: b1b89684-c2c4-4d54-b8a8-3572727fd120
                      application_id: 550e8400-e29b-41d4-a716-446655440001
                      country: BH
                      currency: EUR
                      direct_id: '0'
                      public_version: 1
                      results:
                        - payment_method: SWIFT
                          status: SUBMITTED
                          virtual_accounts: []
                          error: null
                      status: SUBMITTED
                completed:
                  summary: Virtual Account bank details are ready
                  value:
                    data:
                      account_id: b1b89684-c2c4-4d54-b8a8-3572727fd120
                      application_id: 7bd8df2d-4975-4c1a-a956-66af2a6dbed8
                      country: BH
                      currency: GBP
                      direct_id: '0'
                      public_version: 2
                      results:
                        - payment_method: SWIFT
                          status: COMPLETED
                          virtual_accounts:
                            - account_bank_id: va-bank-detail-001
                              account_holder: Example Merchant Ltd.
                              account_number: BH00SGBD00000000000000
                              country_code: BH
                              currency: GBP
                              bank_name: Singapore Gulf Bank
                              bank_address: Manama, Bahrain
                              clearing_system:
                                type: bic_swift
                                value: SGBDBHB2XXX
                              status: ACTIVE
                              close_reason: ''
                          error: null
                      status: COMPLETED
                closed:
                  summary: All issued Virtual Accounts are closed
                  value:
                    data:
                      account_id: b1b89684-c2c4-4d54-b8a8-3572727fd120
                      application_id: 8f05cb15-b3ea-4c8f-b10d-4376e6355037
                      country: BH
                      currency: GBP
                      direct_id: '0'
                      public_version: 3
                      results:
                        - payment_method: SWIFT
                          status: CLOSED
                          virtual_accounts:
                            - account_bank_id: va-bank-detail-001
                              account_holder: Example Merchant Ltd.
                              account_number: BH00SGBD00000000000000
                              country_code: BH
                              currency: GBP
                              bank_name: Singapore Gulf Bank
                              bank_address: Manama, Bahrain
                              clearing_system:
                                type: bic_swift
                                value: SGBDBHB2XXX
                              status: CLOSED
                              close_reason: ''
                          error: null
                      status: CLOSED
        '400':
          description: >-
            Bad Request - The application does not exist or does not belong to
            the authenticated account.
          headers:
            x-response-id:
              $ref: '#/components/headers/XResponseId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualAccountApplicationErrorResponse'
                title: VirtualAccountApplicationNotFound
              example:
                type: not_found
                code: virtual_account_application_not_found
                message: Virtual account application not found
      security:
        - XAuthToken: []
components:
  parameters:
    XOnBehalfOf:
      in: header
      name: x-on-behalf-of
      schema:
        type: string
      required: false
      description: >
        Specifies the sub-account on whose behalf the request is made. This
        should be set to the `account_id`, which can be retrieved via the [List
        Connected
        Accounts](/account-center/v1.6/api-reference/list-connected-accounts-1).
        If omitted or empty, the request is executed using the master account.

        More information at [Connected
        Accounts](/account-center/v1.6/guide/connected-accounts).
      example: 18523f72-f4de-4f9c-bb8e-ec7d1c4f32be
    VirtualAccountApplicationId:
      name: application_id
      in: path
      required: true
      description: >-
        Application identifier returned by Create Virtual Account and
        application webhook events.
      schema:
        type: string
        format: uuid
      example: 550e8400-e29b-41d4-a716-446655440001
  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
  schemas:
    VirtualAccountApplicationResponse:
      type: object
      additionalProperties: false
      required:
        - data
      properties:
        data:
          $ref: '#/components/schemas/VirtualAccountApplication'
    VirtualAccountApplicationErrorResponse:
      type: object
      additionalProperties: false
      required:
        - type
        - code
        - message
      properties:
        type:
          type: string
          description: Broad error category for classification and logging.
          example: invalid_request_error
        code:
          type: string
          description: Stable error identifier to use in programmatic handling.
          example: invalid_parameter
        message:
          type: string
          description: >-
            Human-readable explanation for troubleshooting. Do not use this text
            as a programmatic identifier.
          example: country must be a valid ISO-2 code
    VirtualAccountApplication:
      type: object
      additionalProperties: false
      required:
        - account_id
        - application_id
        - country
        - currency
        - direct_id
        - public_version
        - results
        - status
      properties:
        account_id:
          type: string
          format: uuid
          description: >-
            Account that owns the application. When `x-on-behalf-of` was used,
            this is that connected account; otherwise it is the main account.
          example: b1b89684-c2c4-4d54-b8a8-3572727fd120
        application_id:
          type: string
          format: uuid
          description: >-
            Identifier for this application. Store it after Create and use it
            for Retrieve and webhook correlation.
          example: 550e8400-e29b-41d4-a716-446655440001
        country:
          type: string
          description: >-
            Two-letter country code submitted in the Create request. Individual
            bank details also include their own `country_code`.
          example: BH
        currency:
          type: string
          description: Three-letter currency code submitted in the Create request.
          example: EUR
        direct_id:
          type: string
          description: >-
            Main-account relationship for `account_id`. It is `"0"` when
            `account_id` is the main account; otherwise it is the main account
            ID.
          example: '0'
        public_version:
          type: integer
          format: int64
          minimum: 1
          description: >-
            Version of the returned application data. It starts at `1` and
            increases when the returned data changes. For the same
            `application_id`, keep the response or event with the highest value.
          example: 1
        results:
          type: array
          minItems: 1
          maxItems: 2
          description: >-
            One entry for each evaluated receiving method. Process every entry
            independently and identify it by `payment_method`. When both methods
            are present, `LOCAL` appears before `SWIFT`.
          items:
            $ref: '#/components/schemas/VirtualAccountApplicationResult'
        status:
          type: string
          enum:
            - SUBMITTED
            - PARTIALLY_COMPLETED
            - COMPLETED
            - FAILED
            - CLOSED
          description: >-
            Overall application status. Use it to track the application, but
            inspect every result and bank-detail status before deciding what is
            usable. See the integration guide for each status meaning.
          example: SUBMITTED
    VirtualAccountApplicationResult:
      type: object
      additionalProperties: false
      required:
        - payment_method
        - status
        - virtual_accounts
        - error
      properties:
        payment_method:
          type: string
          enum:
            - LOCAL
            - SWIFT
          description: >-
            Receiving method represented by this result. `LOCAL` uses a
            supported domestic clearing network; `SWIFT` uses the SWIFT network.
          example: SWIFT
        status:
          type: string
          enum:
            - SUBMITTED
            - COMPLETED
            - FAILED
            - SKIPPED
            - CLOSED
          description: >-
            Status of this receiving method. Use bank details only when this
            value is `COMPLETED` and the individual bank-detail status is
            `ACTIVE`. See the integration guide for all status actions.
          example: SUBMITTED
        virtual_accounts:
          type: array
          description: >-
            Bank details issued for this receiving method. An empty array means
            there are no issued details for this result. Use only records whose
            `status` is `ACTIVE`.
          items:
            $ref: '#/components/schemas/VirtualAccountApplicationBankDetail'
        error:
          type: object
          nullable: true
          additionalProperties: false
          required:
            - code
            - message
          description: >-
            Error for this receiving method when it is skipped or fails;
            otherwise `null`. Use `code` for programmatic handling.
          properties:
            code:
              type: string
              description: >-
                Stable code for programmatic handling. See the integration guide
                for supported codes and recommended actions.
              example: VA_METHOD_NOT_SUPPORTED
            message:
              type: string
              description: >-
                Human-readable explanation for troubleshooting. Do not use this
                text as a programmatic identifier.
              example: LOCAL is not supported for the requested country and currency
    VirtualAccountApplicationBankDetail:
      type: object
      additionalProperties: false
      required:
        - account_bank_id
        - account_holder
        - account_number
        - country_code
        - currency
        - bank_name
        - bank_address
        - clearing_system
        - status
        - close_reason
      properties:
        account_bank_id:
          type: string
          description: >-
            Stable identifier for this issued bank-detail record. Treat the
            value as an opaque string and store it to correlate later changes.
          example: va-bank-detail-001
        account_holder:
          type: string
          description: Account holder name to show to the payer exactly as returned.
          example: John Doe
        account_number:
          type: string
          description: >-
            Account number or IBAN the payer must use for the transfer. Preserve
            formatting and leading zeros.
          example: '12345678'
        country_code:
          type: string
          description: >-
            Two-letter country code of this issued bank account. Use this
            returned value in payment instructions rather than assuming it from
            the application.
          example: SG
        currency:
          type: string
          description: >-
            Three-letter currency code this bank detail can receive. Instruct
            the payer to send only this currency.
          example: USD
        bank_name:
          type: string
          description: Bank name to include in payment instructions.
          example: ABC Bank
        bank_address:
          type: string
          description: >-
            Bank address to include when required by the payer's bank or
            transfer form.
          example: 810 Seventh Avenue, New York, NY 10019, US
        clearing_system:
          type: object
          additionalProperties: false
          required:
            - type
            - value
          description: >-
            Routing identifier required for this bank detail. Use `type` and
            `value` together and preserve both values exactly as returned.
          properties:
            type:
              type: string
              description: >-
                Format or network of the routing identifier, such as
                `bic_swift`.
              example: bic_swift
            value:
              type: string
              description: >-
                Routing identifier corresponding to `type`, such as a BIC/SWIFT
                code or local clearing code.
              example: TCCLGB3L
        status:
          type: string
          enum:
            - ACTIVE
            - CLOSED
          description: >-
            Whether this bank detail can be used. `ACTIVE` is available for new
            payment instructions; `CLOSED` must no longer be presented or used.
          example: ACTIVE
        close_reason:
          type: string
          example: ''
          description: >-
            Always-present string. It is always `""` unless `status` is
            `CLOSED`. When closed, it contains the recorded closure reason if
            one is available; otherwise it remains `""`. Use `status`, not this
            field, to determine whether the bank detail is closed.
  securitySchemes:
    XAuthToken:
      type: apiKey
      in: header
      name: x-auth-token
      description: The API token for login provided by UQPAY.

````