> ## Documentation Index
> Fetch the complete documentation index at: https://api-reference.hyperswitch.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Subscription - Create and Confirm

> Creates and confirms a subscription in a single request.



## OpenAPI

````yaml post /subscriptions
openapi: 3.0.3
info:
  title: Hyperswitch - API Documentation
  description: >

    ## Get started


    Hyperswitch provides a collection of APIs that enable you to process and
    manage payments.

    Our APIs accept and return JSON in the HTTP body, and return standard HTTP
    response codes.


    You can consume the APIs directly using your favorite HTTP/REST library.


    We have a testing environment referred to "sandbox", which you can setup to
    test API calls without

    affecting production data.

    Currently, our sandbox environment is live while our production environment
    is under development

    and will be available soon.

    You can sign up on our Dashboard to get API keys to access Hyperswitch API.


    ### Environment


    Use the following base URLs when making requests to the APIs:


    | Environment   |  Base URL                          |

    |---------------|------------------------------------|

    | Sandbox       | <https://sandbox.hyperswitch.io>   |

    | Production    | <https://api.hyperswitch.io>       |


    ## Authentication


    When you sign up on our [dashboard](https://app.hyperswitch.io) and create a
    merchant

    account, you are given a secret key (also referred as api-key) and a
    publishable key.

    You may authenticate all API requests with Hyperswitch server by providing
    the appropriate key in

    the request Authorization header.


    | Key             | 
    Description                                                                                 
    |

    |-----------------|-----------------------------------------------------------------------------------------------|

    | api-key         | Private key. Used to authenticate all API requests from
    your merchant server                  |

    | publishable key | Unique identifier for your account. Used to authenticate
    API requests from your app's client  |


    Never share your secret api keys. Keep them guarded and secure.
  contact:
    name: Hyperswitch Support
    url: https://hyperswitch.io
    email: support.global@juspay.io
  license:
    name: Apache-2.0
  version: 0.1.0
servers:
  - url: https://sandbox.hyperswitch.io
    description: Sandbox Environment
security: []
tags:
  - name: Merchant Account
    description: Create and manage merchant accounts
  - name: Profile
    description: Create and manage profiles
  - name: Merchant Connector Account
    description: Create and manage merchant connector accounts
  - name: Payments
    description: Create and manage one-time payments, recurring payments and mandates
  - name: Refunds
    description: Create and manage refunds for successful payments
  - name: Mandates
    description: Manage mandates
  - name: Customers
    description: Create and manage customers
  - name: Payment Methods
    description: Create and manage payment methods of customers
  - name: Disputes
    description: Manage disputes
  - name: API Key
    description: Create and manage API Keys
  - name: Payouts
    description: Create and manage payouts
  - name: payment link
    description: Create payment link
  - name: Routing
    description: Create and manage routing configurations
  - name: Event
    description: Manage events
  - name: Authentication
    description: Create and manage authentication
  - name: Subscriptions
    description: Subscription management and billing endpoints
  - name: Card Issuer
    description: Create and manage card issuers
paths:
  /subscriptions:
    post:
      tags:
        - Subscriptions
      summary: Subscription - Create and Confirm
      description: Creates and confirms a subscription in a single request.
      operationId: Create and Confirm Subscription
      parameters:
        - name: X-Profile-Id
          in: header
          description: Profile ID for authentication
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAndConfirmSubscriptionRequest'
            examples:
              Create and confirm subscription:
                value:
                  billing:
                    address:
                      city: San Fransico
                      country: US
                      first_name: joseph
                      last_name: Doe
                      line1: '1467'
                      line2: Harrison Street
                      line3: Harrison Street
                      state: California
                      zip: '94122'
                    phone:
                      country_code: '+1'
                      number: '123456789'
                  customer_id: cust_123456789
                  description: Hello this is description
                  item_price_id: standard-plan-USD-Monthly
                  merchant_reference_id: mer_ref_123456789
                  payment_details:
                    authentication_type: no_three_ds
                    capture_method: automatic
                    customer_acceptance:
                      acceptance_type: online
                      accepted_at: '1963-05-03T04:07:52.723Z'
                      online:
                        ip_address: 127.0.0.1
                        user_agent: amet irure esse
                    payment_method: card
                    payment_method_data:
                      card:
                        card_cvc: '737'
                        card_exp_month: '03'
                        card_exp_year: '2030'
                        card_holder_name: CLBRW dffdg
                        card_number: '4000000000000002'
                    payment_method_type: credit
                    payment_type: setup_mandate
                    return_url: https://google.com
                    setup_future_usage: off_session
                  shipping:
                    address:
                      city: Banglore
                      country: US
                      first_name: joseph
                      last_name: doe
                      line1: sdsdfsdf
                      line2: hsgdbhd
                      line3: alsksoe
                      state: zsaasdas
                      zip: '571201'
                    phone:
                      country_code: '+1'
                      number: '123456789'
        required: true
      responses:
        '200':
          description: Subscription created and confirmed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionResponse'
        '400':
          description: Invalid subscription data
        '404':
          description: Customer or plan not found
      security:
        - api_key: []
components:
  schemas:
    CreateAndConfirmSubscriptionRequest:
      type: object
      required:
        - item_price_id
        - customer_id
        - payment_details
      properties:
        plan_id:
          type: string
          description: Identifier for the associated plan_id.
          nullable: true
        item_price_id:
          type: string
          description: Identifier for the associated item_price_id for the subscription.
        coupon_code:
          type: string
          description: Identifier for the coupon code for the subscription.
          nullable: true
        customer_id:
          $ref: '#/components/schemas/CustomerId'
        billing:
          allOf:
            - $ref: '#/components/schemas/Address'
          nullable: true
        shipping:
          allOf:
            - $ref: '#/components/schemas/Address'
          nullable: true
        payment_details:
          $ref: '#/components/schemas/PaymentDetails'
        merchant_reference_id:
          type: string
          description: Merchant specific Unique identifier.
          nullable: true
    SubscriptionResponse:
      type: object
      description: >-
        Response payload returned after successfully creating a subscription.


        Includes details such as subscription ID, status, plan, merchant, and
        customer info.
      required:
        - id
        - status
        - profile_id
        - merchant_id
        - customer_id
      properties:
        id:
          $ref: '#/components/schemas/SubscriptionId'
        merchant_reference_id:
          type: string
          description: Merchant specific Unique identifier.
          nullable: true
        status:
          $ref: '#/components/schemas/SubscriptionStatus'
        plan_id:
          type: string
          description: Identifier for the associated subscription plan.
          nullable: true
        item_price_id:
          type: string
          description: Identifier for the associated item_price_id for the subscription.
          nullable: true
        profile_id:
          $ref: '#/components/schemas/ProfileId'
        client_secret:
          type: string
          description: >-
            This is a token which expires after 15 minutes, used from the client
            to authenticate and create sessions from the SDK
          nullable: true
        merchant_id:
          $ref: '#/components/schemas/MerchantId'
        coupon_code:
          type: string
          description: Optional coupon code applied to this subscription.
          nullable: true
        customer_id:
          $ref: '#/components/schemas/CustomerId'
        payment:
          allOf:
            - $ref: '#/components/schemas/PaymentResponseData'
          nullable: true
        invoice:
          allOf:
            - $ref: '#/components/schemas/Invoice'
          nullable: true
    CustomerId:
      type: string
      description: A type for customer_id that can be used for customer ids
    Address:
      type: object
      properties:
        address:
          allOf:
            - $ref: '#/components/schemas/AddressDetails'
          nullable: true
        phone:
          allOf:
            - $ref: '#/components/schemas/PhoneDetails'
          nullable: true
        email:
          type: string
          nullable: true
    PaymentDetails:
      type: object
      properties:
        payment_method:
          allOf:
            - $ref: '#/components/schemas/PaymentMethod'
          nullable: true
        payment_method_type:
          allOf:
            - $ref: '#/components/schemas/PaymentMethodType'
          nullable: true
        payment_method_data:
          allOf:
            - $ref: '#/components/schemas/PaymentMethodDataRequest'
          nullable: true
        setup_future_usage:
          allOf:
            - $ref: '#/components/schemas/FutureUsage'
          nullable: true
        customer_acceptance:
          allOf:
            - $ref: '#/components/schemas/CustomerAcceptance'
          nullable: true
        return_url:
          type: string
          description: >-
            The url to which user must be redirected to after completion of the
            purchase
          nullable: true
        capture_method:
          allOf:
            - $ref: '#/components/schemas/CaptureMethod'
          nullable: true
        authentication_type:
          allOf:
            - $ref: '#/components/schemas/AuthenticationType'
          nullable: true
        payment_type:
          allOf:
            - $ref: '#/components/schemas/PaymentType'
          nullable: true
        payment_method_id:
          type: string
          example: pm_01926c58bc6e77c09e809964e72af8c8
          nullable: true
    SubscriptionId:
      type: string
      description: A type for subscription_id that can be used for subscription ids
    SubscriptionStatus:
      type: string
      description: |-
        Possible states of a subscription lifecycle.

        - `Created`: Subscription was created but not yet activated.
        - `Active`: Subscription is currently active.
        - `InActive`: Subscription is inactive.
        - `Pending`: Subscription is pending activation.
        - `Trial`: Subscription is in a trial period.
        - `Paused`: Subscription is paused.
        - `Unpaid`: Subscription is unpaid.
        - `Onetime`: Subscription is a one-time payment.
        - `Cancelled`: Subscription has been cancelled.
        - `Failed`: Subscription has failed.
      enum:
        - active
        - created
        - in_active
        - pending
        - trial
        - paused
        - unpaid
        - onetime
        - cancelled
        - failed
    ProfileId:
      type: string
      description: A type for profile_id that can be used for business profile ids
    MerchantId:
      type: string
      description: A type for merchant_id that can be used for merchant ids
    PaymentResponseData:
      type: object
      required:
        - payment_id
        - status
        - amount
        - currency
      properties:
        payment_id:
          $ref: '#/components/schemas/PaymentId'
        status:
          $ref: '#/components/schemas/IntentStatus'
        amount:
          $ref: '#/components/schemas/MinorUnit'
        currency:
          $ref: '#/components/schemas/Currency'
        profile_id:
          allOf:
            - $ref: '#/components/schemas/ProfileId'
          nullable: true
        connector:
          type: string
          nullable: true
        payment_method_id:
          type: string
          description: Identifier for Payment Method
          example: pm_01926c58bc6e77c09e809964e72af8c8
          nullable: true
        return_url:
          type: string
          description: >-
            The url to which user must be redirected to after completion of the
            purchase
          nullable: true
        next_action:
          allOf:
            - $ref: '#/components/schemas/NextActionData'
          nullable: true
        payment_experience:
          allOf:
            - $ref: '#/components/schemas/PaymentExperience'
          nullable: true
        error_code:
          type: string
          nullable: true
        error_message:
          type: string
          nullable: true
        payment_method_type:
          allOf:
            - $ref: '#/components/schemas/PaymentMethodType'
          nullable: true
        client_secret:
          type: string
          description: >-
            This is a token which expires after 15 minutes, used from the client
            to authenticate and create sessions from the SDK
          nullable: true
        billing:
          allOf:
            - $ref: '#/components/schemas/Address'
          nullable: true
        shipping:
          allOf:
            - $ref: '#/components/schemas/Address'
          nullable: true
        payment_type:
          allOf:
            - $ref: '#/components/schemas/PaymentType'
          nullable: true
        payment_token:
          type: string
          example: token_sxJdmpUnpNsJk5VWzcjl
          nullable: true
    Invoice:
      type: object
      required:
        - id
        - subscription_id
        - merchant_id
        - profile_id
        - merchant_connector_id
        - customer_id
        - amount
        - currency
        - status
      properties:
        id:
          $ref: '#/components/schemas/InvoiceId'
        subscription_id:
          $ref: '#/components/schemas/SubscriptionId'
        merchant_id:
          $ref: '#/components/schemas/MerchantId'
        profile_id:
          $ref: '#/components/schemas/ProfileId'
        merchant_connector_id:
          $ref: '#/components/schemas/MerchantConnectorAccountId'
        payment_intent_id:
          allOf:
            - $ref: '#/components/schemas/PaymentId'
          nullable: true
        payment_method_id:
          type: string
          description: Identifier for Payment Method
          example: pm_01926c58bc6e77c09e809964e72af8c8
          nullable: true
        customer_id:
          $ref: '#/components/schemas/CustomerId'
        amount:
          $ref: '#/components/schemas/MinorUnit'
        currency:
          $ref: '#/components/schemas/Currency'
        status:
          $ref: '#/components/schemas/InvoiceStatus'
        billing_processor_invoice_id:
          type: string
          description: billing processor invoice id
          nullable: true
    AddressDetails:
      type: object
      description: Address details
      properties:
        city:
          type: string
          description: The city, district, suburb, town, or village of the address.
          example: New York
          nullable: true
          maxLength: 50
        country:
          allOf:
            - $ref: '#/components/schemas/CountryAlpha2'
          nullable: true
        line1:
          type: string
          description: The first line of the street address or P.O. Box.
          example: 123, King Street
          nullable: true
          maxLength: 200
        line2:
          type: string
          description: >-
            The second line of the street address or P.O. Box (e.g., apartment,
            suite, unit, or building).
          example: Powelson Avenue
          nullable: true
          maxLength: 50
        line3:
          type: string
          description: The third line of the street address, if applicable.
          example: Bridgewater
          nullable: true
          maxLength: 50
        zip:
          type: string
          description: The zip/postal code for the address
          example: '08807'
          nullable: true
          maxLength: 50
        state:
          type: string
          description: The address state
          example: New York
          nullable: true
        first_name:
          type: string
          description: The first name for the address
          example: John
          nullable: true
          maxLength: 255
        last_name:
          type: string
          description: The last name for the address
          example: Doe
          nullable: true
          maxLength: 255
        origin_zip:
          type: string
          description: The zip/postal code of the origin
          example: '08807'
          nullable: true
          maxLength: 50
    PhoneDetails:
      type: object
      properties:
        number:
          type: string
          description: The contact number
          example: '9123456789'
          nullable: true
        country_code:
          type: string
          description: The country code attached to the number
          example: '+1'
          nullable: true
    PaymentMethod:
      type: string
      description: 'Indicates the type of payment method. Eg: ''card'', ''wallet'', etc.'
      enum:
        - card
        - card_redirect
        - pay_later
        - wallet
        - bank_redirect
        - bank_transfer
        - crypto
        - bank_debit
        - reward
        - real_time_payment
        - upi
        - voucher
        - gift_card
        - open_banking
        - mobile_payment
        - network_token
    PaymentMethodType:
      type: string
      description: >-
        Indicates the sub type of payment method. Eg: 'google_pay' & 'apple_pay'
        for wallets.
      enum:
        - ach
        - affirm
        - afterpay_clearpay
        - alfamart
        - ali_pay
        - ali_pay_hk
        - alma
        - amazon_pay
        - paysera
        - apple_pay
        - atome
        - bacs
        - bancontact_card
        - becs
        - benefit
        - bizum
        - blik
        - bluecode
        - boleto
        - bca_bank_transfer
        - bni_va
        - breadpay
        - bri_va
        - bhn_card_network
        - card_redirect
        - cimb_va
        - classic
        - credit
        - crypto_currency
        - cashapp
        - dana
        - danamon_va
        - debit
        - duit_now
        - efecty
        - eft
        - eft_debit_order
        - eps
        - flexiti
        - fps
        - evoucher
        - giropay
        - givex
        - google_pay
        - go_pay
        - gcash
        - ideal
        - interac
        - indomaret
        - klarna
        - kakao_pay
        - local_bank_redirect
        - mandiri_va
        - knet
        - mb_way
        - mobile_pay
        - momo
        - momo_atm
        - multibanco
        - online_banking_thailand
        - online_banking_czech_republic
        - online_banking_finland
        - online_banking_fpx
        - online_banking_poland
        - online_banking_slovakia
        - oxxo
        - pago_efectivo
        - permata_bank_transfer
        - open_banking_uk
        - pay_bright
        - payjustnow
        - paypal
        - paze
        - pix
        - pix_key
        - pix_emv
        - pix_automatico_qr
        - pix_automatico_push
        - pay_safe_card
        - przelewy24
        - prompt_pay
        - pse
        - qris
        - red_compra
        - red_pagos
        - samsung_pay
        - sepa
        - sepa_bank_transfer
        - sepa_guarenteed_debit
        - skrill
        - sofort
        - swish
        - touch_n_go
        - trustly
        - twint
        - upi_collect
        - upi_intent
        - upi_qr
        - vipps
        - viet_qr
        - venmo
        - walley
        - we_chat_pay
        - seven_eleven
        - lawson
        - mini_stop
        - family_mart
        - seicomart
        - pay_easy
        - local_bank_transfer
        - mifinity
        - open_banking_pis
        - direct_carrier_billing
        - instant_bank_transfer
        - instant_bank_transfer_finland
        - instant_bank_transfer_poland
        - revolut_pay
        - indonesian_bank_transfer
        - open_banking
        - network_token
    PaymentMethodDataRequest:
      allOf:
        - allOf:
            - $ref: '#/components/schemas/PaymentMethodData'
          nullable: true
        - type: object
          properties:
            billing:
              allOf:
                - $ref: '#/components/schemas/Address'
              nullable: true
      description: The payment method information provided for making a payment
    FutureUsage:
      type: string
      description: >-
        Specifies how the payment method can be used for future payments.

        - `off_session`: The payment method can be used for future payments when
        the customer is not present.

        - `on_session`: The payment method is intended for use only when the
        customer is present during checkout.

        If omitted, defaults to `on_session`.
      enum:
        - off_session
        - on_session
    CustomerAcceptance:
      type: object
      description: >-
        This "CustomerAcceptance" object is passed during Payments-Confirm
        request, it enlists the type, time, and mode of acceptance properties
        related to an acceptance done by the customer. The customer_acceptance
        sub object is usually passed by the SDK or client.
      required:
        - acceptance_type
      properties:
        acceptance_type:
          $ref: '#/components/schemas/AcceptanceType'
        accepted_at:
          type: string
          format: date-time
          description: Specifying when the customer acceptance was provided
          example: '2022-09-10T10:11:12Z'
          nullable: true
        online:
          allOf:
            - $ref: '#/components/schemas/OnlineMandate'
          nullable: true
      additionalProperties: false
    CaptureMethod:
      type: string
      description: >-
        Specifies how the payment is captured.

        - `automatic`: Funds are captured immediately after successful
        authorization. This is the default behavior if the field is omitted.

        - `manual`: Funds are authorized but not captured. A separate request to
        the `/payments/{payment_id}/capture` endpoint is required to capture the
        funds.
      enum:
        - automatic
        - manual
        - manual_multiple
        - scheduled
        - sequential_automatic
    AuthenticationType:
      type: string
      description: >-
        Specifies the type of cardholder authentication to be applied for a
        payment.


        - `ThreeDs`: Requests 3D Secure (3DS) authentication. If the card is
        enrolled, 3DS authentication will be activated, potentially shifting
        chargeback liability to the issuer.

        - `NoThreeDs`: Indicates that 3D Secure authentication should not be
        performed. The liability for chargebacks typically remains with the
        merchant. This is often the default if not specified.


        Note: The actual authentication behavior can also be influenced by
        merchant configuration and specific connector defaults. Some connectors
        might still enforce 3DS or bypass it regardless of this parameter.
      enum:
        - three_ds
        - no_three_ds
    PaymentType:
      type: string
      description: >-
        The type of the payment that differentiates between normal and various
        types of mandate payments. Use 'setup_mandate' in case of zero auth
        flow.
      enum:
        - normal
        - new_mandate
        - setup_mandate
        - recurring_mandate
        - installment
    PaymentId:
      type: string
      description: A type for payment_id that can be used for payment ids
    IntentStatus:
      type: string
      description: >-
        Represents the overall status of a payment intent.

        The status transitions through various states depending on the payment
        method, confirmation, capture method, and any subsequent actions (like
        customer authentication or manual capture).
      enum:
        - succeeded
        - failed
        - cancelled
        - cancelled_post_capture
        - processing
        - requires_customer_action
        - requires_merchant_action
        - requires_payment_method
        - requires_confirmation
        - requires_capture
        - partially_captured
        - partially_captured_and_capturable
        - partially_authorized_and_requires_capture
        - partially_captured_and_processing
        - conflicted
        - expired
        - review
    MinorUnit:
      type: integer
      format: int64
      description: This Unit struct represents MinorUnit in which core amount works
    Currency:
      type: string
      description: >-
        The three-letter ISO 4217 currency code (e.g., "USD", "EUR") for the
        payment amount. This field is mandatory for creating a payment.
      enum:
        - AED
        - AFN
        - ALL
        - AMD
        - ANG
        - AOA
        - ARS
        - AUD
        - AWG
        - AZN
        - BAM
        - BBD
        - BDT
        - BGN
        - BHD
        - BIF
        - BMD
        - BND
        - BOB
        - BRL
        - BSD
        - BTN
        - BWP
        - BYN
        - BZD
        - CAD
        - CDF
        - CHF
        - CLF
        - CLP
        - CNY
        - COP
        - CRC
        - CUC
        - CUP
        - CVE
        - CZK
        - DJF
        - DKK
        - DOP
        - DZD
        - EGP
        - ERN
        - ETB
        - EUR
        - FJD
        - FKP
        - GBP
        - GEL
        - GHS
        - GIP
        - GMD
        - GNF
        - GTQ
        - GYD
        - HKD
        - HNL
        - HRK
        - HTG
        - HUF
        - IDR
        - ILS
        - INR
        - IQD
        - IRR
        - ISK
        - JMD
        - JOD
        - JPY
        - KES
        - KGS
        - KHR
        - KMF
        - KPW
        - KRW
        - KWD
        - KYD
        - KZT
        - LAK
        - LBP
        - LKR
        - LRD
        - LSL
        - LYD
        - MAD
        - MDL
        - MGA
        - MKD
        - MMK
        - MNT
        - MOP
        - MRU
        - MUR
        - MVR
        - MWK
        - MXN
        - MYR
        - MZN
        - NAD
        - NGN
        - NIO
        - NOK
        - NPR
        - NZD
        - OMR
        - PAB
        - PEN
        - PGK
        - PHP
        - PKR
        - PLN
        - PYG
        - QAR
        - RON
        - RSD
        - RUB
        - RWF
        - SAR
        - SBD
        - SCR
        - SDG
        - SEK
        - SGD
        - SHP
        - SLE
        - SLL
        - SOS
        - SRD
        - SSP
        - STD
        - STN
        - SVC
        - SYP
        - SZL
        - THB
        - TJS
        - TMT
        - TND
        - TOP
        - TRY
        - TTD
        - TWD
        - TZS
        - UAH
        - UGX
        - USD
        - UYU
        - UZS
        - VES
        - VND
        - VUV
        - WST
        - XAF
        - XCD
        - XOF
        - XPF
        - YER
        - ZAR
        - ZMW
        - ZWL
    NextActionData:
      oneOf:
        - type: object
          description: Contains the url for redirection flow
          required:
            - redirect_to_url
            - type
          properties:
            redirect_to_url:
              type: string
            type:
              type: string
              enum:
                - redirect_to_url
        - type: object
          required:
            - popup_url
            - redirect_response_url
            - type
          properties:
            popup_url:
              type: string
            redirect_response_url:
              type: string
            type:
              type: string
              enum:
                - redirect_inside_popup
        - type: object
          description: >-
            Informs the next steps for bank transfer and also contains the
            charges details (ex: amount received, amount charged etc)
          required:
            - bank_transfer_steps_and_charges_details
            - type
          properties:
            bank_transfer_steps_and_charges_details:
              $ref: '#/components/schemas/BankTransferNextStepsData'
            type:
              type: string
              enum:
                - display_bank_transfer_information
        - type: object
          description: Contains third party sdk session token response
          required:
            - type
          properties:
            session_token:
              allOf:
                - $ref: '#/components/schemas/SessionToken'
              nullable: true
            type:
              type: string
              enum:
                - third_party_sdk_session_token
        - type: object
          description: Contains url for Qr code image, this qr code has to be shown in sdk
          required:
            - image_data_url
            - qr_code_url
            - type
          properties:
            image_data_url:
              type: string
              description: Hyperswitch generated image data source url
            display_to_timestamp:
              type: integer
              format: int64
              nullable: true
            qr_code_url:
              type: string
              description: The url for Qr code given by the connector
            display_text:
              type: string
              nullable: true
            border_color:
              type: string
              nullable: true
            raw_qr_data:
              type: string
              description: >-
                The raw QR code data (EMV copy and paste) used for Brazilian
                payment methods like Pix
              nullable: true
            type:
              type: string
              enum:
                - qr_code_information
        - type: object
          description: Contains url to fetch Qr code data
          required:
            - qr_code_fetch_url
            - type
          properties:
            qr_code_fetch_url:
              type: string
            type:
              type: string
              enum:
                - fetch_qr_code_information
        - type: object
          required:
            - sdk_uri
            - display_from_timestamp
            - type
          properties:
            sdk_uri:
              type: string
            display_from_timestamp:
              type: integer
            display_to_timestamp:
              type: integer
              nullable: true
            poll_config:
              allOf:
                - $ref: '#/components/schemas/PollConfig'
              nullable: true
            type:
              type: string
              enum:
                - invoke_upi_intent_sdk
        - type: object
          required:
            - qr_code_url
            - display_from_timestamp
            - type
          properties:
            qr_code_url:
              type: string
            display_from_timestamp:
              type: integer
            display_to_timestamp:
              type: integer
              nullable: true
            poll_config:
              allOf:
                - $ref: '#/components/schemas/PollConfig'
              nullable: true
            type:
              type: string
              enum:
                - invoke_upi_qr_flow
        - type: object
          description: Contains the download url and the reference number for transaction
          required:
            - voucher_details
            - type
          properties:
            voucher_details:
              type: string
            type:
              type: string
              enum:
                - display_voucher_information
        - type: object
          description: >-
            Contains duration for displaying a wait screen, wait screen with
            timer is displayed by sdk
          required:
            - display_from_timestamp
            - type
          properties:
            display_from_timestamp:
              type: integer
            display_to_timestamp:
              type: integer
              nullable: true
            poll_config:
              allOf:
                - $ref: '#/components/schemas/PollConfig'
              nullable: true
            type:
              type: string
              enum:
                - wait_screen_information
        - type: object
          description: >-
            Contains the information regarding three_ds_method_data submission,
            three_ds authentication, and authorization flows
          required:
            - three_ds_data
            - type
          properties:
            three_ds_data:
              $ref: '#/components/schemas/ThreeDsData'
            type:
              type: string
              enum:
                - three_ds_invoke
        - type: object
          required:
            - next_action_data
            - type
          properties:
            next_action_data:
              $ref: '#/components/schemas/SdkNextActionData'
            type:
              type: string
              enum:
                - invoke_sdk_client
        - type: object
          description: Contains consent to collect otp for mobile payment
          required:
            - consent_data_required
            - type
          properties:
            consent_data_required:
              $ref: '#/components/schemas/MobilePaymentConsent'
            type:
              type: string
              enum:
                - collect_otp
        - type: object
          description: Contains data required to invoke hidden iframe
          required:
            - iframe_data
            - type
          properties:
            iframe_data:
              $ref: '#/components/schemas/IframeData'
            type:
              type: string
              enum:
                - invoke_hidden_iframe
        - type: object
          description: >-
            The data required to trigger the DDC (Device Data Collection) flow
            by rendering the provided URL in a hidden iframe.
          required:
            - ddc_data
            - type
          properties:
            ddc_data:
              $ref: '#/components/schemas/DDCData'
            type:
              type: string
              enum:
                - invoke_ddc
      discriminator:
        propertyName: type
    PaymentExperience:
      type: string
      description: >-
        To indicate the type of payment experience that the customer would go
        through
      enum:
        - redirect_to_url
        - invoke_sdk_client
        - display_qr_code
        - one_click
        - link_wallet
        - invoke_payment_app
        - display_wait_screen
        - collect_otp
    InvoiceId:
      type: string
      description: A type for invoice_id that can be used for invoice ids
    MerchantConnectorAccountId:
      type: string
      description: >-
        A type for merchant_connector_id that can be used for
        merchant_connector_account ids
    InvoiceStatus:
      type: string
      enum:
        - invoice_created
        - payment_pending
        - payment_pending_timeout
        - payment_succeeded
        - payment_failed
        - payment_canceled
        - invoice_paid
        - manual_review
        - voided
    CountryAlpha2:
      type: string
      enum:
        - AF
        - AX
        - AL
        - DZ
        - AS
        - AD
        - AO
        - AI
        - AQ
        - AG
        - AR
        - AM
        - AW
        - AU
        - AT
        - AZ
        - BS
        - BH
        - BD
        - BB
        - BY
        - BE
        - BZ
        - BJ
        - BM
        - BT
        - BO
        - BQ
        - BA
        - BW
        - BV
        - BR
        - IO
        - BN
        - BG
        - BF
        - BI
        - KH
        - CM
        - CA
        - CV
        - KY
        - CF
        - TD
        - CL
        - CN
        - CX
        - CC
        - CO
        - KM
        - CG
        - CD
        - CK
        - CR
        - CI
        - HR
        - CU
        - CW
        - CY
        - CZ
        - DK
        - DJ
        - DM
        - DO
        - EC
        - EG
        - SV
        - GQ
        - ER
        - EE
        - ET
        - FK
        - FO
        - FJ
        - FI
        - FR
        - GF
        - PF
        - TF
        - GA
        - GM
        - GE
        - DE
        - GH
        - GI
        - GR
        - GL
        - GD
        - GP
        - GU
        - GT
        - GG
        - GN
        - GW
        - GY
        - HT
        - HM
        - VA
        - HN
        - HK
        - HU
        - IS
        - IN
        - ID
        - IR
        - IQ
        - IE
        - IM
        - IL
        - IT
        - JM
        - JP
        - JE
        - JO
        - KZ
        - KE
        - KI
        - KP
        - KR
        - KW
        - KG
        - LA
        - LV
        - LB
        - LS
        - LR
        - LY
        - LI
        - LT
        - LU
        - MO
        - MK
        - MG
        - MW
        - MY
        - MV
        - ML
        - MT
        - MH
        - MQ
        - MR
        - MU
        - YT
        - MX
        - FM
        - MD
        - MC
        - MN
        - ME
        - MS
        - MA
        - MZ
        - MM
        - NA
        - NR
        - NP
        - NL
        - NC
        - NZ
        - NI
        - NE
        - NG
        - NU
        - NF
        - MP
        - 'NO'
        - OM
        - PK
        - PW
        - PS
        - PA
        - PG
        - PY
        - PE
        - PH
        - PN
        - PL
        - PT
        - PR
        - QA
        - RE
        - RO
        - RU
        - RW
        - BL
        - SH
        - KN
        - LC
        - MF
        - PM
        - VC
        - WS
        - SM
        - ST
        - SA
        - SN
        - RS
        - SC
        - SL
        - SG
        - SX
        - SK
        - SI
        - SB
        - SO
        - ZA
        - GS
        - SS
        - ES
        - LK
        - SD
        - SR
        - SJ
        - SZ
        - SE
        - CH
        - SY
        - TW
        - TJ
        - TZ
        - TH
        - TL
        - TG
        - TK
        - TO
        - TT
        - TN
        - TR
        - TM
        - TC
        - TV
        - UG
        - UA
        - AE
        - GB
        - UM
        - UY
        - UZ
        - VU
        - VE
        - VN
        - VG
        - VI
        - WF
        - EH
        - YE
        - ZM
        - ZW
        - US
    PaymentMethodData:
      oneOf:
        - type: object
          title: Card
          required:
            - card
          properties:
            card:
              $ref: '#/components/schemas/Card'
        - type: object
          title: CardRedirect
          required:
            - card_redirect
          properties:
            card_redirect:
              $ref: '#/components/schemas/CardRedirectData'
        - type: object
          title: Wallet
          required:
            - wallet
          properties:
            wallet:
              $ref: '#/components/schemas/WalletData'
        - type: object
          title: PayLater
          required:
            - pay_later
          properties:
            pay_later:
              $ref: '#/components/schemas/PayLaterData'
        - type: object
          title: BankRedirect
          required:
            - bank_redirect
          properties:
            bank_redirect:
              $ref: '#/components/schemas/BankRedirectData'
        - type: object
          title: BankDebit
          required:
            - bank_debit
          properties:
            bank_debit:
              $ref: '#/components/schemas/BankDebitData'
        - type: object
          title: BankTransfer
          required:
            - bank_transfer
          properties:
            bank_transfer:
              $ref: '#/components/schemas/BankTransferData'
        - type: object
          title: RealTimePayment
          required:
            - real_time_payment
          properties:
            real_time_payment:
              $ref: '#/components/schemas/RealTimePaymentData'
        - type: object
          title: Crypto
          required:
            - crypto
          properties:
            crypto:
              $ref: '#/components/schemas/CryptoData'
        - type: string
          title: MandatePayment
          enum:
            - mandate_payment
        - type: string
          title: Reward
          enum:
            - reward
        - type: object
          title: Upi
          required:
            - upi
          properties:
            upi:
              $ref: '#/components/schemas/UpiData'
        - type: object
          title: Voucher
          required:
            - voucher
          properties:
            voucher:
              $ref: '#/components/schemas/VoucherData'
        - type: object
          title: GiftCard
          required:
            - gift_card
          properties:
            gift_card:
              $ref: '#/components/schemas/GiftCardData'
        - type: object
          title: CardToken
          required:
            - card_token
          properties:
            card_token:
              $ref: '#/components/schemas/CardToken'
        - type: object
          title: OpenBanking
          required:
            - open_banking
          properties:
            open_banking:
              $ref: '#/components/schemas/OpenBankingData'
        - type: object
          title: MobilePayment
          required:
            - mobile_payment
          properties:
            mobile_payment:
              $ref: '#/components/schemas/MobilePaymentData'
        - type: object
          title: NetworkToken
          required:
            - network_token
          properties:
            network_token:
              $ref: '#/components/schemas/NetworkTokenData'
    AcceptanceType:
      type: string
      description: This is used to indicate if the mandate was accepted online or offline
      enum:
        - online
        - offline
    OnlineMandate:
      type: object
      description: Details of online mandate
      required:
        - ip_address
        - user_agent
      properties:
        ip_address:
          type: string
          description: >-
            Ip address of the customer machine from which the mandate was
            created
          example: 123.32.25.123
        user_agent:
          type: string
          description: The user-agent of the customer's browser
      additionalProperties: false
    BankTransferNextStepsData:
      allOf:
        - $ref: '#/components/schemas/BankTransferInstructions'
        - type: object
          properties:
            receiver:
              allOf:
                - $ref: '#/components/schemas/ReceiverDetails'
              nullable: true
    SessionToken:
      oneOf:
        - allOf:
            - $ref: '#/components/schemas/GpaySessionTokenResponse'
            - type: object
              required:
                - wallet_name
              properties:
                wallet_name:
                  type: string
                  enum:
                    - google_pay
        - allOf:
            - $ref: '#/components/schemas/SamsungPaySessionTokenResponse'
            - type: object
              required:
                - wallet_name
              properties:
                wallet_name:
                  type: string
                  enum:
                    - samsung_pay
        - allOf:
            - $ref: '#/components/schemas/KlarnaSessionTokenResponse'
            - type: object
              required:
                - wallet_name
              properties:
                wallet_name:
                  type: string
                  enum:
                    - klarna
        - allOf:
            - $ref: '#/components/schemas/PaypalSessionTokenResponse'
            - type: object
              required:
                - wallet_name
              properties:
                wallet_name:
                  type: string
                  enum:
                    - paypal
        - allOf:
            - $ref: '#/components/schemas/ApplepaySessionTokenResponse'
            - type: object
              required:
                - wallet_name
              properties:
                wallet_name:
                  type: string
                  enum:
                    - apple_pay
        - allOf:
            - $ref: '#/components/schemas/OpenBankingSessionToken'
            - type: object
              required:
                - wallet_name
              properties:
                wallet_name:
                  type: string
                  enum:
                    - open_banking
        - allOf:
            - $ref: '#/components/schemas/PazeSessionTokenResponse'
            - type: object
              required:
                - wallet_name
              properties:
                wallet_name:
                  type: string
                  enum:
                    - paze
        - allOf:
            - $ref: '#/components/schemas/ClickToPaySessionResponse'
            - type: object
              required:
                - wallet_name
              properties:
                wallet_name:
                  type: string
                  enum:
                    - click_to_pay
        - allOf:
            - $ref: '#/components/schemas/AmazonPaySessionTokenResponse'
            - type: object
              required:
                - wallet_name
              properties:
                wallet_name:
                  type: string
                  enum:
                    - amazon_pay
        - type: object
          required:
            - wallet_name
          properties:
            wallet_name:
              type: string
              enum:
                - no_session_token_received
      discriminator:
        propertyName: wallet_name
    PollConfig:
      type: object
      required:
        - delay_in_secs
        - frequency
      properties:
        delay_in_secs:
          type: integer
          format: int32
          description: Interval of the poll
          minimum: 0
        frequency:
          type: integer
          format: int32
          description: Frequency of the poll
          minimum: 0
    ThreeDsData:
      type: object
      required:
        - three_ds_server_transaction_id
        - maximum_supported_3ds_version
        - connector_authentication_id
        - three_ds_method_data
        - three_ds_method_url
        - message_version
        - directory_server_id
      properties:
        three_ds_server_transaction_id:
          type: string
          description: The unique identifier for this authentication from the 3DS server.
        maximum_supported_3ds_version:
          type: string
          description: The maximum supported 3DS version.
        connector_authentication_id:
          type: string
          description: The unique identifier for this authentication from the connector.
        three_ds_method_data:
          type: string
          description: The data required to perform the 3DS method.
        three_ds_method_url:
          type: string
          description: The URL to which the user should be redirected after authentication.
          example: https://example.com/redirect
        message_version:
          type: string
          description: The version of the message.
        directory_server_id:
          type: string
          description: The unique identifier for this authentication.
    SdkNextActionData:
      type: object
      required:
        - next_action
      properties:
        next_action:
          $ref: '#/components/schemas/NextActionCall'
        order_id:
          type: string
          nullable: true
    MobilePaymentConsent:
      type: string
      enum:
        - consent_required
        - consent_not_required
        - consent_optional
    IframeData:
      oneOf:
        - type: object
          required:
            - three_ds_method_url
            - three_ds_method_data_submission
            - directory_server_id
            - method_key
          properties:
            three_ds_method_url:
              type: string
              description: ThreeDS method url
            three_ds_method_data_submission:
              type: boolean
              description: Whether ThreeDS method data submission is required
            three_ds_method_data:
              type: string
              description: ThreeDS method data
              nullable: true
            directory_server_id:
              type: string
              description: ThreeDS Server ID
            message_version:
              type: string
              description: ThreeDS Protocol version
              nullable: true
            method_key:
              type: string
              enum:
                - threeDSMethodData
      discriminator:
        propertyName: method_key
    DDCData:
      type: object
      required:
        - iframe_url
      properties:
        iframe_url:
          type: string
        timeout_ms:
          type: integer
          format: int32
          nullable: true
    Card:
      type: object
      required:
        - card_number
        - card_exp_month
        - card_exp_year
        - card_holder_name
        - card_cvc
      properties:
        card_number:
          type: string
          description: The card number
          example: '4242424242424242'
        card_exp_month:
          type: string
          description: The card's expiry month
          example: '24'
        card_exp_year:
          type: string
          description: The card's expiry year
          example: '24'
        card_holder_name:
          type: string
          description: The card holder's name
          example: John Test
        card_cvc:
          type: string
          description: The CVC number for the card
          example: '242'
        card_issuer:
          type: string
          description: The name of the issuer of card
          example: chase
          nullable: true
        card_network:
          allOf:
            - $ref: '#/components/schemas/CardNetwork'
          nullable: true
        card_type:
          type: string
          example: CREDIT
          nullable: true
        card_issuing_country:
          type: string
          example: INDIA
          nullable: true
        card_issuing_country_code:
          type: string
          example: IN
          nullable: true
        bank_code:
          type: string
          example: JP_AMEX
          nullable: true
        nick_name:
          type: string
          description: The card holder's nick name
          example: John Test
          nullable: true
    CardRedirectData:
      oneOf:
        - type: object
          required:
            - knet
          properties:
            knet:
              type: object
        - type: object
          required:
            - benefit
          properties:
            benefit:
              type: object
        - type: object
          required:
            - momo_atm
          properties:
            momo_atm:
              type: object
        - type: object
          required:
            - card_redirect
          properties:
            card_redirect:
              type: object
    WalletData:
      oneOf:
        - type: object
          title: AliPayHkRedirect
          required:
            - ali_pay_hk_redirect
          properties:
            ali_pay_hk_redirect:
              $ref: '#/components/schemas/AliPayHkRedirection'
        - type: object
          title: AliPayQr
          required:
            - ali_pay_qr
          properties:
            ali_pay_qr:
              $ref: '#/components/schemas/AliPayQr'
        - type: object
          title: AliPayRedirect
          required:
            - ali_pay_redirect
          properties:
            ali_pay_redirect:
              $ref: '#/components/schemas/AliPayRedirection'
        - type: object
          title: AmazonPay
          required:
            - amazon_pay
          properties:
            amazon_pay:
              $ref: '#/components/schemas/AmazonPayWalletData'
        - type: object
          title: AmazonPayRedirect
          required:
            - amazon_pay_redirect
          properties:
            amazon_pay_redirect:
              $ref: '#/components/schemas/AmazonPayRedirectData'
        - type: object
          title: ApplePay
          required:
            - apple_pay
          properties:
            apple_pay:
              $ref: '#/components/schemas/ApplePayWalletData'
        - type: object
          title: ApplePayRedirect
          required:
            - apple_pay_redirect
          properties:
            apple_pay_redirect:
              $ref: '#/components/schemas/ApplePayRedirectData'
        - type: object
          title: ApplePayThirdPartySdk
          required:
            - apple_pay_third_party_sdk
          properties:
            apple_pay_third_party_sdk:
              $ref: '#/components/schemas/ApplePayThirdPartySdkData'
        - type: object
          title: BluecodeRedirect
          required:
            - bluecode_redirect
          properties:
            bluecode_redirect:
              type: object
              description: The wallet data for Bluecode QR Code Redirect
        - type: object
          title: CashappQr
          required:
            - cashapp_qr
          properties:
            cashapp_qr:
              $ref: '#/components/schemas/CashappQr'
        - type: object
          title: DanaRedirect
          required:
            - dana_redirect
          properties:
            dana_redirect:
              type: object
              description: Wallet data for DANA redirect flow
        - type: object
          title: GcashRedirect
          required:
            - gcash_redirect
          properties:
            gcash_redirect:
              $ref: '#/components/schemas/GcashRedirection'
        - type: object
          title: GoPayRedirect
          required:
            - go_pay_redirect
          properties:
            go_pay_redirect:
              $ref: '#/components/schemas/GoPayRedirection'
        - type: object
          title: GooglePay
          required:
            - google_pay
          properties:
            google_pay:
              $ref: '#/components/schemas/GooglePayWalletData'
        - type: object
          title: GooglePayRedirect
          required:
            - google_pay_redirect
          properties:
            google_pay_redirect:
              $ref: '#/components/schemas/GooglePayRedirectData'
        - type: object
          title: GooglePayThirdPartySdk
          required:
            - google_pay_third_party_sdk
          properties:
            google_pay_third_party_sdk:
              $ref: '#/components/schemas/GooglePayThirdPartySdkData'
        - type: object
          title: KakaoPayRedirect
          required:
            - kakao_pay_redirect
          properties:
            kakao_pay_redirect:
              $ref: '#/components/schemas/KakaoPayRedirection'
        - type: object
          title: MbWayRedirect
          required:
            - mb_way_redirect
          properties:
            mb_way_redirect:
              $ref: '#/components/schemas/MbWayRedirection'
        - type: object
          title: Mifinity
          required:
            - mifinity
          properties:
            mifinity:
              $ref: '#/components/schemas/MifinityData'
        - type: object
          title: MobilePayRedirect
          required:
            - mobile_pay_redirect
          properties:
            mobile_pay_redirect:
              $ref: '#/components/schemas/MobilePayRedirection'
        - type: object
          title: MomoRedirect
          required:
            - momo_redirect
          properties:
            momo_redirect:
              $ref: '#/components/schemas/MomoRedirection'
        - type: object
          title: PaypalRedirect
          required:
            - paypal_redirect
          properties:
            paypal_redirect:
              $ref: '#/components/schemas/PaypalRedirection'
        - type: object
          title: PaypalSdk
          required:
            - paypal_sdk
          properties:
            paypal_sdk:
              $ref: '#/components/schemas/PayPalWalletData'
        - type: object
          title: Paysera
          required:
            - paysera
          properties:
            paysera:
              $ref: '#/components/schemas/PayseraData'
        - type: object
          title: Paze
          required:
            - paze
          properties:
            paze:
              $ref: '#/components/schemas/PazeWalletData'
        - type: object
          title: RevolutPay
          required:
            - revolut_pay
          properties:
            revolut_pay:
              $ref: '#/components/schemas/RevolutPayData'
        - type: object
          title: SamsungPay
          required:
            - samsung_pay
          properties:
            samsung_pay:
              $ref: '#/components/schemas/SamsungPayWalletData'
        - type: object
          title: Skrill
          required:
            - skrill
          properties:
            skrill:
              $ref: '#/components/schemas/SkrillData'
        - type: object
          title: SwishQr
          required:
            - swish_qr
          properties:
            swish_qr:
              $ref: '#/components/schemas/SwishQrData'
        - type: object
          title: TouchNGoRedirect
          required:
            - touch_n_go_redirect
          properties:
            touch_n_go_redirect:
              $ref: '#/components/schemas/TouchNGoRedirection'
        - type: object
          title: TwintRedirect
          required:
            - twint_redirect
          properties:
            twint_redirect:
              type: object
              description: Wallet data for Twint Redirection
        - type: object
          title: VippsRedirect
          required:
            - vipps_redirect
          properties:
            vipps_redirect:
              type: object
              description: Wallet data for Vipps Redirection
        - type: object
          title: WeChatPayQr
          required:
            - we_chat_pay_qr
          properties:
            we_chat_pay_qr:
              $ref: '#/components/schemas/WeChatPayQr'
        - type: object
          title: WeChatPayRedirect
          required:
            - we_chat_pay_redirect
          properties:
            we_chat_pay_redirect:
              $ref: '#/components/schemas/WeChatPayRedirection'
    PayLaterData:
      oneOf:
        - type: object
          required:
            - klarna_redirect
          properties:
            klarna_redirect:
              type: object
              description: For KlarnaRedirect as PayLater Option
              properties:
                billing_email:
                  type: string
                  description: The billing email
                  nullable: true
                billing_country:
                  allOf:
                    - $ref: '#/components/schemas/CountryAlpha2'
                  nullable: true
        - type: object
          required:
            - klarna_sdk
          properties:
            klarna_sdk:
              type: object
              description: For Klarna Sdk as PayLater Option
              required:
                - token
              properties:
                token:
                  type: string
                  description: The token for the sdk workflow
        - type: object
          required:
            - affirm_redirect
          properties:
            affirm_redirect:
              type: object
              description: For Affirm redirect as PayLater Option
        - type: object
          required:
            - afterpay_clearpay_redirect
          properties:
            afterpay_clearpay_redirect:
              type: object
              description: For AfterpayClearpay redirect as PayLater Option
              properties:
                billing_email:
                  type: string
                  description: The billing email
                  nullable: true
                billing_name:
                  type: string
                  description: The billing name
                  nullable: true
        - type: object
          required:
            - pay_bright_redirect
          properties:
            pay_bright_redirect:
              type: object
              description: For PayBright Redirect as PayLater Option
        - type: object
          required:
            - flexiti_redirect
          properties:
            flexiti_redirect:
              type: object
              description: For Flexiti Redirect as PayLater long term finance Option
        - type: object
          required:
            - walley_redirect
          properties:
            walley_redirect:
              type: object
              description: For WalleyRedirect as PayLater Option
        - type: object
          required:
            - alma_redirect
          properties:
            alma_redirect:
              type: object
              description: For Alma Redirection as PayLater Option
        - type: object
          required:
            - atome_redirect
          properties:
            atome_redirect:
              type: object
        - type: object
          required:
            - breadpay_redirect
          properties:
            breadpay_redirect:
              type: object
        - type: object
          required:
            - payjustnow_redirect
          properties:
            payjustnow_redirect:
              type: object
    BankRedirectData:
      oneOf:
        - type: object
          required:
            - bancontact_card
          properties:
            bancontact_card:
              type: object
              required:
                - card_number
                - card_exp_month
                - card_exp_year
                - card_holder_name
              properties:
                card_number:
                  type: string
                  description: The card number
                  example: '4242424242424242'
                card_exp_month:
                  type: string
                  description: The card's expiry month
                  example: '24'
                card_exp_year:
                  type: string
                  description: The card's expiry year
                  example: '24'
                card_holder_name:
                  type: string
                  description: The card holder's name
                  example: John Test
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/BankRedirectBilling'
                  nullable: true
        - type: object
          required:
            - bizum
          properties:
            bizum:
              type: object
        - type: object
          required:
            - blik
          properties:
            blik:
              type: object
              properties:
                blik_code:
                  type: string
                  nullable: true
        - type: object
          required:
            - eps
          properties:
            eps:
              type: object
              required:
                - bank_name
                - country
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/BankRedirectBilling'
                  nullable: true
                bank_name:
                  $ref: '#/components/schemas/BankNames'
                country:
                  $ref: '#/components/schemas/CountryAlpha2'
        - type: object
          required:
            - giropay
          properties:
            giropay:
              type: object
              required:
                - country
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/BankRedirectBilling'
                  nullable: true
                bank_account_bic:
                  type: string
                  description: Bank account bic code
                  nullable: true
                bank_account_iban:
                  type: string
                  description: Bank account iban
                  nullable: true
                country:
                  $ref: '#/components/schemas/CountryAlpha2'
        - type: object
          required:
            - ideal
          properties:
            ideal:
              type: object
              required:
                - bank_name
                - country
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/BankRedirectBilling'
                  nullable: true
                bank_name:
                  $ref: '#/components/schemas/BankNames'
                country:
                  $ref: '#/components/schemas/CountryAlpha2'
        - type: object
          required:
            - interac
          properties:
            interac:
              type: object
              properties:
                country:
                  allOf:
                    - $ref: '#/components/schemas/CountryAlpha2'
                  nullable: true
                email:
                  type: string
                  example: john.doe@example.com
                  nullable: true
        - type: object
          required:
            - online_banking_czech_republic
          properties:
            online_banking_czech_republic:
              type: object
              required:
                - issuer
              properties:
                issuer:
                  $ref: '#/components/schemas/BankNames'
        - type: object
          required:
            - online_banking_finland
          properties:
            online_banking_finland:
              type: object
              properties:
                email:
                  type: string
                  nullable: true
        - type: object
          required:
            - online_banking_poland
          properties:
            online_banking_poland:
              type: object
              required:
                - issuer
              properties:
                issuer:
                  $ref: '#/components/schemas/BankNames'
        - type: object
          required:
            - online_banking_slovakia
          properties:
            online_banking_slovakia:
              type: object
              required:
                - issuer
              properties:
                issuer:
                  $ref: '#/components/schemas/BankNames'
        - type: object
          required:
            - open_banking_uk
          properties:
            open_banking_uk:
              type: object
              required:
                - issuer
                - country
              properties:
                issuer:
                  $ref: '#/components/schemas/BankNames'
                country:
                  $ref: '#/components/schemas/CountryAlpha2'
        - type: object
          required:
            - przelewy24
          properties:
            przelewy24:
              type: object
              properties:
                bank_name:
                  allOf:
                    - $ref: '#/components/schemas/BankNames'
                  nullable: true
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/BankRedirectBilling'
                  nullable: true
        - type: object
          required:
            - sofort
          properties:
            sofort:
              type: object
              required:
                - country
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/BankRedirectBilling'
                  nullable: true
                country:
                  $ref: '#/components/schemas/CountryAlpha2'
                preferred_language:
                  type: string
                  description: The preferred language
                  example: en
                  nullable: true
        - type: object
          required:
            - trustly
          properties:
            trustly:
              type: object
              properties:
                country:
                  allOf:
                    - $ref: '#/components/schemas/CountryAlpha2'
                  nullable: true
        - type: object
          required:
            - online_banking_fpx
          properties:
            online_banking_fpx:
              type: object
              required:
                - issuer
              properties:
                issuer:
                  $ref: '#/components/schemas/BankNames'
        - type: object
          required:
            - online_banking_thailand
          properties:
            online_banking_thailand:
              type: object
              required:
                - issuer
              properties:
                issuer:
                  $ref: '#/components/schemas/BankNames'
        - type: object
          required:
            - local_bank_redirect
          properties:
            local_bank_redirect:
              type: object
        - type: object
          required:
            - eft
          properties:
            eft:
              type: object
              required:
                - provider
              properties:
                provider:
                  type: string
                  description: The preferred eft provider
                  example: ozow
        - type: object
          required:
            - open_banking
          properties:
            open_banking:
              type: object
    BankDebitData:
      oneOf:
        - type: object
          required:
            - ach_bank_debit
          properties:
            ach_bank_debit:
              type: object
              description: Payment Method data for Ach bank debit
              required:
                - account_number
                - routing_number
                - bank_account_holder_name
                - bank_name
                - bank_type
                - bank_holder_type
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/BankDebitBilling'
                  nullable: true
                account_number:
                  type: string
                  description: Account number for ach bank debit payment
                  example: '000123456789'
                routing_number:
                  type: string
                  description: Routing number for ach bank debit payment
                  example: '110000000'
                bank_account_holder_name:
                  type: string
                  example: John Doe
                bank_name:
                  type: string
                  example: ACH
                bank_type:
                  type: string
                  example: Checking
                bank_holder_type:
                  type: string
                  example: Personal
        - type: object
          required:
            - sepa_bank_debit
          properties:
            sepa_bank_debit:
              type: object
              required:
                - iban
                - bank_account_holder_name
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/BankDebitBilling'
                  nullable: true
                iban:
                  type: string
                  description: International bank account number (iban) for SEPA
                  example: DE89370400440532013000
                bank_account_holder_name:
                  type: string
                  description: Owner name for bank debit
                  example: A. Schneider
        - type: object
          required:
            - sepa_guarenteed_bank_debit
          properties:
            sepa_guarenteed_bank_debit:
              type: object
              required:
                - iban
                - bank_account_holder_name
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/BankDebitBilling'
                  nullable: true
                iban:
                  type: string
                  description: International bank account number (iban) for SEPA
                  example: DE89370400440532013000
                bank_account_holder_name:
                  type: string
                  description: Owner name for bank debit
                  example: A. Schneider
        - type: object
          required:
            - becs_bank_debit
          properties:
            becs_bank_debit:
              type: object
              required:
                - account_number
                - bsb_number
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/BankDebitBilling'
                  nullable: true
                account_number:
                  type: string
                  description: Account number for Becs payment method
                  example: '000123456'
                bsb_number:
                  type: string
                  description: Bank-State-Branch (bsb) number
                  example: '000000'
                bank_account_holder_name:
                  type: string
                  description: Owner name for bank debit
                  example: A. Schneider
                  nullable: true
        - type: object
          required:
            - bacs_bank_debit
          properties:
            bacs_bank_debit:
              type: object
              required:
                - account_number
                - sort_code
                - bank_account_holder_name
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/BankDebitBilling'
                  nullable: true
                account_number:
                  type: string
                  description: Account number for Bacs payment method
                  example: '00012345'
                sort_code:
                  type: string
                  description: Sort code for Bacs payment method
                  example: '108800'
                bank_account_holder_name:
                  type: string
                  description: holder name for bank debit
                  example: A. Schneider
        - type: object
          required:
            - eft_debit_order
          properties:
            eft_debit_order:
              type: object
              required:
                - account_number
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/BankDebitBilling'
                  nullable: true
                account_number:
                  type: string
                  description: Account number for eft bank debit payment
                  example: '000123456789'
                branch_code:
                  type: string
                  description: Branch code for eft bank debit payment
                  example: '110000000'
                  nullable: true
                bank_account_holder_name:
                  type: string
                  example: John Doe
                  nullable: true
                bank_name:
                  allOf:
                    - $ref: '#/components/schemas/BankNames'
                  nullable: true
                bank_type:
                  allOf:
                    - $ref: '#/components/schemas/BankType'
                  nullable: true
    BankTransferData:
      oneOf:
        - type: object
          required:
            - ach_bank_transfer
          properties:
            ach_bank_transfer:
              type: object
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/AchBillingDetails'
                  nullable: true
        - type: object
          required:
            - sepa_bank_transfer
          properties:
            sepa_bank_transfer:
              type: object
              required:
                - country
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/SepaAndBacsBillingDetails'
                  nullable: true
                country:
                  $ref: '#/components/schemas/CountryAlpha2'
        - type: object
          required:
            - bacs_bank_transfer
          properties:
            bacs_bank_transfer:
              type: object
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/SepaAndBacsBillingDetails'
                  nullable: true
        - type: object
          required:
            - multibanco_bank_transfer
          properties:
            multibanco_bank_transfer:
              type: object
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/MultibancoBillingDetails'
                  nullable: true
        - type: object
          required:
            - permata_bank_transfer
          properties:
            permata_bank_transfer:
              type: object
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/DokuBillingDetails'
                  nullable: true
        - type: object
          required:
            - bca_bank_transfer
          properties:
            bca_bank_transfer:
              type: object
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/DokuBillingDetails'
                  nullable: true
        - type: object
          required:
            - bni_va_bank_transfer
          properties:
            bni_va_bank_transfer:
              type: object
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/DokuBillingDetails'
                  nullable: true
        - type: object
          required:
            - bri_va_bank_transfer
          properties:
            bri_va_bank_transfer:
              type: object
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/DokuBillingDetails'
                  nullable: true
        - type: object
          required:
            - cimb_va_bank_transfer
          properties:
            cimb_va_bank_transfer:
              type: object
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/DokuBillingDetails'
                  nullable: true
        - type: object
          required:
            - danamon_va_bank_transfer
          properties:
            danamon_va_bank_transfer:
              type: object
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/DokuBillingDetails'
                  nullable: true
        - type: object
          required:
            - mandiri_va_bank_transfer
          properties:
            mandiri_va_bank_transfer:
              type: object
              properties:
                billing_details:
                  allOf:
                    - $ref: '#/components/schemas/DokuBillingDetails'
                  nullable: true
        - type: object
          required:
            - pix
          properties:
            pix:
              type: object
              properties:
                pix_key:
                  type: string
                  description: Unique key for pix transfer
                  example: a1f4102e-a446-4a57-bcce-6fa48899c1d1
                  nullable: true
                cpf:
                  type: string
                  description: CPF is a Brazilian tax identification number
                  example: '10599054689'
                  nullable: true
                cnpj:
                  type: string
                  description: CNPJ is a Brazilian company tax identification number
                  example: '74469027417312'
                  nullable: true
                source_bank_account_id:
                  type: string
                  description: Source bank account number
                  example: 8b******-****-****-****-*******08bc5
                  nullable: true
                destination_bank_account_id:
                  type: string
                  description: >-
                    Partially masked destination bank account number
                    _Deprecated: Will be removed in next stable release._
                  deprecated: true
                  example: '********-****-460b-****-f23b4e71c97b'
                  nullable: true
                expiry_date:
                  type: string
                  description: >-
                    The expiration date and time for the Pix QR code in ISO 8601
                    format
                  example: '2025-09-10T10:11:12Z'
                  nullable: true
        - type: object
          required:
            - pix_automatico_qr
          properties:
            pix_automatico_qr:
              type: object
        - type: object
          required:
            - pix_automatico_push
          properties:
            pix_automatico_push:
              type: object
              properties:
                account_number:
                  type: string
                  description: Account number for Pix Automatico Push payment method
                  example: '550689'
                  nullable: true
                branch_code:
                  type: string
                  description: Branch code for Pix Automatico Push payment method
                  example: '2569'
                  nullable: true
                bank_identifier:
                  type: string
                  description: Bank identifier for Pix Automatico Push payment method
                  example: '91193552'
                  nullable: true
        - type: object
          required:
            - pse
          properties:
            pse:
              type: object
        - type: object
          required:
            - local_bank_transfer
          properties:
            local_bank_transfer:
              type: object
              properties:
                bank_code:
                  type: string
                  nullable: true
        - type: object
          required:
            - instant_bank_transfer
          properties:
            instant_bank_transfer:
              type: object
        - type: object
          required:
            - instant_bank_transfer_finland
          properties:
            instant_bank_transfer_finland:
              type: object
        - type: object
          required:
            - instant_bank_transfer_poland
          properties:
            instant_bank_transfer_poland:
              type: object
        - type: object
          required:
            - indonesian_bank_transfer
          properties:
            indonesian_bank_transfer:
              type: object
              properties:
                bank_name:
                  allOf:
                    - $ref: '#/components/schemas/BankNames'
                  nullable: true
    RealTimePaymentData:
      oneOf:
        - type: object
          required:
            - fps
          properties:
            fps:
              type: object
        - type: object
          required:
            - duit_now
          properties:
            duit_now:
              type: object
        - type: object
          required:
            - prompt_pay
          properties:
            prompt_pay:
              type: object
        - type: object
          required:
            - viet_qr
          properties:
            viet_qr:
              type: object
        - type: object
          required:
            - qris
          properties:
            qris:
              type: object
    CryptoData:
      type: object
      properties:
        pay_currency:
          type: string
          nullable: true
        network:
          type: string
          nullable: true
    UpiData:
      oneOf:
        - type: object
          required:
            - upi_collect
          properties:
            upi_collect:
              $ref: '#/components/schemas/UpiCollectData'
        - type: object
          required:
            - upi_intent
          properties:
            upi_intent:
              $ref: '#/components/schemas/UpiIntentData'
        - type: object
          required:
            - upi_qr
          properties:
            upi_qr:
              $ref: '#/components/schemas/UpiQrData'
    VoucherData:
      oneOf:
        - type: object
          required:
            - boleto
          properties:
            boleto:
              $ref: '#/components/schemas/BoletoVoucherData'
        - type: string
          enum:
            - efecty
        - type: string
          enum:
            - pago_efectivo
        - type: string
          enum:
            - red_compra
        - type: string
          enum:
            - red_pagos
        - type: object
          required:
            - alfamart
          properties:
            alfamart:
              $ref: '#/components/schemas/AlfamartVoucherData'
        - type: object
          required:
            - indomaret
          properties:
            indomaret:
              $ref: '#/components/schemas/IndomaretVoucherData'
        - type: string
          enum:
            - oxxo
        - type: object
          required:
            - seven_eleven
          properties:
            seven_eleven:
              $ref: '#/components/schemas/JCSVoucherData'
        - type: object
          required:
            - lawson
          properties:
            lawson:
              $ref: '#/components/schemas/JCSVoucherData'
        - type: object
          required:
            - mini_stop
          properties:
            mini_stop:
              $ref: '#/components/schemas/JCSVoucherData'
        - type: object
          required:
            - family_mart
          properties:
            family_mart:
              $ref: '#/components/schemas/JCSVoucherData'
        - type: object
          required:
            - seicomart
          properties:
            seicomart:
              $ref: '#/components/schemas/JCSVoucherData'
        - type: object
          required:
            - pay_easy
          properties:
            pay_easy:
              $ref: '#/components/schemas/JCSVoucherData'
    GiftCardData:
      oneOf:
        - type: object
          required:
            - givex
          properties:
            givex:
              $ref: '#/components/schemas/GiftCardDetails'
        - type: object
          required:
            - pay_safe_card
          properties:
            pay_safe_card:
              type: object
        - type: object
          required:
            - bhn_card_network
          properties:
            bhn_card_network:
              $ref: '#/components/schemas/BHNGiftCardDetails'
    CardToken:
      type: object
      required:
        - card_holder_name
      properties:
        card_holder_name:
          type: string
          description: The card holder's name
          example: John Test
        card_cvc:
          type: string
          description: The CVC number for the card
          nullable: true
    OpenBankingData:
      oneOf:
        - type: object
          required:
            - open_banking_pis
          properties:
            open_banking_pis:
              type: object
    MobilePaymentData:
      oneOf:
        - type: object
          required:
            - direct_carrier_billing
          properties:
            direct_carrier_billing:
              type: object
              required:
                - msisdn
              properties:
                msisdn:
                  type: string
                  description: The phone number of the user
                  example: '1234567890'
                client_uid:
                  type: string
                  description: Unique user id
                  example: 02iacdYXGI9CnyJdoN8c7
                  nullable: true
    NetworkTokenData:
      type: object
      required:
        - network_token
        - token_exp_month
        - token_exp_year
        - token_cryptogram
        - card_holder_name
      properties:
        network_token:
          type: string
          description: The network token
          example: '4604000460040787'
        token_exp_month:
          type: string
          description: The token's expiry month
          example: '05'
        token_exp_year:
          type: string
          description: The token's expiry year
          example: '24'
        token_cryptogram:
          type: string
          description: The token cryptogram
        card_network:
          allOf:
            - $ref: '#/components/schemas/CardNetwork'
          nullable: true
        card_type:
          type: string
          description: The type of the card such as Credit, Debit
          example: CREDIT
          nullable: true
        card_issuing_country:
          type: string
          description: The country in which the card was issued
          example: INDIA
          nullable: true
        bank_code:
          type: string
          description: The bank code of the bank that issued the card
          example: JP_AMEX
          nullable: true
        card_holder_name:
          type: string
          description: The card holder's name
          example: John Test
        card_issuer:
          type: string
          description: The name of the issuer of card
          example: chase
          nullable: true
        nick_name:
          type: string
          description: The card holder's nick name
          example: John Test
          nullable: true
        eci:
          type: string
          description: >-
            The ECI(Electronic Commerce Indicator) value for this
            authentication.
          nullable: true
        par:
          type: string
          description: The Payment Account Reference (PAR) for this card.
          nullable: true
    BankTransferInstructions:
      oneOf:
        - type: object
          required:
            - doku_bank_transfer_instructions
          properties:
            doku_bank_transfer_instructions:
              $ref: '#/components/schemas/DokuBankTransferInstructions'
        - type: object
          required:
            - ach_credit_transfer
          properties:
            ach_credit_transfer:
              $ref: '#/components/schemas/AchTransfer'
        - type: object
          required:
            - sepa_bank_instructions
          properties:
            sepa_bank_instructions:
              $ref: '#/components/schemas/SepaBankTransferInstructions'
        - type: object
          required:
            - bacs_bank_instructions
          properties:
            bacs_bank_instructions:
              $ref: '#/components/schemas/BacsBankTransferInstructions'
        - type: object
          required:
            - multibanco
          properties:
            multibanco:
              $ref: '#/components/schemas/MultibancoTransferInstructions'
    ReceiverDetails:
      type: object
      required:
        - amount_received
      properties:
        amount_received:
          type: integer
          format: int64
          description: The amount received by receiver
        amount_charged:
          type: integer
          format: int64
          description: The amount charged by ACH
          nullable: true
        amount_remaining:
          type: integer
          format: int64
          description: The amount remaining to be sent via ACH
          nullable: true
    GpaySessionTokenResponse:
      oneOf:
        - $ref: '#/components/schemas/GooglePayThirdPartySdk'
        - $ref: '#/components/schemas/GooglePaySessionResponse'
    SamsungPaySessionTokenResponse:
      type: object
      required:
        - version
        - service_id
        - order_number
        - merchant
        - amount
        - protocol
        - allowed_brands
        - billing_address_required
        - shipping_address_required
      properties:
        version:
          type: string
          description: Samsung Pay API version
        service_id:
          type: string
          description: Samsung Pay service ID to which session call needs to be made
        order_number:
          type: string
          description: Order number of the transaction
        merchant:
          $ref: '#/components/schemas/SamsungPayMerchantPaymentInformation'
        amount:
          $ref: '#/components/schemas/SamsungPayAmountDetails'
        protocol:
          $ref: '#/components/schemas/SamsungPayProtocolType'
        allowed_brands:
          type: array
          items:
            type: string
          description: List of supported card brands
        billing_address_required:
          type: boolean
          description: Is billing address required to be collected from wallet
        shipping_address_required:
          type: boolean
          description: Is shipping address required to be collected from wallet
    KlarnaSessionTokenResponse:
      type: object
      required:
        - session_token
        - session_id
      properties:
        session_token:
          type: string
          description: The session token for Klarna
        session_id:
          type: string
          description: The identifier for the session
    PaypalSessionTokenResponse:
      type: object
      required:
        - connector
        - session_token
        - sdk_next_action
      properties:
        connector:
          type: string
          description: Name of the connector
        session_token:
          type: string
          description: The session token for PayPal
        sdk_next_action:
          $ref: '#/components/schemas/SdkNextAction'
        client_token:
          type: string
          description: Authorization token used by client to initiate sdk
          nullable: true
        transaction_info:
          allOf:
            - $ref: '#/components/schemas/PaypalTransactionInfo'
          nullable: true
        data_user_id_token:
          type: string
          description: >-
            User token required for returning customer flow, used by client to
            initiate sdk
          nullable: true
    ApplepaySessionTokenResponse:
      type: object
      required:
        - connector
        - delayed_session_token
        - sdk_next_action
      properties:
        session_token_data:
          allOf:
            - $ref: '#/components/schemas/ApplePaySessionResponse'
          nullable: true
        payment_request_data:
          allOf:
            - $ref: '#/components/schemas/ApplePayPaymentRequest'
          nullable: true
        connector:
          type: string
          description: The session token is w.r.t this connector
        delayed_session_token:
          type: boolean
          description: Identifier for the delayed session response
        sdk_next_action:
          $ref: '#/components/schemas/SdkNextAction'
        connector_reference_id:
          type: string
          description: The connector transaction id
          nullable: true
        connector_sdk_public_key:
          type: string
          description: The public key id is to invoke third party sdk
          nullable: true
        connector_merchant_id:
          type: string
          description: The connector merchant id
          nullable: true
    OpenBankingSessionToken:
      type: object
      required:
        - open_banking_session_token
      properties:
        open_banking_session_token:
          type: string
          description: The session token for OpenBanking Connectors
    PazeSessionTokenResponse:
      type: object
      required:
        - client_id
        - client_name
        - client_profile_id
        - transaction_currency_code
        - transaction_amount
      properties:
        client_id:
          type: string
          description: Paze Client ID
        client_name:
          type: string
          description: Client Name to be displayed on the Paze screen
        client_profile_id:
          type: string
          description: Paze Client Profile ID
        transaction_currency_code:
          $ref: '#/components/schemas/Currency'
        transaction_amount:
          type: string
          description: The transaction amount
          example: '38.02'
        email_address:
          type: string
          description: Email Address
          example: johntest@test.com
          nullable: true
          maxLength: 255
    ClickToPaySessionResponse:
      type: object
      required:
        - dpa_id
        - dpa_name
        - locale
        - card_brands
        - acquirer_bin
        - acquirer_merchant_id
        - merchant_country_code
        - transaction_amount
        - transaction_currency_code
      properties:
        dpa_id:
          type: string
        dpa_name:
          type: string
        locale:
          type: string
        card_brands:
          type: array
          items:
            $ref: '#/components/schemas/CardNetwork'
          example: '[Visa, Mastercard]'
        acquirer_bin:
          type: string
        acquirer_merchant_id:
          type: string
        merchant_category_code:
          type: string
          nullable: true
        merchant_country_code:
          type: string
        transaction_amount:
          type: string
          example: '38.02'
        transaction_currency_code:
          $ref: '#/components/schemas/Currency'
        phone_number:
          type: string
          example: '9123456789'
          nullable: true
          maxLength: 255
        email:
          type: string
          example: johntest@test.com
          nullable: true
          maxLength: 255
        phone_country_code:
          type: string
          nullable: true
        provider:
          allOf:
            - $ref: '#/components/schemas/CtpServiceProvider'
          nullable: true
        dpa_client_id:
          type: string
          nullable: true
    AmazonPaySessionTokenResponse:
      type: object
      required:
        - merchant_id
        - ledger_currency
        - store_id
        - payment_intent
        - total_shipping_amount
        - total_tax_amount
        - total_base_amount
        - delivery_options
      properties:
        merchant_id:
          type: string
          description: Amazon Pay merchant account identifier
        ledger_currency:
          $ref: '#/components/schemas/Currency'
        store_id:
          type: string
          description: Amazon Pay store ID
        payment_intent:
          $ref: '#/components/schemas/AmazonPayPaymentIntent'
        total_shipping_amount:
          type: string
          description: The total shipping costs
        total_tax_amount:
          type: string
          description: The total tax amount for the order
        total_base_amount:
          type: string
          description: The total amount for items in the cart
        delivery_options:
          type: array
          items:
            $ref: '#/components/schemas/AmazonPayDeliveryOptions'
          description: The delivery options available for the provided address
    NextActionCall:
      oneOf:
        - type: string
          description: The next action call is Post Session Tokens
          enum:
            - post_session_tokens
        - type: string
          description: The next action call is confirm
          enum:
            - confirm
        - type: string
          description: The next action call is sync
          enum:
            - sync
        - type: string
          description: The next action call is Complete Authorize
          enum:
            - complete_authorize
        - type: string
          description: The next action is to await for a merchant callback
          enum:
            - await_merchant_callback
        - type: object
          required:
            - deny
          properties:
            deny:
              type: object
              description: The next action is to deny the payment with an error message
              required:
                - message
              properties:
                message:
                  type: string
        - type: string
          description: The next action is to perform eligibility check
          enum:
            - eligibility_check
    CardNetwork:
      type: string
      description: Indicates the card network.
      enum:
        - Visa
        - Mastercard
        - AmericanExpress
        - JCB
        - DinersClub
        - Discover
        - CartesBancaires
        - UnionPay
        - Interac
        - RuPay
        - Maestro
        - Star
        - Pulse
        - Accel
        - Nyce
    AliPayHkRedirection:
      type: object
    AliPayQr:
      type: object
    AliPayRedirection:
      type: object
    AmazonPayWalletData:
      type: object
      required:
        - checkout_session_id
      properties:
        checkout_session_id:
          type: string
          description: Checkout Session identifier
    AmazonPayRedirectData:
      type: object
    ApplePayWalletData:
      type: object
      required:
        - payment_data
        - payment_method
        - transaction_identifier
      properties:
        payment_data:
          $ref: '#/components/schemas/ApplePayPaymentData'
        payment_method:
          $ref: '#/components/schemas/ApplepayPaymentMethod'
        transaction_identifier:
          type: string
          description: The unique identifier for the transaction
    ApplePayRedirectData:
      type: object
    ApplePayThirdPartySdkData:
      type: object
      properties:
        token:
          type: string
          nullable: true
    CashappQr:
      type: object
    GcashRedirection:
      type: object
    GoPayRedirection:
      type: object
    GooglePayWalletData:
      type: object
      required:
        - type
        - description
        - info
        - tokenization_data
      properties:
        type:
          type: string
          description: The type of payment method
        description:
          type: string
          description: >-
            User-facing message to describe the payment method that funds this
            transaction.
        info:
          $ref: '#/components/schemas/GooglePayPaymentMethodInfo'
        tokenization_data:
          $ref: '#/components/schemas/GpayTokenizationData'
    GooglePayRedirectData:
      type: object
    GooglePayThirdPartySdkData:
      type: object
      properties:
        token:
          type: string
          nullable: true
    KakaoPayRedirection:
      type: object
    MbWayRedirection:
      type: object
      required:
        - telephone_number
      properties:
        telephone_number:
          type: string
          description: Telephone number of the shopper. Should be Portuguese phone number.
    MifinityData:
      type: object
      required:
        - date_of_birth
      properties:
        date_of_birth:
          type: string
          format: date
        language_preference:
          type: string
          nullable: true
    MobilePayRedirection:
      type: object
    MomoRedirection:
      type: object
    PaypalRedirection:
      type: object
      properties:
        email:
          type: string
          description: paypal's email address
          example: johntest@test.com
          nullable: true
          maxLength: 255
    PayPalWalletData:
      type: object
      required:
        - token
      properties:
        token:
          type: string
          description: Token generated for the Apple pay
    PayseraData:
      type: object
    PazeWalletData:
      type: object
      required:
        - complete_response
      properties:
        complete_response:
          type: string
    RevolutPayData:
      type: object
    SamsungPayWalletData:
      type: object
      required:
        - payment_credential
      properties:
        payment_credential:
          $ref: '#/components/schemas/SamsungPayWalletCredentials'
    SkrillData:
      type: object
    SwishQrData:
      type: object
    TouchNGoRedirection:
      type: object
    WeChatPayQr:
      type: object
    WeChatPayRedirection:
      type: object
    BankRedirectBilling:
      type: object
      required:
        - billing_name
        - email
      properties:
        billing_name:
          type: string
          description: The name for which billing is issued
          example: John Doe
        email:
          type: string
          description: The billing email for bank redirect
          example: example@example.com
    BankNames:
      type: string
      description: Name of banks supported by Hyperswitch
      enum:
        - absa
        - american_express
        - affin_bank
        - agro_bank
        - alliance_bank
        - am_bank
        - bank_of_america
        - bank_of_china
        - bank_islam
        - bank_muamalat
        - bank_rakyat
        - bank_simpanan_nasional
        - barclays
        - blik_p_s_p
        - capital_one
        - chase
        - citi
        - cimb_bank
        - discover
        - navy_federal_credit_union
        - pentagon_federal_credit_union
        - synchrony_bank
        - wells_fargo
        - abn_amro
        - asn_bank
        - bunq
        - handelsbanken
        - hong_leong_bank
        - hsbc_bank
        - ing
        - knab
        - kuwait_finance_house
        - moneyou
        - rabobank
        - regiobank
        - revolut
        - sns_bank
        - triodos_bank
        - van_lanschot
        - arzte_und_apotheker_bank
        - austrian_anadi_bank_ag
        - bank_austria
        - bank99_ag
        - bankhaus_carl_spangler
        - bankhaus_schelhammer_und_schattera_ag
        - bank_millennium
        - bank_p_e_k_a_o_s_a
        - bawag_psk_ag
        - bks_bank_ag
        - brull_kallmus_bank_ag
        - btv_vier_lander_bank
        - capital_bank_grawe_gruppe_ag
        - ceska_sporitelna
        - dolomitenbank
        - easybank_ag
        - e_platby_v_u_b
        - erste_bank_und_sparkassen
        - friesland_bank
        - hypo_alpeadriabank_international_ag
        - hypo_noe_lb_fur_niederosterreich_u_wien
        - hypo_oberosterreich_salzburg_steiermark
        - hypo_tirol_bank_ag
        - hypo_vorarlberg_bank_ag
        - hypo_bank_burgenland_aktiengesellschaft
        - komercni_banka
        - m_bank
        - marchfelder_bank
        - maybank
        - oberbank_ag
        - osterreichische_arzte_und_apothekerbank
        - ocbc_bank
        - pay_with_i_n_g
        - place_z_i_p_k_o
        - platnosc_online_karta_platnicza
        - posojilnica_bank_e_gen
        - postova_banka
        - public_bank
        - raiffeisen_bankengruppe_osterreich
        - rhb_bank
        - schelhammer_capital_bank_ag
        - standard_chartered_bank
        - schoellerbank_ag
        - sparda_bank_wien
        - sporo_pay
        - santander_przelew24
        - tatra_pay
        - viamo
        - volksbank_gruppe
        - volkskreditbank_ag
        - vr_bank_braunau
        - uob_bank
        - pay_with_alior_bank
        - banki_spoldzielcze
        - pay_with_inteligo
        - b_n_p_paribas_poland
        - bank_nowy_s_a
        - credit_agricole
        - pay_with_b_o_s
        - pay_with_citi_handlowy
        - pay_with_plus_bank
        - toyota_bank
        - velo_bank
        - e_transfer_pocztowy24
        - plus_bank
        - etransfer_pocztowy24
        - banki_spbdzielcze
        - bank_nowy_bfg_sa
        - getin_bank
        - blik
        - noble_pay
        - idea_bank
        - envelo_bank
        - nest_przelew
        - mbank_mtransfer
        - inteligo
        - pbac_z_ipko
        - bnp_paribas
        - bank_pekao_sa
        - volkswagen_bank
        - alior_bank
        - boz
        - bangkok_bank
        - krungsri_bank
        - krung_thai_bank
        - the_siam_commercial_bank
        - kasikorn_bank
        - open_bank_success
        - open_bank_failure
        - open_bank_cancelled
        - aib
        - bank_of_scotland
        - danske_bank
        - first_direct
        - first_trust
        - halifax
        - lloyds
        - monzo
        - nat_west
        - nationwide_bank
        - royal_bank_of_scotland
        - starling
        - tsb_bank
        - tesco_bank
        - ulster_bank
        - yoursafe
        - n26
        - nationale_nederlanden
    BankDebitBilling:
      type: object
      properties:
        name:
          type: string
          description: The billing name for bank debits
          example: John Doe
          nullable: true
        email:
          type: string
          description: The billing email for bank debits
          example: example@example.com
          nullable: true
        address:
          allOf:
            - $ref: '#/components/schemas/AddressDetails'
          nullable: true
    BankType:
      type: string
      enum:
        - checking
        - savings
    AchBillingDetails:
      type: object
      properties:
        email:
          type: string
          description: The Email ID for ACH billing
          example: example@me.com
          nullable: true
    SepaAndBacsBillingDetails:
      type: object
      properties:
        email:
          type: string
          description: The Email ID for SEPA and BACS billing
          example: example@me.com
          nullable: true
        name:
          type: string
          description: The billing name for SEPA and BACS billing
          example: Jane Doe
          nullable: true
    MultibancoBillingDetails:
      type: object
      properties:
        email:
          type: string
          example: example@me.com
          nullable: true
    DokuBillingDetails:
      type: object
      properties:
        first_name:
          type: string
          description: The billing first name for Doku
          example: Jane
          nullable: true
        last_name:
          type: string
          description: The billing second name for Doku
          example: Doe
          nullable: true
        email:
          type: string
          description: The Email ID for Doku billing
          example: example@me.com
          nullable: true
    UpiCollectData:
      type: object
      properties:
        vpa_id:
          type: string
          description: The Virtual Payment Address (VPA) for UPI collect payment
          example: successtest@iata
          nullable: true
        upi_source:
          allOf:
            - $ref: '#/components/schemas/UpiSource'
          nullable: true
    UpiIntentData:
      type: object
      properties:
        upi_source:
          allOf:
            - $ref: '#/components/schemas/UpiSource'
          nullable: true
        app_name:
          type: string
          description: App name for UPI intent payment
          nullable: true
    UpiQrData:
      type: object
      properties:
        upi_source:
          allOf:
            - $ref: '#/components/schemas/UpiSource'
          nullable: true
    BoletoVoucherData:
      type: object
      properties:
        social_security_number:
          type: string
          description: The shopper's social security number (CPF or CNPJ)
          nullable: true
        bank_number:
          type: string
          description: The shopper's bank account number associated with the boleto
          nullable: true
        document_type:
          allOf:
            - $ref: '#/components/schemas/DocumentKind'
          nullable: true
        fine_percentage:
          type: string
          description: The fine percentage charged if payment is overdue
          nullable: true
        fine_quantity_days:
          type: string
          description: The number of days after the due date when the fine is applied
          nullable: true
        interest_percentage:
          type: string
          description: The interest percentage charged on late payments
          nullable: true
        write_off_quantity_days:
          type: string
          description: The number of days after which the boleto is written off (canceled)
          nullable: true
        messages:
          type: array
          items:
            type: string
          description: Custom messages or instructions to display on the boleto
          nullable: true
        due_date:
          type: string
          format: date
          example: '2025-08-22'
          nullable: true
    AlfamartVoucherData:
      type: object
      properties:
        first_name:
          type: string
          description: The billing first name for Alfamart
          example: Jane
          nullable: true
        last_name:
          type: string
          description: The billing second name for Alfamart
          example: Doe
          nullable: true
        email:
          type: string
          description: The Email ID for Alfamart
          example: example@me.com
          nullable: true
    IndomaretVoucherData:
      type: object
      properties:
        first_name:
          type: string
          description: The billing first name for Alfamart
          example: Jane
          nullable: true
        last_name:
          type: string
          description: The billing second name for Alfamart
          example: Doe
          nullable: true
        email:
          type: string
          description: The Email ID for Alfamart
          example: example@me.com
          nullable: true
    JCSVoucherData:
      type: object
      properties:
        first_name:
          type: string
          description: The billing first name for Japanese convenience stores
          example: Jane
          nullable: true
        last_name:
          type: string
          description: The billing second name Japanese convenience stores
          example: Doe
          nullable: true
        email:
          type: string
          description: The Email ID for Japanese convenience stores
          example: example@me.com
          nullable: true
        phone_number:
          type: string
          description: The telephone number for Japanese convenience stores
          example: '9123456789'
          nullable: true
    GiftCardDetails:
      type: object
      required:
        - number
        - cvc
      properties:
        number:
          type: string
          description: The gift card number
        cvc:
          type: string
          description: The card verification code.
    BHNGiftCardDetails:
      type: object
      required:
        - account_number
        - pin
        - cvv2
        - expiration_date
      properties:
        account_number:
          type: string
          description: The gift card or account number
        pin:
          type: string
          description: The security PIN for gift cards requiring it
        cvv2:
          type: string
          description: The CVV2 code for Open Loop/VPLN products
        expiration_date:
          type: string
          description: The expiration date in MMYYYY format for Open Loop/VPLN products
    DokuBankTransferInstructions:
      type: object
      required:
        - expires_at
        - reference
        - instructions_url
      properties:
        expires_at:
          type: string
          example: '1707091200000'
        reference:
          type: string
          example: '122385736258'
        instructions_url:
          type: string
    AchTransfer:
      type: object
      required:
        - account_number
        - bank_name
        - routing_number
        - swift_code
      properties:
        account_number:
          type: string
          example: '122385736258'
        bank_name:
          type: string
        routing_number:
          type: string
          example: '012'
        swift_code:
          type: string
          example: '234'
    SepaBankTransferInstructions:
      type: object
      required:
        - account_holder_name
        - bic
        - country
        - iban
        - reference
      properties:
        account_holder_name:
          type: string
          example: Jane Doe
        bic:
          type: string
          example: '9123456789'
        country:
          type: string
        iban:
          type: string
          example: '123456789'
        reference:
          type: string
          example: U2PVVSEV4V9Y
    BacsBankTransferInstructions:
      type: object
      required:
        - account_holder_name
        - account_number
        - sort_code
      properties:
        account_holder_name:
          type: string
          example: Jane Doe
        account_number:
          type: string
          example: '10244123908'
        sort_code:
          type: string
          example: '012'
    MultibancoTransferInstructions:
      type: object
      required:
        - reference
        - entity
      properties:
        reference:
          type: string
          example: '122385736258'
        entity:
          type: string
          example: '12345'
    GooglePayThirdPartySdk:
      type: object
      required:
        - delayed_session_token
        - connector
        - sdk_next_action
      properties:
        delayed_session_token:
          type: boolean
          description: Identifier for the delayed session response
        connector:
          type: string
          description: The name of the connector
        sdk_next_action:
          $ref: '#/components/schemas/SdkNextAction'
    GooglePaySessionResponse:
      type: object
      required:
        - merchant_info
        - shipping_address_required
        - email_required
        - shipping_address_parameters
        - allowed_payment_methods
        - transaction_info
        - delayed_session_token
        - connector
        - sdk_next_action
      properties:
        merchant_info:
          $ref: '#/components/schemas/GpayMerchantInfo'
        shipping_address_required:
          type: boolean
          description: Is shipping address required
        email_required:
          type: boolean
          description: Is email required
        shipping_address_parameters:
          $ref: '#/components/schemas/GpayShippingAddressParameters'
        allowed_payment_methods:
          type: array
          items:
            $ref: '#/components/schemas/GpayAllowedPaymentMethods'
          description: List of the allowed payment methods
        transaction_info:
          $ref: '#/components/schemas/GpayTransactionInfo'
        delayed_session_token:
          type: boolean
          description: Identifier for the delayed session response
        connector:
          type: string
          description: The name of the connector
        sdk_next_action:
          $ref: '#/components/schemas/SdkNextAction'
        secrets:
          allOf:
            - $ref: '#/components/schemas/SecretInfoToInitiateSdk'
          nullable: true
    SamsungPayMerchantPaymentInformation:
      type: object
      required:
        - name
        - country_code
      properties:
        name:
          type: string
          description: Merchant name, this will be displayed on the Samsung Pay screen
        url:
          type: string
          description: Merchant domain that process payments, required for web payments
          nullable: true
        country_code:
          $ref: '#/components/schemas/CountryAlpha2'
    SamsungPayAmountDetails:
      type: object
      required:
        - option
        - currency_code
        - total
      properties:
        option:
          $ref: '#/components/schemas/SamsungPayAmountFormat'
        currency_code:
          $ref: '#/components/schemas/Currency'
        total:
          type: string
          description: The total amount of the transaction
          example: '38.02'
    SamsungPayProtocolType:
      type: string
      enum:
        - PROTOCOL3DS
    SdkNextAction:
      type: object
      required:
        - next_action
      properties:
        next_action:
          $ref: '#/components/schemas/NextActionCall'
    PaypalTransactionInfo:
      type: object
      required:
        - flow
        - currency_code
        - total_price
      properties:
        flow:
          $ref: '#/components/schemas/PaypalFlow'
        currency_code:
          $ref: '#/components/schemas/Currency'
        total_price:
          type: string
          description: Total price
          example: '38.02'
    ApplePaySessionResponse:
      oneOf:
        - $ref: '#/components/schemas/ThirdPartySdkSessionResponse'
        - $ref: '#/components/schemas/NoThirdPartySdkSessionResponse'
        - $ref: '#/components/schemas/NullObject'
    ApplePayPaymentRequest:
      type: object
      required:
        - country_code
        - currency_code
        - total
      properties:
        country_code:
          $ref: '#/components/schemas/CountryAlpha2'
        currency_code:
          $ref: '#/components/schemas/Currency'
        total:
          $ref: '#/components/schemas/AmountInfo'
        merchant_capabilities:
          type: array
          items:
            type: string
          description: >-
            The list of merchant capabilities(ex: whether capable of 3ds or
            no-3ds)
          nullable: true
        supported_networks:
          type: array
          items:
            type: string
          description: The list of supported networks
          nullable: true
        merchant_identifier:
          type: string
          nullable: true
        required_billing_contact_fields:
          allOf:
            - $ref: '#/components/schemas/ApplePayBillingContactFields'
          nullable: true
        required_shipping_contact_fields:
          allOf:
            - $ref: '#/components/schemas/ApplePayShippingContactFields'
          nullable: true
        recurring_payment_request:
          allOf:
            - $ref: '#/components/schemas/ApplePayRecurringPaymentRequest'
          nullable: true
    CtpServiceProvider:
      type: string
      enum:
        - visa
        - mastercard
    AmazonPayPaymentIntent:
      type: string
      enum:
        - Confirm
        - Authorize
        - AuthorizeWithCapture
    AmazonPayDeliveryOptions:
      type: object
      required:
        - id
        - price
        - shipping_method
        - is_default
      properties:
        id:
          type: string
          description: Delivery Option identifier
        price:
          $ref: '#/components/schemas/AmazonPayDeliveryPrice'
        shipping_method:
          $ref: '#/components/schemas/AmazonPayShippingMethod'
        is_default:
          type: boolean
          description: Specifies if this delivery option is the default
    ApplePayPaymentData:
      oneOf:
        - $ref: '#/components/schemas/ApplePayPredecryptData'
        - type: string
          description: >-
            This variant contains the encrypted Apple Pay payment data as a
            string.
      description: >-
        This enum is used to represent the Apple Pay payment data, which can
        either be encrypted or decrypted.
    ApplepayPaymentMethod:
      type: object
      required:
        - display_name
        - network
        - type
      properties:
        display_name:
          type: string
          description: The name to be displayed on Apple Pay button
        network:
          type: string
          description: The network of the Apple pay payment method
        type:
          type: string
          description: The type of the payment method
        card_exp_month:
          type: string
          description: The card's expiry month
          example: '12'
          nullable: true
        card_exp_year:
          type: string
          description: The card's expiry year
          example: '003925'
          nullable: true
        auth_code:
          type: string
          description: Unique authorisation code generated for the payment
          nullable: true
    GooglePayPaymentMethodInfo:
      type: object
      required:
        - card_network
        - card_details
      properties:
        card_network:
          type: string
          description: The name of the card network
        card_details:
          type: string
          description: The details of the card
        assurance_details:
          allOf:
            - $ref: '#/components/schemas/GooglePayAssuranceDetails'
          nullable: true
        card_funding_source:
          allOf:
            - $ref: '#/components/schemas/GooglePayCardFundingSource'
          nullable: true
    GpayTokenizationData:
      oneOf:
        - $ref: '#/components/schemas/GPayPredecryptData'
        - $ref: '#/components/schemas/GpayEcryptedTokenizationData'
      description: >-
        This enum is used to represent the Gpay payment data, which can either
        be encrypted or decrypted.
    SamsungPayWalletCredentials:
      oneOf:
        - $ref: '#/components/schemas/SamsungPayWebWalletData'
        - $ref: '#/components/schemas/SamsungPayAppWalletData'
    UpiSource:
      type: string
      description: >-
        The source type for UPI payments. This indicates what payment source is
        being used for the UPI transaction.
      enum:
        - UPI_CC
        - UPI_CL
        - UPI_ACCOUNT
        - UPI_CC_CL
        - UPI_PPI
        - UPI_VOUCHER
    DocumentKind:
      type: string
      description: Represents the type of identification document used for validation.
      enum:
        - cpf
        - cnpj
    GpayMerchantInfo:
      type: object
      required:
        - merchant_name
      properties:
        merchant_id:
          type: string
          description: >-
            The merchant Identifier that needs to be passed while invoking Gpay
            SDK
          nullable: true
        merchant_name:
          type: string
          description: The name of the merchant that needs to be displayed on Gpay PopUp
    GpayShippingAddressParameters:
      type: object
      required:
        - phone_number_required
      properties:
        phone_number_required:
          type: boolean
          description: Is shipping phone number required
    GpayAllowedPaymentMethods:
      type: object
      required:
        - type
        - parameters
        - tokenization_specification
      properties:
        type:
          type: string
          description: The type of payment method
        parameters:
          $ref: '#/components/schemas/GpayAllowedMethodsParameters'
        tokenization_specification:
          $ref: '#/components/schemas/GpayTokenizationSpecification'
    GpayTransactionInfo:
      type: object
      required:
        - country_code
        - currency_code
        - total_price_status
        - total_price
      properties:
        country_code:
          $ref: '#/components/schemas/CountryAlpha2'
        currency_code:
          $ref: '#/components/schemas/Currency'
        total_price_status:
          type: string
          description: 'The total price status (ex: ''FINAL'')'
        total_price:
          type: string
          description: The total price
          example: '38.02'
    SecretInfoToInitiateSdk:
      type: object
      required:
        - display
        - payment
      properties:
        display:
          type: string
        payment:
          type: string
    SamsungPayAmountFormat:
      type: string
      enum:
        - FORMAT_TOTAL_PRICE_ONLY
        - FORMAT_TOTAL_ESTIMATED_AMOUNT
    PaypalFlow:
      type: string
      enum:
        - checkout
    ThirdPartySdkSessionResponse:
      type: object
      required:
        - secrets
      properties:
        secrets:
          $ref: '#/components/schemas/SecretInfoToInitiateSdk'
    NoThirdPartySdkSessionResponse:
      type: object
      required:
        - epoch_timestamp
        - expires_at
        - merchant_session_identifier
        - nonce
        - merchant_identifier
        - domain_name
        - display_name
        - signature
        - operational_analytics_identifier
        - retries
        - psp_id
      properties:
        epoch_timestamp:
          type: integer
          format: int64
          description: Timestamp at which session is requested
          minimum: 0
        expires_at:
          type: integer
          format: int64
          description: Timestamp at which session expires
          minimum: 0
        merchant_session_identifier:
          type: string
          description: The identifier for the merchant session
        nonce:
          type: string
          description: Apple pay generated unique ID (UUID) value
        merchant_identifier:
          type: string
          description: The identifier for the merchant
        domain_name:
          type: string
          description: The domain name of the merchant which is registered in Apple Pay
        display_name:
          type: string
          description: The name to be displayed on Apple Pay button
        signature:
          type: string
          description: A string which represents the properties of a payment
        operational_analytics_identifier:
          type: string
          description: The identifier for the operational analytics
        retries:
          type: integer
          format: int32
          description: The number of retries to get the session response
          minimum: 0
        psp_id:
          type: string
          description: The identifier for the connector transaction
    NullObject:
      default: null
      nullable: true
    AmountInfo:
      type: object
      required:
        - label
        - amount
      properties:
        label:
          type: string
          description: The label must be the name of the merchant.
        type:
          type: string
          description: >-
            A value that indicates whether the line item(Ex: total, tax,
            discount, or grand total) is final or pending.
          nullable: true
        amount:
          type: string
          description: 'The total amount for the payment in majot unit string (Ex: 38.02)'
          example: '38.02'
    ApplePayBillingContactFields:
      type: array
      items:
        $ref: '#/components/schemas/ApplePayAddressParameters'
    ApplePayShippingContactFields:
      type: array
      items:
        $ref: '#/components/schemas/ApplePayAddressParameters'
    ApplePayRecurringPaymentRequest:
      type: object
      required:
        - payment_description
        - regular_billing
        - management_u_r_l
      properties:
        payment_description:
          type: string
          description: >-
            A description of the recurring payment that Apple Pay displays to
            the user in the payment sheet
        regular_billing:
          $ref: '#/components/schemas/ApplePayRegularBillingRequest'
        billing_agreement:
          type: string
          description: >-
            A localized billing agreement that the payment sheet displays to the
            user before the user authorizes the payment
          nullable: true
        management_u_r_l:
          type: string
          description: >-
            A URL to a web page where the user can update or delete the payment
            method for the recurring payment
          example: https://hyperswitch.io
    AmazonPayDeliveryPrice:
      type: object
      required:
        - amount
        - currency_code
      properties:
        amount:
          $ref: '#/components/schemas/MinorUnit'
        currency_code:
          $ref: '#/components/schemas/Currency'
    AmazonPayShippingMethod:
      type: object
      required:
        - shipping_method_name
        - shipping_method_code
      properties:
        shipping_method_name:
          type: string
          description: Name of the shipping method
        shipping_method_code:
          type: string
          description: Code of the shipping method
    ApplePayPredecryptData:
      type: object
      description: This struct represents the decrypted Apple Pay payment data
      required:
        - application_primary_account_number
        - application_expiration_month
        - application_expiration_year
        - payment_data
      properties:
        application_primary_account_number:
          type: string
          description: The primary account number
          example: '4242424242424242'
        application_expiration_month:
          type: string
          description: The application expiration date (PAN expiry month)
          example: '12'
        application_expiration_year:
          type: string
          description: The application expiration date (PAN expiry year)
          example: '24'
        payment_data:
          $ref: '#/components/schemas/ApplePayCryptogramData'
    GooglePayAssuranceDetails:
      type: object
      required:
        - card_holder_authenticated
        - account_verified
      properties:
        card_holder_authenticated:
          type: boolean
          description: indicates that Cardholder possession validation has been performed
        account_verified:
          type: boolean
          description: indicates that identification and verifications (ID&V) was performed
    GooglePayCardFundingSource:
      type: string
      enum:
        - CREDIT
        - DEBIT
        - PREPAID
        - UNKNOWN
    GPayPredecryptData:
      type: object
      description: This struct represents the decrypted Google Pay payment data
      required:
        - card_exp_month
        - card_exp_year
        - application_primary_account_number
        - cryptogram
        - eci_indicator
      properties:
        card_exp_month:
          type: string
          description: The card's expiry month
        card_exp_year:
          type: string
          description: The card's expiry year
        application_primary_account_number:
          type: string
          description: The Primary Account Number (PAN) of the card
          example: '4242424242424242'
        cryptogram:
          type: string
          description: Cryptogram generated by the Network
          example: AgAAAAAAAIR8CQrXcIhbQAAAAAA
        eci_indicator:
          type: string
          description: Electronic Commerce Indicator
          example: '07'
    GpayEcryptedTokenizationData:
      type: object
      description: This struct represents the encrypted Gpay payment data
      required:
        - type
        - token
      properties:
        type:
          type: string
          description: The type of the token
        token:
          type: string
          description: Token generated for the wallet
    SamsungPayWebWalletData:
      type: object
      required:
        - card_brand
        - card_last4digits
        - 3_d_s
      properties:
        method:
          type: string
          description: Specifies authentication method used
          nullable: true
        recurring_payment:
          type: boolean
          description: Value if credential is enabled for recurring payment
          nullable: true
        card_brand:
          $ref: '#/components/schemas/SamsungPayCardBrand'
        card_last4digits:
          type: string
          description: Last 4 digits of the card number
        3_d_s:
          $ref: '#/components/schemas/SamsungPayTokenData'
    SamsungPayAppWalletData:
      type: object
      required:
        - 3_d_s
        - payment_card_brand
        - payment_currency_type
        - payment_last4_fpan
      properties:
        3_d_s:
          $ref: '#/components/schemas/SamsungPayTokenData'
        payment_card_brand:
          $ref: '#/components/schemas/SamsungPayCardBrand'
        payment_currency_type:
          type: string
          description: Currency type of the payment
        payment_last4_dpan:
          type: string
          description: Last 4 digits of the device specific card number
          nullable: true
        payment_last4_fpan:
          type: string
          description: Last 4 digits of the card number
        merchant_ref:
          type: string
          description: Merchant reference id that was passed in the session call request
          nullable: true
        method:
          type: string
          description: Specifies authentication method used
          nullable: true
        recurring_payment:
          type: boolean
          description: Value if credential is enabled for recurring payment
          nullable: true
    GpayAllowedMethodsParameters:
      type: object
      required:
        - allowed_auth_methods
        - allowed_card_networks
      properties:
        allowed_auth_methods:
          type: array
          items:
            type: string
          description: 'The list of allowed auth methods (ex: 3DS, No3DS, PAN_ONLY etc)'
        allowed_card_networks:
          type: array
          items:
            type: string
          description: 'The list of allowed card networks (ex: AMEX,JCB etc)'
        billing_address_required:
          type: boolean
          description: Is billing address required
          nullable: true
        billing_address_parameters:
          allOf:
            - $ref: '#/components/schemas/GpayBillingAddressParameters'
          nullable: true
        assurance_details_required:
          type: boolean
          description: Whether assurance details are required
          nullable: true
        allow_credit_cards:
          type: boolean
          description: Set to false if you don't want to allow credit cards
          nullable: true
    GpayTokenizationSpecification:
      type: object
      required:
        - type
        - parameters
      properties:
        type:
          type: string
          description: 'The token specification type(ex: PAYMENT_GATEWAY)'
        parameters:
          $ref: '#/components/schemas/GpayTokenParameters'
    ApplePayAddressParameters:
      type: string
      enum:
        - postalAddress
        - phone
        - email
    ApplePayRegularBillingRequest:
      type: object
      required:
        - amount
        - label
        - payment_timing
      properties:
        amount:
          type: string
          description: The amount of the recurring payment
          example: '38.02'
        label:
          type: string
          description: >-
            The label that Apple Pay displays to the user in the payment sheet
            with the recurring details
        payment_timing:
          $ref: '#/components/schemas/ApplePayPaymentTiming'
        recurring_payment_start_date:
          type: string
          format: date-time
          description: The date of the first payment
          nullable: true
        recurring_payment_end_date:
          type: string
          format: date-time
          description: The date of the final payment
          nullable: true
        recurring_payment_interval_unit:
          allOf:
            - $ref: '#/components/schemas/RecurringPaymentIntervalUnit'
          nullable: true
        recurring_payment_interval_count:
          type: integer
          format: int32
          description: The number of interval units that make up the total payment interval
          nullable: true
    ApplePayCryptogramData:
      type: object
      description: This struct represents the cryptogram data for Apple Pay transactions
      required:
        - online_payment_cryptogram
        - eci_indicator
      properties:
        online_payment_cryptogram:
          type: string
          description: The online payment cryptogram
          example: A1B2C3D4E5F6G7H8
        eci_indicator:
          type: string
          description: The ECI (Electronic Commerce Indicator) value
          example: '05'
    SamsungPayCardBrand:
      type: string
      enum:
        - visa
        - mastercard
        - amex
        - discover
        - unknown
    SamsungPayTokenData:
      type: object
      required:
        - version
        - data
      properties:
        type:
          type: string
          description: 3DS type used by Samsung Pay
          nullable: true
        version:
          type: string
          description: 3DS version used by Samsung Pay
        data:
          type: string
          description: Samsung Pay encrypted payment credential data
    GpayBillingAddressParameters:
      type: object
      required:
        - phone_number_required
        - format
      properties:
        phone_number_required:
          type: boolean
          description: Is billing phone number required
        format:
          $ref: '#/components/schemas/GpayBillingAddressFormat'
    GpayTokenParameters:
      type: object
      properties:
        gateway:
          type: string
          description: The name of the connector
          nullable: true
        gateway_merchant_id:
          type: string
          description: The merchant ID registered in the connector associated
          nullable: true
        stripe:version:
          type: string
          nullable: true
        stripe:publishableKey:
          type: string
          nullable: true
        protocol_version:
          type: string
          description: The protocol version for encryption
          nullable: true
        public_key:
          type: string
          description: The public key provided by the merchant
          nullable: true
    ApplePayPaymentTiming:
      type: string
      enum:
        - immediate
        - recurring
    RecurringPaymentIntervalUnit:
      type: string
      enum:
        - year
        - month
        - day
        - hour
        - minute
    GpayBillingAddressFormat:
      type: string
      enum:
        - FULL
        - MIN
  securitySchemes:
    api_key:
      type: apiKey
      in: header
      name: api-key
      description: >-
        Use the API key created under your merchant account from the HyperSwitch
        dashboard. API key is used to authenticate API requests from your
        merchant server only. Don't expose this key on a website or embed it in
        a mobile application.

````