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

# Confirm a PaymentIntent

> Confirms a payment intent for processing



## OpenAPI

````yaml /global-acquiring/v1.6/payment.yaml post /v2/payment_intents/{id}/confirm
openapi: 3.0.2
info:
  title: Payment API
  version: 0.0.1
  description: >
    UQPAY Payment API allows you to accept payments, manage transactions, and
    process refunds and payouts.


    ## What you can do

    - Create and confirm payment intents using cards, digital wallets, and local
    payment methods

    - Process full and partial refunds

    - Manage customers and saved payment methods

    - Create payouts and bank account records

    - Query payment attempts, balances, and transaction history


    ## Authentication

    All requests require a valid auth token obtained via the [Access
    Token](/account-center/v1.6/api-reference/access-token) endpoint. Include
    the token in the `x-auth-token` header.


    ## Idempotency

    POST requests support the `x-idempotency-key` header to safely retry without
    creating duplicate resources.
  contact:
    name: UQPAY Support Team
    url: https://www.uqpay.com/support
    email: support@uqpay.com
  license:
    name: Proprietary
    url: https://www.uqpay.com/legal/api-terms
  termsOfService: https://www.uqpay.com/legal/terms
servers:
  - url: https://api-sandbox.uqpaytech.com/api
    description: Sandbox base URL.
  - url: https://api.uqpay.com/api
    description: Production base URL.
security:
  - XAuthToken: []
tags:
  - name: Customers
    description: >-
      Create and manage customer profiles. Customer objects store payment
      methods and billing details for use across multiple payments.
  - name: Payment Intents
    description: >-
      A PaymentIntent guides you through the process of collecting a payment
      from your customer. We recommend that you create exactly one PaymentIntent
      for each order or customer session in your system. You can reference the
      PaymentIntent later to see the history of payment attempts for a
      particular session.
  - name: Payment Attempts
    description: >-
      A PaymentAttempt object is created whenever a customer makes a payment
      with the chosen PaymentMethod. This API allows you to find out how your
      customer paid for your order.
  - name: Payment Refunds
    description: >
      You can create multiple partial refunds until reaching the original
      transaction amount. Each refund generates a unique record and undergoes
      automatic validation against available balances.

      A PaymentIntent guides you through the process of collecting a payment
      from your customer. We recommend that you create exactly one PaymentIntent
      for each order or customer session in your system. You can reference the
      PaymentIntent later to see the history of payment attempts for a
      particular session.
  - name: Payment Balances
    description: >
      Payment balance management allows you to query account balances for
      different currencies. You can retrieve individual currency balances or all
      currency balances with pagination support.
  - name: Payment Payouts
    description: >
      Payout management allows you to create and manage payout orders for fund
      transfers. You can create payouts, query individual payouts, and list all
      payouts with filtering and pagination support.
  - name: Terminal Management
    description: Terminal management APIs for POS device registration and key management.
  - name: Bank Accounts
    description: >
      Bank account management APIs for settlement accounts. Create, update,
      retrieve, and list bank accounts used for receiving settlement payments.
paths:
  /v2/payment_intents/{id}/confirm:
    post:
      tags:
        - Payment Intents
      summary: Confirm a PaymentIntent
      description: Confirms a payment intent for processing
      operationId: confirm-payment-intent
      parameters:
        - $ref: '#/components/parameters/PaymentIntentId'
        - $ref: '#/components/parameters/XOnBehalfOf'
        - $ref: '#/components/parameters/XIdempotencyKey'
        - $ref: '#/components/parameters/XClientID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentIntentConfirmRequest'
      responses:
        '200':
          description: Payment intent confirmed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentIntentCreateResponse'
components:
  parameters:
    PaymentIntentId:
      name: id
      in: path
      required: true
      description: The unique ID of a payment intent.
      schema:
        type: string
        example: PI1925112193204883441
    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).
        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
    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
    XClientID:
      in: header
      name: x-client-id
      schema:
        type: string
      required: true
      description: The API client id generated by UQPAY
      example: Up1HIsjiETgON9PMGPXLy7
  schemas:
    PaymentIntentConfirmRequest:
      type: object
      properties:
        payment_method:
          $ref: '#/components/schemas/PaymentMethod'
        ip_address:
          $ref: '#/components/schemas/IpAddress'
        browser_info:
          $ref: '#/components/schemas/BrowserInfo'
        return_url:
          $ref: '#/components/schemas/ReturnUrl'
    PaymentIntentCreateResponse:
      type: object
      required:
        - payment_intent_id
        - amount
        - currency
        - intent_status
      properties:
        payment_intent_id:
          type: string
          example: b1c2d3e4-f5a6-b7c8-d9e0-f1a2b3c4d5e6
          description: Unique identifier for the PaymentIntent
          maxLength: 36
        amount:
          $ref: '#/components/schemas/Amount'
          example: '10.12'
          description: >-
            Payment amount. This is the order amount you would like to charge
            your customer.
        currency:
          $ref: '#/components/schemas/Currency'
          example: SGD
        description:
          type: string
          description: Descriptor while creating a PaymentIntent.
          maxLength: 255
        available_payment_method_types:
          type: array
          nullable: true
          description: Available payment method types for this PaymentIntent.
          items:
            type: string
        captured_amount:
          $ref: '#/components/schemas/Amount'
          example: '10.12'
          description: Amount that captured from this PaymentIntent.
        customer:
          $ref: '#/components/schemas/CustomerResponse'
          description: >-
            Snapshot of the customer associated with this PaymentIntent.
            Returned when `customer` or `customer_id` was supplied at creation
            time. The customer's unique identifier is exposed at the top level
            as `customer_id`; the `id` field is not included inside this object.
        customer_id:
          type: string
          description: >-
            ID of the customer associated with this PaymentIntent. Empty for
            guest checkout.
          example: cus_asyknf3wlfxhs1s6plamk80i8v
          maxLength: 36
        cancel_time:
          $ref: '#/components/schemas/DateTime'
          description: >-
            Last time at which this PaymentIntent was cancelled. Only present
            when the PaymentIntent was successfully cancelled, i.e. status is
            `CANCELLED`.
        cancellation_reason:
          type: string
          description: Reason for canceling this PaymentIntent.
          example: Order cancelled
        client_secret:
          $ref: '#/components/schemas/ClientSecret'
          example: eyJhbGciOiJI***********ujNdZ1DF9CqWEfF1jphxI
        merchant_order_id:
          $ref: '#/components/schemas/MerchantOrderId'
          example: 1bf70d90-9ed0-48ce-9370-9bd7ef6ab9ee
        metadata:
          $ref: '#/components/schemas/Metadata'
        next_action:
          $ref: '#/components/schemas/NextAction'
        return_url:
          type: string
          description: >-
            The web page URL or application scheme URI to redirect the customer
            after payment authentication.
          example: https://127.0.0.1:8080/api/v1/callback
        create_time:
          $ref: '#/components/schemas/DateTime'
          description: Time at which this PaymentIntent was created.
        complete_time:
          $ref: '#/components/schemas/DateTime'
          description: Time at which this PaymentIntent reached its final state.
        update_time:
          $ref: '#/components/schemas/DateTime'
          description: Last time at which this PaymentIntent was updated or operated on.
        latest_payment_attempt:
          $ref: '#/components/schemas/PaymentAttemptResponse'
          description: Latest PaymentAttempt that was created under the PaymentIntent.
        intent_status:
          $ref: '#/components/schemas/PaymentIntentStatus'
    PaymentMethod:
      type: object
      properties:
        type:
          type: string
      description: >-
        The payment method details to confirm the PaymentIntent. The
        PaymentIntent will be confirmed automatically when `payment_method` is
        set.
      discriminator:
        propertyName: type
        mapping:
          card:
            $ref: '#/components/schemas/CardPaymentMethod'
          card_present:
            $ref: '#/components/schemas/CardPresentMethod'
          applepay:
            $ref: '#/components/schemas/ApplePayPaymentMethod'
          googlepay:
            $ref: '#/components/schemas/GooglePayPaymentMethod'
          alipaycn:
            $ref: '#/components/schemas/AlipayCNPaymentMethod'
          alipayhk:
            $ref: '#/components/schemas/AlipayHkPaymentMethod'
          unionpay:
            $ref: '#/components/schemas/UnionPayPaymentMethod'
          wechatpay:
            $ref: '#/components/schemas/WeChatPayPaymentMethod'
          grabpay:
            $ref: '#/components/schemas/GrabPayPaymentMethod'
          crypto:
            $ref: '#/components/schemas/CryptoPaymentMethod'
          paynow:
            $ref: '#/components/schemas/PayNowPaymentMethod'
          truemoney:
            $ref: '#/components/schemas/TruemoneyPaymentMethod'
          tng:
            $ref: '#/components/schemas/TngPaymentMethod'
          gcash:
            $ref: '#/components/schemas/GCashPaymentMethod'
          dana:
            $ref: '#/components/schemas/DanaPaymentMethod'
          kakaopay:
            $ref: '#/components/schemas/KakaopayPaymentMethod'
          toss:
            $ref: '#/components/schemas/TossPaymentMethod'
          naverpay:
            $ref: '#/components/schemas/NaverpayPaymentMethod'
      oneOf:
        - $ref: '#/components/schemas/CardPaymentMethod'
        - $ref: '#/components/schemas/CardPresentMethod'
        - $ref: '#/components/schemas/ApplePayPaymentMethod'
        - $ref: '#/components/schemas/GooglePayPaymentMethod'
        - $ref: '#/components/schemas/AlipayCNPaymentMethod'
        - $ref: '#/components/schemas/AlipayHkPaymentMethod'
        - $ref: '#/components/schemas/UnionPayPaymentMethod'
        - $ref: '#/components/schemas/WeChatPayPaymentMethod'
        - $ref: '#/components/schemas/GrabPayPaymentMethod'
        - $ref: '#/components/schemas/CryptoPaymentMethod'
        - $ref: '#/components/schemas/PayNowPaymentMethod'
        - $ref: '#/components/schemas/TruemoneyPaymentMethod'
        - $ref: '#/components/schemas/TngPaymentMethod'
        - $ref: '#/components/schemas/GCashPaymentMethod'
        - $ref: '#/components/schemas/DanaPaymentMethod'
        - $ref: '#/components/schemas/KakaopayPaymentMethod'
        - $ref: '#/components/schemas/TossPaymentMethod'
        - $ref: '#/components/schemas/NaverpayPaymentMethod'
    IpAddress:
      type: string
      maxLength: 45
      description: |
        IPv4 or IPv6 address of the device.

        Required when `payment_method.card.three_ds_action=enforce_3ds`.
        Optional otherwise.
      example: 212.121.222.123
    BrowserInfo:
      type: object
      description: |
        Browser information collected for risk and fraud prevention.
        Required when `three_ds_action=enforce_3ds`
      required:
        - accept_header
        - browser
        - language
        - screen_color_depth
        - screen_height
        - screen_width
      properties:
        accept_header:
          type: string
          maxLength: 256
          description: Browser accept header
          example: '*/*'
        browser:
          type: object
          description: Browser specific information
          required:
            - user_agent
          properties:
            java_enabled:
              type: boolean
              description: Whether Java is enabled in browser
            javascript_enabled:
              type: boolean
              description: Whether JavaScript is enabled in browser
            user_agent:
              type: string
              maxLength: 256
              description: Browser user agent string
              example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
        device_id:
          type: string
          maxLength: 36
          description: Unique device identifier
          example: 00000000-000000000000000
        language:
          type: string
          maxLength: 8
          pattern: ^[a-zA-Z]{2}(-[a-zA-Z]{2})?$
          description: ISO language code (e.g. EN) or language-region (e.g. en-US)
          example: en-US
        location:
          type: object
          description: Device geolocation if available
          properties:
            lat:
              type: string
              maxLength: 12
              pattern: ^-?\d{1,3}\.\d+$
              description: Latitude coordinate
              example: '-37.81892'
            lon:
              type: string
              maxLength: 12
              pattern: ^-?\d{1,3}\.\d+$
              description: Longitude coordinate
              example: '144.95913'
        mobile:
          type: object
          description: >-
            Mobile device–specific information.  This object is required when
            the transaction is initiated from a mobile client. For web-based
            integrations, this object should be set to null.
          properties:
            device_model:
              type: string
              maxLength: 46
              description: Mobile device model name
              example: Apple IPHONE 7
            os_type:
              type: string
              enum:
                - IOS
                - ANDROID
              description: Mobile operating system
            os_version:
              type: string
              maxLength: 32
              description: Operating system version
              example: IOS 14.5
        screen_color_depth:
          type: integer
          minimum: 1
          maximum: 48
          description: Screen color depth in bits
          example: 24
        screen_height:
          type: integer
          minimum: 1
          maximum: 9999
          description: Screen height in pixels
          example: 1080
        screen_width:
          type: integer
          minimum: 1
          maximum: 9999
          description: Screen width in pixels
          example: 1920
        timezone:
          type: string
          maxLength: 8
          description: Timezone offset from UTC (e.g. -2 or 8)
          example: '-2'
    ReturnUrl:
      type: string
      maxLength: 1024
      description: >-
        The web page URL or application scheme URI to redirect the customer
        after payment authentication.
    Amount:
      type: string
    Currency:
      type: string
      description: Three-letter currency code
    CustomerResponse:
      type: object
      properties:
        id:
          type: string
          description: Unique customer ID
          example: cus_hkduz3gvz1feg25e87fjcahsxq
        external_customer_id:
          type: string
          description: >-
            Identifier for the customer in your own system, echoed back when
            supplied at creation time.
          example: CUS_1715740800123
          maxLength: 128
        first_name:
          type: string
          description: Customer's first name
          example: John
          maxLength: 64
        last_name:
          type: string
          description: Customer's last name
          example: Doe
          maxLength: 64
        email:
          type: string
          format: email
          description: Customer's email address
          example: john.doe@example.com
          maxLength: 254
        phone_number:
          type: string
          description: Customer's phone number
          example: +1 123456789
          maxLength: 32
        address:
          $ref: '#/components/schemas/Address'
        metadata:
          $ref: '#/components/schemas/Metadata'
        create_time:
          $ref: '#/components/schemas/DateTime'
          description: Last time at which this customer was created.
          example: '2025-03-21T17:17:32+08:00'
        update_time:
          $ref: '#/components/schemas/DateTime'
          description: Last time at which this customer was updated or operated on.
          example: '2025-03-21T17:17:32+08:00'
    DateTime:
      type: string
      format: date/time
      example: '2024-03-01T00:00:00+08:00'
    ClientSecret:
      type: string
      description: >-
        PaymentIntent's client secret for browser or app. Returned by
        PaymentIntent create API or PaymentIntent retrieve API. The provided
        client_secret is valid for 60 minutes.
    MerchantOrderId:
      type: string
      maxLength: 36
      description: >-
        The merchant reference id created in merchant's system that corresponds
        to this PaymentIntent
    Metadata:
      additionalProperties:
        maxLength: 512
        type: string
      example:
        key1: value1
        key2: value2
      description: >-
        Any key-value object. Max length = 512 bytes. This must be valid JSON
        data.
      type: object
    NextAction:
      type: object
      description: >-
        If present, this property tells you what actions you need to take in
        order for your customer to fulfill a payment using the provided source.
      required:
        - type
      properties:
        type:
          type: string
          description: >
            The type of action required to continue the payment.

            - `redirect_to_url`: Redirect the customer to a URL for
            authentication (e.g., 3DS verification or wallet login).

            - `display_qr_code`: Display a QR code for the customer to scan with
            their payment app.

            - `display_bank_details`: Display bank account details for the
            customer to complete a manual bank transfer.

            - `redirect_iframe`: Embed the provided iframe HTML into your page
            to display an inline authentication interface.
          enum:
            - redirect_to_url
            - display_qr_code
            - display_bank_details
            - redirect_iframe
        redirect_to_url:
          type: object
          description: >-
            Contains instructions for authenticating a payment by redirecting
            your customer to another page or application.
          properties:
            url:
              type: string
              format: uri
              description: >-
                The URL you must redirect your customer to in order to
                authenticate the payment.
              example: https://example.checkout-page.com
            return_url:
              type: string
              format: uri
              description: >-
                If the customer does not exit their browser while
                authenticating, they will be redirected to this specified URL
                after completion.
              example: https://example.payment-result-page.com
        redirect_iframe:
          type: object
          description: >-
            Contains instructions for authenticating a payment using an iframe
            embed method. The client needs to embed the returned iframe script
            content into their page to complete the payment authentication flow.
          properties:
            iframe:
              type: string
              format: html
              description: >-
                Complete iframe HTML script content containing the
                authentication page embed code. The client must directly embed
                this script into their page to display the authentication
                interface.
        display_qr_code:
          type: object
          description: The field that contains QR code info.
          properties:
            qr_code_url:
              type: string
              description: >-
                The URL to the hosted WeChat Pay instructions page, which allows
                customers to view the WeChat Pay QR code.
              example: >-
                https://sg-acquiring-bucket-sandbox.s3.ap-southeast-1.amazonaws.com/payment/20250829/qrcode_PA1961262701099356160?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=ASIAY******f987429
            expires_at:
              type: string
              format: date-time
              description: The date (unix timestamp) when the QR code expires.
        display_bank_details:
          type: object
          description: >-
            Contains the bank transfer details necessary for the customer to
            complete the payment.
          properties:
            bank_name:
              type: string
              description: The bank name of the account.
            account_number:
              type: string
              description: The account number.
              example: GB71950018692652646598
            routing_number:
              type: string
              description: The routing number.
              example: '012345678'
    PaymentAttemptResponse:
      type: object
      required:
        - attempt_id
        - amount
        - currency
      properties:
        attempt_id:
          type: string
          description: Unique identifier for the attempt.
          example: 24fc62b4-90d1-42e3-96ab-dd54ccc648b3
        amount:
          $ref: '#/components/schemas/Amount'
          example: '9.98'
          description: Amount of the PaymentAttempt.
        currency:
          $ref: '#/components/schemas/Currency'
          example: SGD
        captured_amount:
          $ref: '#/components/schemas/Amount'
          description: Captured amount.
          example: '0.00'
        refunded_amount:
          $ref: '#/components/schemas/Amount'
          description: Refunded amount.
          example: '0.00'
        create_time:
          $ref: '#/components/schemas/DateTime'
          description: The time at which this PaymentAttempt was created.
          example: '2025-03-21T17:17:32+08:00'
        update_time:
          $ref: '#/components/schemas/DateTime'
          description: Last time at which this PaymentAttempt was updated or operated on.
          example: '2025-03-21T17:17:32+08:00'
        complete_time:
          $ref: '#/components/schemas/DateTime'
          description: Time at which this PaymentAttempt was completed.
        cancellation_reason:
          type: string
          description: Reason for canceling this PaymentIntent.
          example: Order cancelled
        auth_code:
          type: string
          description: >-
            Authorization code returned by the issuer upon successful
            authorization.
          example: A12B3C
        arn:
          type: string
          description: >-
            Acquirer Reference Number (ARN). A 23-digit identifier used for
            cross-institution reconciliation and chargeback tracking.
          example: '74537604221222132710572'
        rrn:
          type: string
          description: >-
            Retrieval Reference Number (RRN). A 12-digit identifier used for
            transaction lookup and customer service queries.
          example: '123456789012'
        advice_code:
          type: string
          description: >
            Issuer advice code indicating the recommended action after a
            decline. Helps merchants implement intelligent retry strategies.


            - `01`: New attempt may succeed. Retry recommended.

            - `02`: Do not retry. Try a different payment method.

            - `03`: Do not retry. Cardholder should contact their issuer.

            - `21`: Cancel all pending authorizations. Card may be compromised.

            - `85`: Do not retry. Issuer will not approve this transaction type.
          enum:
            - '01'
            - '02'
            - '03'
            - '21'
            - '85'
          example: '01'
        authentication_data:
          type: object
          description: Authentication and verification data for this payment attempt.
          properties:
            cvv_result:
              type: string
              description: |
                CVV/CVC verification result returned by the issuer.

                - `M`: Match.
                - `N`: No match.
                - `P`: Not processed.
                - `U`: Unsupported.
              enum:
                - M
                - 'N'
                - P
                - U
            avs_result:
              type: string
              description: >-
                Address Verification System (AVS) result. Indicates whether the
                billing address provided matches the issuer's records.
              example: 'Y'
            three_ds:
              $ref: '#/components/schemas/CardThreeDSResponse'
        payment_method:
          $ref: '#/components/schemas/PaymentMethodResponse'
          description: The payment method details used for this PaymentAttempt.
        failure_code:
          $ref: '#/components/schemas/FailureCode'
        attempt_status:
          type: string
          description: >
            The status of the attempt.

            - `INITIATED`: The payment attempt has been created based on the
            initial request.

            - `AUTHENTICATION_REDIRECTED`: Waiting for the customer to complete
            identity verification, such as 3D Secure or QR code scanning.

            - `PENDING_AUTHORIZATION`: The authorization request has been
            received and is pending a final decision from the payment provider.

            - `AUTHORIZED`: The authorization has been successfully completed.
            Payment will be captured automatically or manually depending on
            configuration.

            - `CAPTURE_REQUESTED`: The capture request has been submitted
            successfully, and the payment is considered complete.

            - `SETTLED`: Funds have been settled from the payment provider and
            received by UQPAY.

            - `SUCCEEDED`: UQPAY has settled funds to your wallet.

            - `CANCELLED`: The payment attempt has been cancelled. Any
            authorized funds, if applicable, will be returned to the customer.

            - `EXPIRED`: The payment attempt was not completed within the
            allowed time window and has expired.

            - `FAILED`: The payment attempt has failed. Please create a new
            PaymentAttempt to retry.
          example: INITIATED
          enum:
            - INITIATED
            - AUTHENTICATION_REDIRECTED
            - PENDING_AUTHORIZATION
            - AUTHORIZED
            - CAPTURE_REQUESTED
            - SETTLED
            - SUCCEEDED
            - CANCELLED
            - EXPIRED
            - FAILED
    PaymentIntentStatus:
      type: string
      description: >
        Status of this PaymentIntent.


        - `REQUIRES_PAYMENT_METHOD`: The PaymentIntent is waiting for the
        confirm request.

        - `REQUIRES_CUSTOMER_ACTION`: The PaymentIntent is waiting for further
        customer action of authentication, e.g. 3DS verification and QR code
        scan. Please check the `next_action`.

        - `REQUIRES_CAPTURE`: The PaymentIntent is waiting for your capture to
        complete the payment.

        - `PENDING`: The PaymentIntent is pending the final result from the
        provider. No further action is required.

        - `SUCCEEDED`: The PaymentIntent has succeeded. The payment is complete.

        - `CANCELLED`: The PaymentIntent has been canceled by your request. The
        payment is closed.

        - `FAILED`: The PaymentIntent has failed.
      enum:
        - REQUIRES_PAYMENT_METHOD
        - REQUIRES_CUSTOMER_ACTION
        - REQUIRES_CAPTURE
        - PENDING
        - SUCCEEDED
        - CANCELLED
        - FAILED
    CardPaymentMethod:
      title: card
      type: object
      required:
        - type
        - card
      properties:
        type:
          type: string
          enum:
            - card
        card:
          type: object
          required:
            - card_name
            - card_number
            - expiry_month
            - expiry_year
            - cvc
            - network
            - billing
            - three_ds_action
            - authorization_type
          properties:
            card_name:
              type: string
              description: Card holder name. Maximum length is 128.
            card_number:
              type: string
              description: Card number.
            expiry_month:
              type: string
              description: Two digit number representing the card's expiration month.
            expiry_year:
              type: string
              description: Four digit number representing the card's expiration year.
            cvc:
              type: string
              description: >-
                The CVC code of this card is mandatory for all transactions,
                except for those initiated by the merchant or involving network
                tokenization.
            network:
              type: string
              description: >-
                The card network. The card networks listed are accepted values
                for this field. Availability is evaluated at the account level.
              enum:
                - visa
                - mastercard
                - unionpay
            billing:
              $ref: '#/components/schemas/CardBilling'
            auto_capture:
              type: boolean
              default: false
              description: >-
                Specifies whether the funds should be requested automatically
                after the payment is authorized. Set it to `false` if you want
                to capture the funds sometimes later.
            authorization_type:
              type: string
              description: >-
                The authorization type for the card payment. Options are
                `authorization` (default) and `pre_authorization`. Use
                `pre_authorization` to hold funds for more than 7 days,
                available only for Visa and Mastercard. `auto_capture` must be
                `false` for pre-authorization.
              enum:
                - authorization
                - pre_authorization
            three_ds_action:
              type: string
              description: >
                Controls 3D Secure behavior for this payment:

                - `enforce_3ds`: Always trigger 3DS authentication, regardless
                of issuer risk assessment.

                - `skip_3ds`: Skip 3DS authentication. The liability for
                chargebacks remains with the merchant.
              enum:
                - enforce_3ds
                - skip_3ds
            three_ds:
              $ref: '#/components/schemas/CardThreeDS'
    CardPresentMethod:
      title: card_present
      type: object
      required:
        - type
        - card_present
      properties:
        type:
          type: string
          enum:
            - card_present
        card_present:
          type: object
          required:
            - card_number
            - expiry_month
            - expiry_year
            - pan_entry_mode
          properties:
            card_number:
              type: string
              description: Card number.
            expiry_month:
              type: string
              description: MM
            expiry_year:
              type: string
              description: YYYY
            cardholder_verification_method:
              type: string
              description: >
                Method used to verify the cardholder's identity at the point of
                sale.

                - `online_pin`: Cardholder entered a PIN that was verified
                online by the issuer.

                - `manual_signature`: Cardholder provided a handwritten
                signature.

                - `skipped`: Cardholder verification was not performed (e.g.,
                contactless under floor limit).
              enum:
                - online_pin
                - manual_signature
                - skipped
            encrypted_pin:
              type: string
              description: Encrypted personal identification number.
            pan_entry_mode:
              type: string
              enum:
                - manual_entry
                - chip
                - magstripe
                - contactless_chip
                - contactless_magstripe
              description: >
                The way the terminal reads the card information:

                - `manual_entry`: Manually keyed into POS terminal

                - `chip`: Read from direct contact with a chip card

                - `magstripe`: Read from direct contact with magnetic stripe
                card

                - `contactless_chip`: Read from a contactless interface using
                chip data

                - `contactless_magstripe`: Read from a contactless interface
                using magnetic stripe data (MSD)
            fallback:
              type: boolean
              default: false
              description: >
                The default is false. Set to true when:

                - Chip card at a chip-capable terminal was unable to process
                transactions using data on the chip or magnetic strip and use
                entry mode manual

                - Chip card at a chip-capable terminal was unable to process
                transactions using data on the chip and use entry mode
                `contact_magnetic_stripe_card`
            fallback_reason:
              type: string
              enum:
                - chip_read_failure
              description: >
                Fallback reason applicable when fallback is true.

                Set to `chip_read_failure` when all of the following conditions
                are met:

                - The transaction is initiated at a chip-capable terminal

                - `pan_entry_mode` is `magstripe`

                - The previous transaction initiated by the terminal was an
                unsuccessful chip read
            emv_tags:
              type: string
              description: |
                Tag-length-value (TLV)-encoded data read from a chip card.
            track1:
              type: string
              description: Track 1 read from magnetic stripe card
            track2:
              type: string
              description: |
                Track 2 is read from a magnetic stripe card or is track 2
                equivalent data get from the chip card.
                Track 2 is required when pan_entry_mode is not `manual_entry`.
            terminal_info:
              type: object
              properties:
                terminal_id:
                  type: string
                  maxLength: 8
                  description: >-
                    An up to 8 digit alphanumeric ID used to identify the
                    terminal at the card acceptor location of the user's POS
                    system.
                mobile_device:
                  type: boolean
                  default: false
                  description: Indicate whether the POS terminal is a mobile POS device.
                system_trace_audit_number:
                  type: string
                  maxLength: 6
                  minLength: 6
                  pattern: ^[0-9]{6}$
                  description: >-
                    System Trace Audit Number. A 6-digit numeric sequence that
                    uniquely identifies each transaction processed by a
                    terminal. Critical for transaction reconciliation and
                    dispute resolution.
                use_embedded_reader:
                  type: boolean
                  default: true
                  description: >-
                    Indicate whether the reader is embedded in a mobile POS
                    device.
    ApplePayPaymentMethod:
      title: applepay
      type: object
      required:
        - type
        - applepay
      properties:
        type:
          type: string
          enum:
            - applepay
        applepay:
          type: object
          required:
            - flow
            - network
            - token_type
            - auth_method
            - network_token
          description: >-
            Apple Pay payment information. Required when `type` is set to
            `applepay`.
          properties:
            flow:
              type: string
              description: |
                Specifies the checkout flow type:
                - `redirect`: Redirect-based online payment
                - `mobile_web`: Mobile browser (H5) payment
                - `mobile_app`: Native app payment
                - `contactless`: In-person NFC contactless payment
              enum:
                - redirect
                - mobile_web
                - mobile_app
                - contactless
            os_type:
              type: string
              description: >-
                Required when `flow` is `mobile_web` or `mobile_app`. Fixed
                value `ios` for Apple Pay.
              enum:
                - ios
            is_present:
              type: boolean
              description: >-
                Whether the customer is physically present during payment. Set
                to `true` for in-person (contactless) payments, `false` for
                online payments.
              default: false
            network:
              type: string
              description: The card network (lowercase).
              enum:
                - visa
                - mastercard
                - amex
                - discover
                - jcb
            card_type:
              type: string
              description: The type of the card.
              enum:
                - debit
                - credit
            token_type:
              type: string
              description: >
                The token data format:

                - `decrypted`: Merchant has decrypted the Apple Pay token and
                provides structured DPAN + Cryptogram data

                - `encrypted`: Raw encrypted Apple Pay token (reserved for
                future use)
              enum:
                - decrypted
                - encrypted
            auth_method:
              type: string
              description: >
                The authentication method used by Apple Pay:

                - `cryptogram_3ds`: Token includes a cryptogram, 3DS is already
                applied. No additional 3DS required.

                - `pan_only`: Token contains only PAN data. Additional 3DS
                verification may be triggered.
              enum:
                - cryptogram_3ds
                - pan_only
            network_token:
              type: object
              required:
                - number
                - expiry_month
                - expiry_year
                - cryptogram
              description: >-
                The decrypted Network Token data. Required when `token_type` is
                `decrypted`.
              properties:
                number:
                  type: string
                  description: Device Primary Account Number (DPAN), 12-52 characters.
                  minLength: 12
                  maxLength: 52
                  example: '4176660000000027'
                expiry_month:
                  type: string
                  description: Two-digit expiration month (01-12).
                  minLength: 2
                  maxLength: 2
                  example: '12'
                expiry_year:
                  type: string
                  description: Four-digit expiration year.
                  minLength: 4
                  maxLength: 4
                  example: '2027'
                cryptogram:
                  type: string
                  description: >-
                    Online Payment Cryptogram (Base64 encoded). Only required
                    when `auth_method` is `cryptogram_3ds`.
                  example: AgAAAAAABk4DWZ4C28yUQAAAAAA=
                eci:
                  type: string
                  description: >-
                    Electronic Commerce Indicator. Only required when
                    `auth_method` is `cryptogram_3ds`. Typical value: `07`.
                  example: '07'
            billing_contact:
              type: object
              description: Billing contact information from Apple Pay.
              properties:
                first_name:
                  type: string
                  description: Given name (first name).
                last_name:
                  type: string
                  description: Family name (last name).
                email:
                  type: string
                  format: email
                  description: Email address.
                phone:
                  type: string
                  description: Phone number.
                address:
                  type: object
                  description: Billing address.
                  properties:
                    street:
                      type: string
                      description: Street address.
                    city:
                      type: string
                      description: City.
                    state:
                      type: string
                      description: State or province.
                    postal_code:
                      type: string
                      description: Postal code.
                    country_code:
                      type: string
                      description: Country code (ISO 3166-1 alpha-2).
    GooglePayPaymentMethod:
      title: googlepay
      type: object
      required:
        - type
        - googlepay
      properties:
        type:
          type: string
          enum:
            - googlepay
        googlepay:
          type: object
          required:
            - flow
            - network
            - token_type
            - auth_method
            - network_token
          description: >-
            Google Pay payment information. Required when `type` is set to
            `googlepay`.
          properties:
            flow:
              type: string
              description: |
                Specifies the checkout flow type:
                - `redirect`: Redirect-based online payment
                - `mobile_web`: Mobile browser (H5) payment
                - `mobile_app`: Native app payment
                - `contactless`: In-person NFC contactless payment
              enum:
                - redirect
                - mobile_web
                - mobile_app
                - contactless
            os_type:
              type: string
              description: >-
                Required when `flow` is `mobile_web` or `mobile_app`. One of
                `ios`, `android`.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: >-
                Whether the customer is physically present during payment. Set
                to `true` for in-person (contactless) payments, `false` for
                online payments.
              default: false
            network:
              type: string
              description: The card network (lowercase).
              enum:
                - visa
                - mastercard
                - amex
                - discover
                - jcb
            card_type:
              type: string
              description: The type of the card.
              enum:
                - debit
                - credit
            token_type:
              type: string
              description: >
                The token data format:

                - `decrypted`: Merchant has decrypted the Google Pay token and
                provides structured DPAN + Cryptogram data

                - `encrypted`: Raw encrypted Google Pay token (reserved for
                future use)
              enum:
                - decrypted
                - encrypted
            auth_method:
              type: string
              description: >
                The authentication method used by Google Pay:

                - `cryptogram_3ds`: Token includes a cryptogram, 3DS is already
                applied. No additional 3DS required.

                - `pan_only`: Token contains only PAN data. Additional 3DS
                verification may be triggered.
              enum:
                - cryptogram_3ds
                - pan_only
            network_token:
              type: object
              required:
                - number
                - expiry_month
                - expiry_year
              description: >-
                The decrypted Network Token data. Required when `token_type` is
                `decrypted`.
              properties:
                number:
                  type: string
                  description: Device Primary Account Number (DPAN), 12-52 characters.
                  minLength: 12
                  maxLength: 52
                  example: '4176660000000027'
                expiry_month:
                  type: string
                  description: Two-digit expiration month (01-12).
                  minLength: 2
                  maxLength: 2
                  example: '12'
                expiry_year:
                  type: string
                  description: Four-digit expiration year.
                  minLength: 4
                  maxLength: 4
                  example: '2027'
                cryptogram:
                  type: string
                  description: >-
                    Online Payment Cryptogram (Base64 encoded). Only required
                    when `auth_method` is `cryptogram_3ds`.
                  example: AgAAAAAABk4DWZ4C28yUQAAAAAA=
                eci:
                  type: string
                  description: >-
                    Electronic Commerce Indicator. Only required when
                    `auth_method` is `cryptogram_3ds`. Typical value: `05`.
                  example: '05'
            billing_address:
              type: object
              description: Billing address information from Google Pay.
              properties:
                first_name:
                  type: string
                  description: First name.
                last_name:
                  type: string
                  description: Last name.
                email:
                  type: string
                  format: email
                  description: Email address.
                phone:
                  type: string
                  description: Phone number.
                address1:
                  type: string
                  description: Address line 1.
                address2:
                  type: string
                  description: Address line 2.
                locality:
                  type: string
                  description: City or locality.
                administrative_area:
                  type: string
                  description: State, province, or administrative area.
                postal_code:
                  type: string
                  description: Postal code.
                country_code:
                  type: string
                  description: Country code (ISO 3166-1 alpha-2).
    AlipayCNPaymentMethod:
      title: alipaycn
      type: object
      required:
        - type
        - alipaycn
      properties:
        type:
          type: string
          enum:
            - alipaycn
        alipaycn:
          type: object
          required:
            - flow
          description: >-
            AlipayCN payment information. Required when `type` is set to
            `alipaycn`
          properties:
            flow:
              type: string
              description: The specific payment flow to use.
              enum:
                - qrcode
            os_type:
              type: string
              description: >-
                Required when flow is `mobile_web` or `mobile_app`. One of
                `ios`, `android`.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether the customer is physically present during payment.
              default: false
            payment_code:
              type: string
              description: >-
                The customer presents a payment code (generated from a payment
                app like an e-wallet) to the merchant for scanning.
    AlipayHkPaymentMethod:
      title: alipayhk
      type: object
      required:
        - type
        - alipayhk
      properties:
        type:
          type: string
          enum:
            - alipayhk
        alipayhk:
          type: object
          required:
            - flow
          description: >-
            AlipayHK payment information. Required when `type` is set to
            `alipayhk`
          properties:
            flow:
              type: string
              description: The specific payment flow to use.
              enum:
                - qrcode
            os_type:
              type: string
              description: >-
                Required when flow is `mobile_web` or `mobile_app`. One of
                `ios`, `android`.
              enum:
                - ios
                - android
            payment_code:
              type: string
              description: >-
                The customer presents a payment code (generated from a payment
                app like an e-wallet) to the merchant for scanning.
            is_present:
              type: boolean
              description: Whether the customer is physically present during payment.
              default: false
    UnionPayPaymentMethod:
      title: unionpay
      type: object
      required:
        - type
        - unionpay
      properties:
        type:
          type: string
          enum:
            - unionpay
        unionpay:
          type: object
          required:
            - flow
          description: >-
            UnionPay payment information. Required when `type` is set to
            `unionpay`
          properties:
            flow:
              type: string
              description: >
                The UnionPay checkout flow:

                - `qrcode`: Merchant-presented QR code for the customer to scan
                with the UnionPay app.

                - `securepay`: Server-to-server secure payment (redirect-based
                online checkout).
              enum:
                - qrcode
                - securepay
            os_type:
              type: string
              description: Required when flow is `mobile_app`. One of `ios`, `android`.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether the customer is physically present during payment.
              default: false
            payment_code:
              type: string
              description: >-
                The customer presents a payment code (generated from a payment
                app like an e-wallet) to the merchant for scanning.
    WeChatPayPaymentMethod:
      title: wechatpay
      type: object
      required:
        - type
        - wechatpay
      properties:
        type:
          type: string
          enum:
            - wechatpay
        wechatpay:
          type: object
          required:
            - flow
          description: >-
            WeChat Pay payment information. Required when `type` is set to
            `wechatpay`.
          properties:
            flow:
              type: string
              description: >
                The WeChat Pay checkout flow:

                - `qrcode`: Merchant-presented QR code for the customer to scan.

                - `mini_program`: Payment inside a WeChat Mini Program.

                - `mobile_app`: Payment triggered from a native mobile app via
                WeChat SDK.

                - `mobile_web`: Payment triggered from a mobile browser (H5),
                redirects to WeChat.

                - `official_account`: Payment inside a WeChat Official Account
                (JSAPI).
              enum:
                - qrcode
                - mini_program
                - mobile_app
                - mobile_web
                - official_account
            os_type:
              type: string
              description: >-
                Required when flow is `mobile_web` or `mobile_app`. One of
                `ios`, `android`.
              enum:
                - ios
                - android
            payment_code:
              type: string
              description: >-
                The customer presents a payment code (generated from a payment
                app like an e-wallet) to the merchant for scanning.
            is_present:
              type: boolean
              description: Whether the customer is physically present during payment.
              default: false
            open_id:
              type: string
              description: >-
                Required when `flow` is `mini_program`, `mobile_app` or
                `official_account`.
    GrabPayPaymentMethod:
      title: grabpay
      type: object
      required:
        - type
        - grabpay
      properties:
        type:
          type: string
          enum:
            - grabpay
        grabpay:
          type: object
          required:
            - flow
          description: >-
            GrabPay payment information. Required when `type` is set to
            `grabpay`.
          properties:
            flow:
              type: string
              description: Specifies the checkout flow type.
              enum:
                - qrcode
            os_type:
              type: string
              description: Required when flow is `mobile_web`.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether the customer is physically present during payment.
              default: false
            payment_code:
              type: string
              description: >-
                The customer presents a payment code (generated from a payment
                app like an e-wallet) to the merchant for scanning.
            shopper_name:
              type: string
              description: The name of the shopper.
    CryptoPaymentMethod:
      title: crypto
      type: object
      required:
        - type
        - crypto
      properties:
        type:
          type: string
          enum:
            - crypto
        crypto:
          type: object
          required:
            - flow
            - is_present
          description: >
            Cryptocurrency payment information. Required when `type` is set to
            `crypto`.


            **Important:** Currency must be `USD`.


            **Legal Notice:**

            This API Reference is issued and published by UQPAY PTY LTD (UQPAY
            Australia), a member of the UQPAY Group. As the sole publishing
            entity, UQPAY Australia assumes full and exclusive responsibility
            for the content, versioning, and maintenance of this document.
            Unless expressly stated otherwise, no other entity within the UQPAY
            Group shall be considered a publisher or held liable for the
            information contained herein.
          properties:
            flow:
              type: string
              description: |
                The specific payment flow to use:
                - `redirect`: Redirects customer to a crypto payment gateway
                - `qrcode`: Generates a QR code for direct blockchain payment
              enum:
                - redirect
                - qrcode
            network:
              type: string
              description: >
                Blockchain network for the transaction. Required when `flow` is
                `qrcode`.

                - `ETH`: Ethereum network

                - `TRON`: TRON network
              enum:
                - ETH
                - TRON
            is_present:
              type: boolean
              description: >-
                Whether the customer is physically present during payment. Must
                be `false` for crypto payments.
              enum:
                - false
            payer_info:
              type: object
              description: >
                Payer compliance information collected to satisfy the AML/CTF
                Travel Rule for virtual asset transfers.


                **Conditional requirement:** Required when the order amount
                reaches the compliance threshold configured by UQPAY for the
                merchant; otherwise this object can be omitted entirely.
              required:
                - name
                - identifier
              properties:
                name:
                  type: string
                  description: Full legal name of the payer (individual or entity).
                  minLength: 1
                  maxLength: 100
                  example: John Smith
                email:
                  type: string
                  format: email
                  description: >-
                    Payer email address. Validated for standard email format
                    when provided.
                  minLength: 5
                  maxLength: 100
                  example: john@example.com
                identifier:
                  type: object
                  description: >
                    A unique identifier for the payer. Exactly one identifier
                    must be provided, selected via the `type` field. The
                    structure of `value` varies based on `type`.
                  required:
                    - type
                    - value
                  properties:
                    type:
                      type: string
                      description: >
                        The category of identifier provided:

                        - `document_number`: A government-issued identification
                        document

                        - `birth_info`: Date and place of birth

                        - `address`: Structured residential or business address
                      enum:
                        - document_number
                        - birth_info
                        - address
                    value:
                      description: The identifier payload. Structure depends on `type`.
                      oneOf:
                        - title: DocumentNumber
                          type: object
                          description: Used when `type` is `document_number`.
                          required:
                            - doc_type
                            - number
                          properties:
                            doc_type:
                              type: string
                              description: The type of government-issued document.
                              enum:
                                - passport
                                - national_id
                                - drivers_license
                            number:
                              type: string
                              description: The document number as printed on the document.
                              example: A1234567
                        - title: BirthInfo
                          type: object
                          description: Used when `type` is `birth_info`.
                          required:
                            - date
                            - city
                            - country
                          properties:
                            date:
                              type: string
                              format: date
                              description: Date of birth in `YYYY-MM-DD` format.
                              example: '1990-01-01'
                            city:
                              type: string
                              description: City of birth.
                              minLength: 2
                              maxLength: 100
                              example: Sydney
                            country:
                              type: string
                              description: Country of birth as an ISO 3166-1 alpha-3 code.
                              example: AUS
                        - title: Address
                          type: object
                          description: >-
                            Used when `type` is `address`. Represents a
                            structured residential or business address.
                          required:
                            - street
                            - city
                            - state
                            - postcode
                            - country
                          properties:
                            street:
                              type: string
                              description: Street address line.
                              example: 123 George St
                            city:
                              type: string
                              description: City name.
                              example: Sydney
                            state:
                              type: string
                              description: State, province, or region.
                              example: NSW
                            postcode:
                              type: string
                              description: Postal or ZIP code.
                              example: '2000'
                            country:
                              type: string
                              description: >-
                                Country as an ISO 3166-1 alpha-3 code. Defaults
                                to `AUS` if not specified by the payer.
                              example: AUS
    PayNowPaymentMethod:
      title: paynow
      type: object
      required:
        - type
        - paynow
      properties:
        type:
          type: string
          enum:
            - paynow
        paynow:
          type: object
          required:
            - flow
          description: PayNow payment information. Required when `type` is set to `paynow`.
          properties:
            flow:
              type: string
              description: >-
                The checkout flow. Only `qrcode` (merchant-presented QR code) is
                supported.
              enum:
                - qrcode
            is_present:
              type: boolean
              description: Whether the customer is physically present during payment.
              default: false
    TruemoneyPaymentMethod:
      title: truemoney
      type: object
      required:
        - type
        - truemoney
      properties:
        type:
          type: string
          enum:
            - truemoney
        truemoney:
          type: object
          required:
            - flow
          description: >-
            Truemoney payment information. Required when `type` is set to
            `truemoney`.
          properties:
            flow:
              type: string
              description: The specific payment flow to use.
              enum:
                - qrcode
            os_type:
              type: string
              description: >-
                Required when flow is `mobile_web` or `mobile_app`. One of
                `ios`, `android`.
              enum:
                - ios
                - android
            payment_code:
              type: string
              description: >-
                The customer presents a payment code (generated from a payment
                app like an e-wallet) to the merchant for scanning.
            is_present:
              type: boolean
              description: Whether the customer is physically present during payment.
              default: false
    TngPaymentMethod:
      title: tng
      type: object
      required:
        - type
        - tng
      properties:
        type:
          type: string
          enum:
            - tng
        tng:
          type: object
          required:
            - flow
          description: >-
            Touch'n Go payment information. Required when `type` is set to
            `tng`.
          properties:
            flow:
              type: string
              description: The specific payment flow to use.
              enum:
                - qrcode
            os_type:
              type: string
              description: >-
                Required when flow is `mobile_web` or `mobile_app`. One of
                `ios`, `android`.
              enum:
                - ios
                - android
            payment_code:
              type: string
              description: >-
                The customer presents a payment code (generated from a payment
                app like an e-wallet) to the merchant for scanning.
            is_present:
              type: boolean
              description: Whether the customer is physically present during payment.
              default: false
    GCashPaymentMethod:
      title: gcash
      type: object
      required:
        - type
        - gcash
      properties:
        type:
          type: string
          enum:
            - gcash
        gcash:
          type: object
          required:
            - flow
          description: GCash payment information. Required when `type` is set to `gcash`.
          properties:
            flow:
              type: string
              description: The specific payment flow to use.
              enum:
                - qrcode
            os_type:
              type: string
              description: >-
                Required when flow is `mobile_web` or `mobile_app`. One of
                `ios`, `android`.
              enum:
                - ios
                - android
            payment_code:
              type: string
              description: >-
                The customer presents a payment code (generated from a payment
                app like an e-wallet) to the merchant for scanning.
            is_present:
              type: boolean
              description: Whether the customer is physically present during payment.
              default: false
    DanaPaymentMethod:
      title: dana
      type: object
      required:
        - type
        - dana
      properties:
        type:
          type: string
          enum:
            - dana
        dana:
          type: object
          required:
            - flow
          description: Dana payment information. Required when `type` is set to `dana`.
          properties:
            flow:
              type: string
              description: The specific payment flow to use.
              enum:
                - qrcode
            os_type:
              type: string
              description: >-
                Required when flow is `mobile_web` or `mobile_app`. One of
                `ios`, `android`.
              enum:
                - ios
                - android
            payment_code:
              type: string
              description: >-
                The customer presents a payment code (generated from a payment
                app like an e-wallet) to the merchant for scanning.
            is_present:
              type: boolean
              description: Whether the customer is physically present during payment.
              default: false
    KakaopayPaymentMethod:
      title: kakaopay
      type: object
      required:
        - type
        - kakaopay
      properties:
        type:
          type: string
          enum:
            - kakaopay
        kakaopay:
          type: object
          required:
            - flow
          description: >-
            KakaoPay payment information. Required when `type` is set to
            `kakaopay`.
          properties:
            flow:
              type: string
              description: The specific payment flow to use.
              enum:
                - qrcode
            os_type:
              type: string
              description: >-
                Required when flow is `mobile_web` or `mobile_app`. One of
                `ios`, `android`.
              enum:
                - ios
                - android
            payment_code:
              type: string
              description: >-
                The customer presents a payment code (generated from a payment
                app like an e-wallet) to the merchant for scanning.
            is_present:
              type: boolean
              description: Whether the customer is physically present during payment.
              default: false
    TossPaymentMethod:
      title: toss
      type: object
      required:
        - type
        - toss
      properties:
        type:
          type: string
          enum:
            - toss
        toss:
          type: object
          required:
            - flow
          description: Toss Pay payment information. Required when `type` is set to `toss`.
          properties:
            flow:
              type: string
              description: The specific payment flow to use.
              enum:
                - qrcode
            os_type:
              type: string
              description: >-
                Required when flow is `mobile_web` or `mobile_app`. One of
                `ios`, `android`.
              enum:
                - ios
                - android
            payment_code:
              type: string
              description: >-
                The customer presents a payment code (generated from a payment
                app like an e-wallet) to the merchant for scanning.
            is_present:
              type: boolean
              description: Whether the customer is physically present during payment.
              default: false
    NaverpayPaymentMethod:
      title: naverpay
      type: object
      required:
        - type
        - naverpay
      properties:
        type:
          type: string
          enum:
            - naverpay
        naverpay:
          type: object
          required:
            - flow
          description: >-
            Naver Pay payment information. Required when `type` is set to
            `naverpay`.
          properties:
            flow:
              type: string
              description: The specific payment flow to use.
              enum:
                - qrcode
            os_type:
              type: string
              description: >-
                Required when flow is `mobile_web` or `mobile_app`. One of
                `ios`, `android`.
              enum:
                - ios
                - android
            payment_code:
              type: string
              description: >-
                The customer presents a payment code (generated from a payment
                app like an e-wallet) to the merchant for scanning.
            is_present:
              type: boolean
              description: Whether the customer is physically present during payment.
              default: false
    Address:
      type: object
      required:
        - country_code
        - city
        - street
        - postcode
      properties:
        country_code:
          type: string
          description: The two-letter country code in ISO 3166-1 alpha-2 format.
          minLength: 2
          maxLength: 2
          example: SG
        state:
          type: string
          description: |
            State or province of the address. Maximum of 100 characters.

            - Required when `country_code` is "US" or "CA".
          maxLength: 100
          example: ''
        city:
          type: string
          description: City of the address. Maximum of 100 characters.
          maxLength: 100
          example: Singapore
        street:
          type: string
          description: Street of the address. Maximum of 100 characters.
          maxLength: 100
          example: '444 Orchard Rd, Midpoint Orchard, Singapore '
        postcode:
          type: string
          description: Postcode of the address. Maximum of 10 characters.
          maxLength: 10
          example: '924011'
    CardThreeDSResponse:
      type: object
      properties:
        three_ds_version:
          type: string
          description: The 3D Secure protocol version used for authentication.
          example: 2.2.0
        eci:
          type: string
          description: >-
            Electronic Commerce Indicator. A two-digit code indicating the
            security level of the transaction and the liability shift outcome.
          example: '05'
        cavv:
          type: string
          description: >-
            Cardholder Authentication Verification Value. A cryptographic value
            generated by the issuer's Access Control Server confirming
            successful authentication.
          example: AAABCZIhcQAAAABZlyFxAAAAAAA=
        three_ds_authentication_status:
          type: string
          description: >
            The result of the 3DS authentication.


            - `Y`: Authentication successful.

            - `A`: Authentication attempted. Liability shift is granted but full
            authentication was not completed.

            - `N`: Authentication failed or denied.

            - `U`: Authentication could not be performed due to technical or
            other issues.

            - `R`: Authentication rejected by the issuer.

            - `C`: Challenge required. Additional verification steps are needed.
          example: 'Y'
          enum:
            - 'Y'
            - A
            - 'N'
            - U
            - R
            - C
        three_ds_cancellation_reason:
          type: string
          description: The reason the 3DS authentication flow was cancelled, if applicable.
          example: '01'
    PaymentMethodResponse:
      type: object
      properties:
        type:
          type: string
      description: >-
        The payment method details to confirm the PaymentIntent. The
        PaymentIntent will be confirmed automatically when `payment_method` is
        set.
      discriminator:
        propertyName: type
        mapping:
          card:
            $ref: '#/components/schemas/CardPaymentMethodResponse'
          applepay:
            $ref: '#/components/schemas/ApplePayPaymentMethodResponse'
          googlepay:
            $ref: '#/components/schemas/GooglePayPaymentMethodResponse'
          alipaycn:
            $ref: '#/components/schemas/AlipayCNPaymentMethodResponse'
          alipayhk:
            $ref: '#/components/schemas/AlipayHkPaymentMethodResponse'
          unionpay:
            $ref: '#/components/schemas/UnionPayPaymentMethodResponse'
          wechatpay:
            $ref: '#/components/schemas/WeChatPayPaymentMethodResponse'
          grabpay:
            $ref: '#/components/schemas/GrabPayPaymentMethodResponse'
          crypto:
            $ref: '#/components/schemas/CryptoPaymentMethodResponse'
          paynow:
            $ref: '#/components/schemas/PayNowPaymentMethodResponse'
          truemoney:
            $ref: '#/components/schemas/TruemoneyPaymentMethodResponse'
          tng:
            $ref: '#/components/schemas/TngPaymentMethodResponse'
          gcash:
            $ref: '#/components/schemas/GCashPaymentMethodResponse'
          dana:
            $ref: '#/components/schemas/DanaPaymentMethodResponse'
          kakaopay:
            $ref: '#/components/schemas/KakaopayPaymentMethodResponse'
          toss:
            $ref: '#/components/schemas/TossPaymentMethodResponse'
          naverpay:
            $ref: '#/components/schemas/NaverpayPaymentMethodResponse'
      oneOf:
        - $ref: '#/components/schemas/CardPaymentMethodResponse'
        - $ref: '#/components/schemas/ApplePayPaymentMethodResponse'
        - $ref: '#/components/schemas/GooglePayPaymentMethodResponse'
        - $ref: '#/components/schemas/AlipayCNPaymentMethodResponse'
        - $ref: '#/components/schemas/AlipayHkPaymentMethodResponse'
        - $ref: '#/components/schemas/UnionPayPaymentMethodResponse'
        - $ref: '#/components/schemas/WeChatPayPaymentMethodResponse'
        - $ref: '#/components/schemas/GrabPayPaymentMethodResponse'
        - $ref: '#/components/schemas/CryptoPaymentMethodResponse'
        - $ref: '#/components/schemas/PayNowPaymentMethodResponse'
        - $ref: '#/components/schemas/TruemoneyPaymentMethodResponse'
        - $ref: '#/components/schemas/TngPaymentMethodResponse'
        - $ref: '#/components/schemas/GCashPaymentMethodResponse'
        - $ref: '#/components/schemas/DanaPaymentMethodResponse'
        - $ref: '#/components/schemas/KakaopayPaymentMethodResponse'
        - $ref: '#/components/schemas/TossPaymentMethodResponse'
        - $ref: '#/components/schemas/NaverpayPaymentMethodResponse'
    FailureCode:
      type: string
      description: >-
        PaymentAttempt failure code. Possible values are defined in [Error Code
        Reference.payment_error](/global-acquiring/v1.6/guide/error-codes)
        section.
      example: ''
    CardBilling:
      description: Billing information of the customer.
      type: object
      required:
        - first_name
        - last_name
        - email
        - address
      properties:
        first_name:
          type: string
          description: First name of the customer. Maximum length is 128.
          maxLength: 128
          example: John
        last_name:
          type: string
          description: Last name of the customer. Maximum length is 128.
          maxLength: 128
          example: Doe
        email:
          type: string
          description: Email address of the customer.
          maxLength: 225
          example: john.doe@example.com
          format: email
        phone_number:
          type: string
          description: Phone number of the customer.
          maxLength: 36
          example: '12025550123'
        address:
          $ref: '#/components/schemas/Address'
    CardThreeDS:
      type: object
      properties:
        return_url:
          type: string
          description: Return URL for 3ds callbacks (in case 3ds is triggered).
        acs_response:
          type: string
          description: 3DS ACS response (application/x-www-form-urlencoded).
        device_data_collection_res:
          type: string
          description: Device data collection response.
        ds_transaction_id:
          type: string
          description: 3DS transactionId.
    CardPaymentMethodResponse:
      title: card
      type: object
      required:
        - type
        - card
      properties:
        type:
          type: string
          enum:
            - card
        card:
          type: object
          required:
            - card_name
            - card_number
            - network
            - authorization_type
          properties:
            card_name:
              type: string
              description: Card holder name. Maximum length is 128.
              example: john doe
            card_number:
              type: string
              description: >-
                Masked card number. First 6 digits (BIN) and last 4 digits are
                visible.
              example: 541333******4047
            network:
              type: string
              description: >-
                The card network. Examples include `visa`, `mastercard`,
                `unionpay`.
              enum:
                - visa
                - mastercard
                - unionpay
            brand:
              type: string
              description: The card brand.
              example: visa
            bin:
              type: string
              description: >-
                Bank Identification Number. The first 6–8 digits of the card
                number identifying the issuing institution.
              example: '541333'
            last4:
              type: string
              description: The last four digits of the card number.
              example: '4047'
            card_type:
              type: string
              description: The card funding type.
              enum:
                - credit
                - debit
                - prepaid
            expiry_month:
              type: string
              description: Two-digit expiry month of the card.
              example: '12'
            expiry_year:
              type: string
              description: Four-digit expiry year of the card.
              example: '2027'
            billing:
              $ref: '#/components/schemas/CardBilling'
            auto_capture:
              type: boolean
              default: true
              description: >-
                Specifies whether the funds should be requested automatically
                after the payment is authorized. Default to `true`. Set it to
                `false` if you want to capture the funds sometimes later.
            authorization_type:
              type: string
              description: >-
                The authorization type for the card payment. Options are
                `authorization` (default) and `pre_authorization`. Use
                `pre_authorization` to hold funds for more than 7 days,
                available only for Visa and Mastercard. `auto_capture` must be
                `false` for pre-authorization.
              enum:
                - authorization
                - pre_authorization
    ApplePayPaymentMethodResponse:
      title: applepay
      type: object
      required:
        - type
        - applepay
      properties:
        type:
          type: string
          enum:
            - applepay
        applepay:
          type: object
          description: Apple Pay payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - redirect
                - mobile_web
                - mobile_app
                - contactless
            os_type:
              type: string
              description: The operating system type of the customer device.
              enum:
                - ios
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
            network:
              type: string
              enum:
                - visa
                - mastercard
                - amex
                - discover
                - jcb
            card_type:
              type: string
              description: The type of card used (e.g., credit, debit).
              enum:
                - debit
                - credit
            token_type:
              type: string
              enum:
                - decrypted
                - encrypted
            auth_method:
              type: string
              enum:
                - cryptogram_3ds
                - pan_only
    GooglePayPaymentMethodResponse:
      title: googlepay
      type: object
      required:
        - type
        - googlepay
      properties:
        type:
          type: string
          enum:
            - googlepay
        googlepay:
          type: object
          description: Google Pay payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - redirect
                - mobile_web
                - mobile_app
                - contactless
            os_type:
              type: string
              description: The operating system type of the customer device.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
            network:
              type: string
              enum:
                - visa
                - mastercard
                - amex
                - discover
                - jcb
            card_type:
              type: string
              description: The type of card used (e.g., credit, debit).
              enum:
                - debit
                - credit
            token_type:
              type: string
              enum:
                - decrypted
                - encrypted
            auth_method:
              type: string
              enum:
                - cryptogram_3ds
                - pan_only
    AlipayCNPaymentMethodResponse:
      title: alipaycn
      type: object
      required:
        - type
        - alipaycn
      properties:
        type:
          type: string
          enum:
            - alipaycn
        alipaycn:
          type: object
          description: AlipayCN payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - qrcode
            os_type:
              type: string
              description: The operating system type of the customer device.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
    AlipayHkPaymentMethodResponse:
      title: alipayhk
      type: object
      required:
        - type
        - alipayhk
      properties:
        type:
          type: string
          enum:
            - alipayhk
        alipayhk:
          type: object
          description: AlipayHK payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - qrcode
            os_type:
              type: string
              description: The operating system type of the customer device.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
    UnionPayPaymentMethodResponse:
      title: unionpay
      type: object
      required:
        - type
        - unionpay
      properties:
        type:
          type: string
          enum:
            - unionpay
        unionpay:
          type: object
          description: UnionPay payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - qrcode
                - securepay
            os_type:
              type: string
              description: The operating system type of the customer device.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
    WeChatPayPaymentMethodResponse:
      title: wechatpay
      type: object
      required:
        - type
        - wechatpay
      properties:
        type:
          type: string
          enum:
            - wechatpay
        wechatpay:
          type: object
          description: WeChat Pay payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - qrcode
                - mini_program
                - mobile_app
                - mobile_web
                - official_account
            os_type:
              type: string
              description: The operating system type of the customer device.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
    GrabPayPaymentMethodResponse:
      title: grabpay
      type: object
      required:
        - type
        - grabpay
      properties:
        type:
          type: string
          enum:
            - grabpay
        grabpay:
          type: object
          description: GrabPay payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - qrcode
            os_type:
              type: string
              description: The operating system type of the customer device.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
            shopper_name:
              type: string
              description: The name of the shopper.
    CryptoPaymentMethodResponse:
      title: crypto
      type: object
      required:
        - type
        - crypto
      properties:
        type:
          type: string
          enum:
            - crypto
        crypto:
          type: object
          description: Cryptocurrency payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - redirect
                - qrcode
            network:
              type: string
              enum:
                - ETH
                - TRON
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
    PayNowPaymentMethodResponse:
      title: paynow
      type: object
      required:
        - type
        - paynow
      properties:
        type:
          type: string
          enum:
            - paynow
        paynow:
          type: object
          description: PayNow payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - qrcode
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
    TruemoneyPaymentMethodResponse:
      title: truemoney
      type: object
      required:
        - type
        - truemoney
      properties:
        type:
          type: string
          enum:
            - truemoney
        truemoney:
          type: object
          description: Truemoney payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - qrcode
            os_type:
              type: string
              description: The operating system type of the customer device.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
    TngPaymentMethodResponse:
      title: tng
      type: object
      required:
        - type
        - tng
      properties:
        type:
          type: string
          enum:
            - tng
        tng:
          type: object
          description: Touch'n Go payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - qrcode
            os_type:
              type: string
              description: The operating system type of the customer device.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
    GCashPaymentMethodResponse:
      title: gcash
      type: object
      required:
        - type
        - gcash
      properties:
        type:
          type: string
          enum:
            - gcash
        gcash:
          type: object
          description: GCash payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - qrcode
            os_type:
              type: string
              description: The operating system type of the customer device.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
    DanaPaymentMethodResponse:
      title: dana
      type: object
      required:
        - type
        - dana
      properties:
        type:
          type: string
          enum:
            - dana
        dana:
          type: object
          description: Dana payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - qrcode
            os_type:
              type: string
              description: The operating system type of the customer device.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
    KakaopayPaymentMethodResponse:
      title: kakaopay
      type: object
      required:
        - type
        - kakaopay
      properties:
        type:
          type: string
          enum:
            - kakaopay
        kakaopay:
          type: object
          description: KakaoPay payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - qrcode
            os_type:
              type: string
              description: The operating system type of the customer device.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
    TossPaymentMethodResponse:
      title: toss
      type: object
      required:
        - type
        - toss
      properties:
        type:
          type: string
          enum:
            - toss
        toss:
          type: object
          description: Toss Pay payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - qrcode
            os_type:
              type: string
              description: The operating system type of the customer device.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
    NaverpayPaymentMethodResponse:
      title: naverpay
      type: object
      required:
        - type
        - naverpay
      properties:
        type:
          type: string
          enum:
            - naverpay
        naverpay:
          type: object
          description: Naver Pay payment information returned in the response.
          properties:
            flow:
              type: string
              description: The checkout flow used for this payment.
              enum:
                - qrcode
            os_type:
              type: string
              description: The operating system type of the customer device.
              enum:
                - ios
                - android
            is_present:
              type: boolean
              description: Whether this is an in-person (offline) payment.
  securitySchemes:
    XAuthToken:
      type: apiKey
      in: header
      name: x-auth-token
      description: The API token for login provided by UQPay.

````