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

# Order Pay

> Use this API when you have already created the order using [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) and want Cashfree to process the payment. To use this API S2S flag needs to be enabled from the backend. In case you want to use this API for plain cards payments also, the PCI DSS flag is required, for more information fill out the [Support Form](https://merchant.cashfree.com/merchants/landing?env=prod&raise_issue=1).


<style>
  {`
    .postman-button {
      transition: all 0.2s ease;
      cursor: pointer;
    }
    .postman-button:hover {
      background-color: rgba(255, 248, 240, 0.8) !important;
      border-color: #FF6C37 !important;
      transform: translateY(-1px) !important;
    }
    .postman-button [data-as="p"],
    .postman-button:hover [data-as="p"] {
      background: transparent !important;
      border: 0 !important;
      padding: 0 !important;
    }
    `}
</style>

<a
  href="https://www.postman.com/cashfreedevelopers/workspace/cashfree-apis-v2025-01-01/request/40140981-62c46e50-a046-45ae-a497-0242a5cb511d"
  target="_blank"
  rel="noopener noreferrer"
  className="postman-button"
  style={{ display:'inline-flex', alignItems:'center', gap:'8px', padding:'8px 18px', backgroundColor:'rgba(255,248,240,0.4)', color:'black', border:'1px solid #FF6C37', borderRadius:'6px', textDecoration:'none', fontSize:'14px', fontWeight:'500' }}
  onMouseEnter={(e) => {
const el = e.currentTarget;
el.style.backgroundColor = 'rgba(255, 248, 240, 0.8)';
el.style.transform = 'translateY(-1px)';
}}
  onMouseLeave={(e) => {
const el = e.currentTarget;
el.style.backgroundColor = 'rgba(255, 248, 240, 0.4)';
el.style.transform = 'none';
}}
>
  <span style={{ display:'block', width:'22px', height:'22px', backgroundImage:'url(https://www.cashfree.com/docs/static/social/postman-icon-svgrepo-com.svg)', backgroundSize:'22px 22px', backgroundRepeat:'no-repeat', backgroundPosition:'center', flexShrink:0 }} aria-label="Postman" />

  Run in Postman: You can also try this API in our Postman Collection.
</a>

## Error codes

The following table lists the error codes, descriptions, and types you may encounter when initiating a payment:

<Accordion title="Error codes">
  | Code                                  | Description                                                                                                                                                                                                                                                            | Type                    | Status |
  | :------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------- | :----- |
  | `channel_missing`                     | The `channel` field is required but was not included in the request.                                                                                                                                                                                                   | `invalid_request_error` | 400    |
  | `phone_invalid`                       | The `phone` field must contain a valid 10-digit Indian phone number (for example, `9090407368`). Value received: `1234567890`                                                                                                                                          | `invalid_request_error` | 400    |
  | `phone_missing`                       | The `phone` field is required but was not included in the request.                                                                                                                                                                                                     | `invalid_request_error` | 400    |
  | `provider_missing`                    | The `provider` field is required but was not included in the request.                                                                                                                                                                                                  | `invalid_request_error` | 400    |
  | `version_missing`                     | The `version` field must be one of the following supported values: `2021-05-21`, `2022-01-01`, `2022-09-01`, `2023-08-01`, `2025-01-01`, or `2026-01-01`.                                                                                                              | `invalid_request_error` | 400    |
  | `card_cvv_invalid`                    | The `card_cvv` field must be at least 3 characters long. Value received: `12`                                                                                                                                                                                          | `invalid_request_error` | 400    |
  | `card_cvv_missing`                    | The `card_cvv` field is required but was not included in the request.                                                                                                                                                                                                  | `invalid_request_error` | 400    |
  | `card_invalid`                        | The `card` field is invalid. Provide payment details using one of the following: card details, `card_alias`, `instrument_id`, or `cryptogram`.                                                                                                                         | `invalid_request_error` | 400    |
  | `bank_processing_failure`             | The transaction could not be created at the banking partner. Retry the request or contact support if the issue persists.                                                                                                                                               | `api_error`             | 502    |
  | `request_invalid`                     | Cards issued in India cannot be used for transactions where the order currency is non-INR. Value received: `AUD`                                                                                                                                                       | `invalid_request_error` | 400    |
  | `orderpay_not_found`                  | The specified order is no longer active and cannot be used to initiate a payment.                                                                                                                                                                                      | `invalid_request_error` | 404    |
  | `card_bank_name_missing`              | The `card_bank_name` field is required but was not included in the request.                                                                                                                                                                                            | `invalid_request_error` | 400    |
  | `card_bank_name_invalid`              | The `card_bank_name` field contains an unrecognized value. Accepted values are: `hdfc`, `icici`, `kotak`, `rbl`, `bob`, `axis`, `standard chartered`, `au`, `yes`, `indus`, `fed`, `hsbc`, `citi`, `sbi`, `amex`, `onecard`, or `idfc`. Value received: `INVALID$BANK` | `invalid_request_error` | 400    |
  | `card_expiry_yy_missing`              | The `card_expiry_yy` field is required but was not included in the request.                                                                                                                                                                                            | `invalid_request_error` | 400    |
  | `card_expiry_yy_invalid`              | The `card_expiry_yy` field must be at least 2 characters long. Value received: `0`                                                                                                                                                                                     | `invalid_request_error` | 400    |
  | `card_expiry_mm_missing`              | The `card_expiry_mm` field is required but was not included in the request.                                                                                                                                                                                            | `invalid_request_error` | 400    |
  | `card_expiry_mm_invalid`              | The `card_expiry_mm` field must be at least 2 characters long. Value received: `0`                                                                                                                                                                                     | `invalid_request_error` | 400    |
  | `card_number_invalid`                 | The `card_number` field contains an invalid card number. Verify the card number and try again. Value received: `INVALID`                                                                                                                                               | `invalid_request_error` | 400    |
  | `card_number_missing`                 | The `card_number` field is required but was not included in the request.                                                                                                                                                                                               | `invalid_request_error` | 400    |
  | `card_not_found`                      | The card details could not be retrieved. Verify the card information and try again.                                                                                                                                                                                    | `invalid_request_error` | 404    |
  | `emi_tenure_missing`                  | The `emi_tenure` field is required but was not included in the request.                                                                                                                                                                                                | `invalid_request_error` | 400    |
  | `order_amount_invalid`                | The order amount exceeds the maximum allowed value. The amount must be less than `1,000,000`.                                                                                                                                                                          | `invalid_request_error` | 400    |
  | `netbanking_account_number_invalid`   | The `netbanking_account_number` field must be at least 9 characters long. Value received: `test`                                                                                                                                                                       | `invalid_request_error` | 400    |
  | `netbanking_bank_code_invalid`        | The `netbanking_bank_code` field contains an invalid value. Provide a supported bank code and try again.                                                                                                                                                               | `invalid_request_error` | 400    |
  | `netbanking_ifsc_invalid`             | The `netbanking_ifsc` field contains an invalid IFSC code. Verify the IFSC and try again. Value received: `INVALID`                                                                                                                                                    | `invalid_request_error` | 400    |
  | `request_failed`                      | The selected payment mode is not configured for this account. Enable the payment mode or contact support.                                                                                                                                                              | `invalid_request_error` | 400    |
  | `currency_invalid`                    | The `currency` field does not accept `INR` for this request. Use a supported non-INR currency. Value received: `INR`                                                                                                                                                   | `invalid_request_error` | 400    |
  | `currency_missing`                    | The `currency` field is required but was not included in the request.                                                                                                                                                                                                  | `invalid_request_error` | 400    |
  | `risk_data.customer_ip_invalid`       | The `risk_data.customer_ip` field contains an invalid IP address. Provide a valid IPv4 or IPv6 address. Value received: `1.1.1`                                                                                                                                        | `invalid_request_error` | 400    |
  | `risk_data_ip_address_request_failed` | The IP address could not be resolved. Verify the IP address and try again.                                                                                                                                                                                             | `invalid_request_error` | 400    |
  | `order_token_missing`                 | The `order_token` field is required but was not included in the request.                                                                                                                                                                                               | `invalid_request_error` | 400    |
  | `payment_method_invalid`              | The `payment_method` field contains an unrecognized value. Provide a valid payment method and try again.                                                                                                                                                               | `invalid_request_error` | 400    |
  | `payment_method_missing`              | The `payment_method` field is required but was not included in the request.                                                                                                                                                                                            | `invalid_request_error` | 400    |
  | `payment_method_unsupported`          | The specified payment method is not supported for this request. Use a supported payment method and try again.                                                                                                                                                          | `invalid_request_error` | 400    |
</Accordion>


## OpenAPI

````yaml /openapi/payments/v2025-01-01.yaml post /orders/sessions
openapi: 3.0.0
info:
  version: '2025-01-01'
  title: Cashfree Payment Gateway APIs
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  contact:
    email: developers@cashfree.com
    name: API Support
    url: https://discord.com/invite/QdZkNSxXsB
  description: >-
    Cashfree's Payment Gateway APIs provide developers with a streamlined
    pathway to integrate advanced payment processing capabilities into their
    applications, platforms and websites.
servers:
  - url: https://sandbox.cashfree.com/pg
    description: Sandbox server.
  - url: https://api.cashfree.com/pg
    description: Production server.
security: []
tags:
  - name: Orders
    description: Collection of APIs to handle orders.
  - name: Payments
    description: Collection of APIs to handle payments.
  - name: Refunds
    description: Collection of APIs to handle refunds.
  - name: Settlements
    description: Collection of APIs to handle settlements.
  - name: Payment Links
    description: Collection of APIs to handle payment links.
  - name: Token Vault
    description: >-
      Collection of APIs to use Cashfree's token Vault. This helps you save
      cards and tokenize them in a PCI complaint manner. We support creation of
      network tokens which can be used across acquiring banks.
  - name: softPOS
    description: Collection of APIs to manage softPOS' agent and order.
  - name: Offers
    description: Collection of APIs to handle offers.
  - name: Eligibility
    description: >-
      Collection of APIs to check eligibile entities - payment methods, offer,
      affordibility.
  - name: Settlement Reconciliation
    description: Collection of APIs to handle settlements.
  - name: PG Reconciliation
    description: Collection of APIs to handle reconciliation.
  - name: Customers
    description: Collection of APIs to handle customers.
  - name: Easy-Split
    description: Collection of APIs to handle Easy-Split.
  - name: Simulation
    description: Collection of APIs to handle simulation.
  - name: Disputes
    description: Collection of APIs to handle disputes.
  - name: Utilities
    description: Collection of APIs for utility requirement.
  - name: Downtimes
    description: Collection of APIs for managing downtimes.
externalDocs:
  url: https://api.cashfree.com/pg
  description: This url will have the information of all the APIs.
paths:
  /orders/sessions:
    post:
      tags:
        - Payments
      summary: Order Pay
      description: >
        Use this API when you have already created the order using [Create Order
        API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create)
        and want Cashfree to process the payment. To use this API S2S flag needs
        to be enabled from the backend. In case you want to use this API for
        plain cards payments also, the PCI DSS flag is required, for more
        information fill out the [Support
        Form](https://merchant.cashfree.com/merchants/landing?env=prod&raise_issue=1).
      operationId: PGPayOrder
      parameters:
        - $ref: '#/components/parameters/apiVersionHeader'
        - $ref: '#/components/parameters/xRequestIDHeader'
        - $ref: '#/components/parameters/xIdempotencyKeyHeader'
      requestBody:
        $ref: '#/components/requestBodies/PayOrderRequest'
      responses:
        '200':
          description: Success response for Order Pay.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayOrderEntity'
              examples:
                card:
                  value:
                    action: link
                    cf_payment_id: '4105073870'
                    channel: link
                    payment_amount: 1.75
                    payment_method: card
                    data:
                      url: >-
                        https://api.cashfree.com/pg/view/gateway/session_FEeYTISZ-xOJcuR7YeOZOm1MhVIrjHa2l1G79Pg_ZktVJxPSdu7oAKf9RTFZQlR19lkBU7VGIh8dARedu9otO8VstZVT3-HpjLpIn75v-hKCNOxYuEOV_wJ975ed89f2-ad57-4094-8728-7cff9f1928f2
                      payload: null
                      content_type: null
                      method: null
                upi:
                  value:
                    action: custom
                    cf_payment_id: '7845123001'
                    payment_method: upi
                    channel: collect
                    payment_amount: 250
                    data:
                      vpa: testsuccess@gocash
                      expiry: '2025-10-07T18:30:00+05:30'
                      payload: null
                      content_type: null
                      method: null
                netbanking:
                  value:
                    action: link
                    cf_payment_id: '7845123101'
                    payment_method: netbanking
                    channel: link
                    payment_amount: 999
                    data:
                      url: https://api.cashfree.com/pg/view/gateway/session_...
                      bank:
                        code: TESTR
                        name: TEST Bank
                      payload: null
                      content_type: null
                      method: null
                app:
                  value:
                    action: link
                    cf_payment_id: '7845123301'
                    payment_method: app
                    channel: link
                    payment_amount: 75
                    data:
                      url: https://api.cashfree.com/pg/view/gateway/session_...
                      provider: TEST_WALLET
                      payload: null
                      content_type: null
                      method: null
                card_emi:
                  value:
                    action: link
                    cf_payment_id: '7845123401'
                    payment_method: card_emi
                    channel: link
                    payment_amount: 1200
                    data:
                      url: https://api.cashfree.com/pg/view/gateway/session_...
                      emi_plan:
                        tenure: 6
                        rate: 14
                      payload: null
                      content_type: null
                      method: null
                cardless_emi:
                  value:
                    action: link
                    cf_payment_id: '7845123501'
                    payment_method: cardless_emi
                    channel: link
                    payment_amount: 1500
                    data:
                      url: https://api.cashfree.com/pg/view/gateway/session_...
                      provider: TEST_CARDLESS_EMI
                      payload: null
                      content_type: null
                      method: null
                paylater:
                  value:
                    action: link
                    cf_payment_id: '7845123601'
                    payment_method: paylater
                    channel: link
                    payment_amount: 899
                    data:
                      url: https://api.cashfree.com/pg/view/gateway/session_...
                      provider: TEST_PAYLATER
                      payload: null
                      content_type: null
                      method: null
                banktransfer:
                  value:
                    action: custom
                    cf_payment_id: '7845123701'
                    payment_method: banktransfer
                    channel: qrcode
                    payment_amount: 500
                    data:
                      account_number: XXXXXXXX1234
                      ifsc: CASHF000XXX
                      virtual_vpa: order_8123@cashfree
                      payload: null
                      content_type: null
                      method: null
                card_native_otp:
                  value:
                    action: post
                    cf_payment_id: '3991346241'
                    channel: post
                    payment_amount: 1.75
                    payment_method: card
                    data:
                      url: >-
                        https://api.cashfree.com/pg/orders/pay/authenticate/3991346241
                      payload: null
                      content_type: application/json
                      method: post
                      redirect_to_bank: >-
                        https://api.cashfree.com/pg/view/redirecttobank/MV47yJlEMkr8X_Er5YDZ-uiKHU7IGrK2kH7CTtcjeaU8v10fAeLoLL9osqoUQrmBxnbV809FFzyQTKQy
          headers:
            x-api-version:
              $ref: '#/components/headers/x-api-version'
            x-ratelimit-limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            x-ratelimit-retry:
              $ref: '#/components/headers/x-ratelimit-retry'
            x-ratelimit-type:
              $ref: '#/components/headers/x-ratelimit-type'
            x-request-id:
              $ref: '#/components/headers/x-request-id'
            x-idempotency-key:
              $ref: '#/components/headers/x-idempotency-key'
            x-idempotency-replayed:
              $ref: '#/components/headers/x-idempotency-replayed'
        '400':
          $ref: '#/components/responses/Response400'
        '401':
          $ref: '#/components/responses/Response401'
        '402':
          description: Payment failed, declined, or timed out at the payment provider.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayOrderEntity'
              examples:
                card_error:
                  value:
                    payment_amount: 1.75
                    cf_payment_id: '4105073871'
                    payment_method: card
                    channel: link
                    error:
                      code: TRANSACTION_DECLINED
                      message: Issuer declined the transaction.
                upi_error:
                  value:
                    payment_amount: 250
                    cf_payment_id: '7845123002'
                    payment_method: upi
                    channel: collect
                    error:
                      code: UPI_COLLECT_DECLINED
                      message: Customer declined the collect request.
                netbanking_error:
                  value:
                    payment_amount: 999
                    cf_payment_id: '7845123102'
                    payment_method: netbanking
                    channel: link
                    error:
                      code: BANK_TIMEOUT
                      message: Bank did not respond in time.
                app_error:
                  value:
                    payment_amount: 75
                    cf_payment_id: '7845123302'
                    payment_method: app
                    channel: link
                    error:
                      code: WALLET_INSUFFICIENT_BALANCE
                      message: Wallet balance insufficient.
                card_emi_error:
                  value:
                    payment_amount: 1200
                    cf_payment_id: '7845123402'
                    payment_method: card_emi
                    channel: link
                    error:
                      code: EMI_NOT_ELIGIBLE
                      message: Card not eligible for EMI.
                cardless_emi_error:
                  value:
                    payment_amount: 1500
                    cf_payment_id: '7845123502'
                    payment_method: cardless_emi
                    channel: link
                    error:
                      code: KYC_REQUIRED
                      message: Additional verification required by provider.
                paylater_error:
                  value:
                    payment_amount: 899
                    cf_payment_id: '7845123602'
                    payment_method: paylater
                    channel: link
                    error:
                      code: CREDIT_LIMIT_EXCEEDED
                      message: Pay Later credit limit exceeded.
                banktransfer_error:
                  value:
                    payment_amount: 500
                    cf_payment_id: '7845123702'
                    payment_method: banktransfer
                    channel: qrcode
                    error:
                      code: VIRTUAL_ACCOUNT_EXPIRED
                      message: Payment to this virtual account is no longer accepted.
        '404':
          $ref: '#/components/responses/Response404'
        '409':
          $ref: '#/components/responses/Response409'
        '422':
          $ref: '#/components/responses/Response422'
        '429':
          $ref: '#/components/responses/Response429'
        '500':
          $ref: '#/components/responses/Response500'
        '502':
          $ref: '#/components/responses/Response502'
      deprecated: false
      security: []
components:
  parameters:
    apiVersionHeader:
      in: header
      name: x-api-version
      required: true
      description: API version to be used. Format is in YYYY-MM-DD.
      schema:
        type: string
        description: API version to be used.
        default: '2025-01-01'
      example: '2025-01-01'
      x-ignore: true
    xRequestIDHeader:
      in: header
      name: x-request-id
      description: >-
        Request ID for the API call. Can be used to resolve tech issues.
        Communicate this in your tech related queries to Cashfree.
      required: false
      schema:
        type: string
      example: 4dfb9780-46fe-11ee-be56-0242ac120002
    xIdempotencyKeyHeader:
      in: header
      name: x-idempotency-key
      required: false
      description: >
        An idempotency key is a unique identifier you include with your API
        call.

        If the request fails or times out, you can safely retry it using the
        same key to avoid duplicate actions.
      schema:
        type: string
        format: UUID
      example: 47bf8872-46fe-11ee-be56-0242ac120002
  requestBodies:
    PayOrderRequest:
      description: Request parameters to Order Pay.
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PayOrderRequest'
          examples:
            upi_intent:
              $ref: '#/components/examples/upi_intent'
            upi_collect:
              $ref: '#/components/examples/upi_collect'
            upi_qr:
              $ref: '#/components/examples/upi_qr'
            upi_podqr:
              $ref: '#/components/examples/upi_podqr'
            upi_collect_redirect:
              $ref: '#/components/examples/upi_collect_redirect'
            card_plain:
              $ref: '#/components/examples/card_plain'
            card_saved_token:
              $ref: '#/components/examples/card_saved_token'
            card_external_alt_id:
              $ref: '#/components/examples/card_external_alt_id'
            card_external_token:
              $ref: '#/components/examples/card_external_token'
            card_headless_otp_payment:
              $ref: '#/components/examples/card_headless_otp_payment'
            netbanking_by_name:
              $ref: '#/components/examples/netbanking_by_name'
            netbanking_by_code:
              $ref: '#/components/examples/netbanking_by_code'
            emi_cc:
              $ref: '#/components/examples/emi_cc'
            wallet_app:
              $ref: '#/components/examples/wallet_app'
            banktransfer:
              $ref: '#/components/examples/banktransfer'
  schemas:
    PayOrderEntity:
      title: PayOrderEntity
      type: object
      description: Order pay response once you create a transaction for that order.
      example:
        payment_method: card
        channel: link
        action: link
        cf_payment_id: '91235'
        payment_amount: 22.42
        data:
          url: >-
            https://sandbox.cashfree.com/pg/view/gateway/FHsuvhayLM5mmhINoqri7ba296e2ebca8b98e6119f6223021a13
          payload:
            name: card
          content_type: application/x-www-form-urlencoded
          method: post
      properties:
        payment_amount:
          type: number
          description: Total amount payable.
        cf_payment_id:
          type: string
          description: Payment identifier created by Cashfree.
          format: int64
        payment_method:
          type: string
          enum:
            - netbanking
            - card
            - upi
            - app
            - cardless_emi
            - paylater
            - banktransfer
            - applepay
          description: |
            The payment method used for this transaction.
            - netbanking: Net banking payment.
            - card: Credit or debit card payment.
            - upi: UPI payment via collect, intent, or QR code.
            - app: Wallet-based payment.
            - cardless_emi: Cardless EMI payment.
            - paylater: Pay later payment.
            - banktransfer: Direct bank transfer payment.
            - applepay: Apple Pay payment.
        channel:
          type: string
          enum:
            - link
            - post
            - collect
            - qrcode
            - podQrCode
          description: >
            The channel used for the payment method.

            - link: Redirect-based flow where the customer is taken to an
            external page.

            - post: Native OTP flow where the merchant renders a custom UI to
            collect OTP.

            - collect: UPI collect request sent to the customer's VPA.

            - qrcode: UPI QR code for the customer to scan.

            - podQrCode: Pay on delivery QR code.
        action:
          type: string
          enum:
            - link
            - post
            - custom
            - form
          description: >
            The action to complete the payment.

            - link: Redirect the customer to `data.url` using a browser or
            in-app webview.

            - post: Render a native UI, collect required input, and POST it to
            `data.url`.

            - form: Render the form from `data.payload` and auto-submit it to
            `data.url`.

            - custom: Follow integration-specific instructions or SDK handling.
        data:
          $ref: '#/components/schemas/OrderPayData'
    PayOrderRequest:
      title: PayOrderRequest
      type: object
      properties:
        payment_session_id:
          title: payment_session_id
          description: >-
            Unique identifier for the payment session, returned in the response
            of the Create Order API.
          type: string
          example: >-
            session__CvcEmNKDkmERQrxnx39ibhJ3Ii034pjc8ZVxf3qcgEXCWlgDDlHRgz2XYZCqpajDQSXMMtCusPgOIxYP2LZx0-05p39gC2Vgmq1RAj--gcn
        payment_method:
          oneOf:
            - $ref: '#/components/schemas/CardPaymentMethod'
            - $ref: '#/components/schemas/UPIPaymentMethod'
            - $ref: '#/components/schemas/NetBankingPaymentMethod'
            - $ref: '#/components/schemas/AppPaymentMethod'
            - $ref: '#/components/schemas/CardEMIPaymentMethod'
            - $ref: '#/components/schemas/CardlessEMIPaymentMethod'
            - $ref: '#/components/schemas/PaylaterPaymentMethod'
            - $ref: '#/components/schemas/BanktransferPaymentMethod'
        save_instrument:
          type: boolean
          description: >-
            Send as **true** if the customer has given consent to save or
            tokenise the card; otherwise, send as false.
        offer_id:
          type: string
          description: This is required if any offers needs to be applied to the order.
          example: faa6cc05-d1e2-401c-b0cf-0c9db3ff0f0b
        transaction_expiry_time:
          type: string
          format: ISO8601
          description: >-
            The maximum time for the payment attempt to reach a terminal state.
            If this timestamp expires, the transaction is marked as failed and
            cannot be retried. Provide the value in ISO 8601 timestamp format.
            Timestamps are stored in IST. IST appears as
            2021-07-02T10:20:12+05:30, UTC appears as 2021-07-02T10:20:12Z.
          example: '2021-07-02T10:20:12+05:30'
      required:
        - payment_session_id
        - payment_method
    OrderPayData:
      title: OrderPayData
      type: object
      description: The data object of Order Pay API.
      properties:
        url:
          type: string
          description: >-
            For card payments, if the response includes ```action:link```,
            redirect the customer to the ```data.url``` page. If the response
            includes ```action:post```, display a native OTP UI to collect the
            OTP and submit it to ```data.url```.
        payload:
          type: object
          description: >-
            Key value pairs sent as the request body if the payment link
            requires a form submission instead of a redirect.
        content_type:
          type: string
          description: >-
            Specifies the Content-Type header that should be used when
            submitting the payload, for example,
            ```application/x-www-form-urlencoded```.
        method:
          type: string
          description: >-
            The HTTP method to use when submitting the payload to the url. For
            example, POST.
        redirect_to_bank:
          type: string
          description: >-
            This field is available only for card payments when
            ```action:post``` is returned. Display a native OTP UI and also
            provide an option for the customer to redirect to bank page. When
            the customer selects this option, redirect them to the
            ```data.redirect_to_bank``` URL.
    BadRequestError:
      title: BadRequestError
      description: Invalid request received from client.
      example:
        message: bad URL, please check API documentation
        help: >-
          Check latest errors and resolution from Merchant Dashboard API logs:
          https://bit.ly/4glEd0W Help Document: https://bit.ly/4eeZYO9
        code: request_failed
        type: invalid_request_error
      type: object
      properties:
        message:
          type: string
        code:
          type: string
        help:
          type: string
        type:
          type: string
          enum:
            - invalid_request_error
    AuthenticationError:
      title: AuthenticationError
      description: Error if api keys are wrong.
      example:
        message: authentication Failed
        code: request_failed
        type: authentication_error
      type: object
      properties:
        message:
          type: string
        code:
          type: string
        type:
          type: string
          description: authentication_error.
    ApiError404:
      title: ApiError404
      description: Error when resource requested is not found.
      example:
        message: something is not found
        help: >-
          Check latest errors and resolution from Merchant Dashboard API logs:
          https://bit.ly/4glEd0W Help Document: https://bit.ly/4eeZYO9
        code: something_not_found
        type: invalid_request_error
      type: object
      properties:
        message:
          type: string
        code:
          type: string
        help:
          type: string
        type:
          type: string
          enum:
            - invalid_request_error
          description: invalid_request_error.
    ApiError409:
      title: ApiError409
      description: duplicate request.
      example:
        message: order with same id is already present
        help: >-
          Check latest errors and resolution from Merchant Dashboard API logs:
          https://bit.ly/4glEd0W Help Document: https://bit.ly/4eeZYO9
        code: order_already_exists
        type: invalid_request_error
      type: object
      properties:
        message:
          type: string
        help:
          type: string
        code:
          type: string
        type:
          type: string
          enum:
            - invalid_request_error
          description: invalid_request_error.
    IdempotencyError:
      title: IdempotencyError
      description: >-
        Error when idempotency fails. Different request body with the same
        idempotent key.
      example:
        message: something is not found
        help: >-
          Check latest errors and resolution from Merchant Dashboard API logs:
          https://bit.ly/4glEd0W Help Document: https://bit.ly/4eeZYO9
        code: request_invalid
        type: idempotency_error
      type: object
      properties:
        message:
          type: string
        help:
          type: string
        code:
          type: string
        type:
          type: string
          enum:
            - idempotency_error
          description: idempotency_error.
    RateLimitError:
      title: RateLimitError
      description: Error when rate limit is breached for your api.
      example:
        message: Too many requests from IP. Check headers
        code: request_failed
        type: rate_limit_error
      type: object
      properties:
        message:
          type: string
        code:
          type: string
        type:
          type: string
          enum:
            - rate_limit_error
          description: rate_limit_error.
    ApiError:
      title: ApiError
      description: Error at Cashfree's server.
      example:
        message: internal Server Error
        help: >-
          Check latest errors and resolution from Merchant Dashboard API logs:
          https://bit.ly/4glEd0W Help Document: https://bit.ly/4eeZYO9
        code: internal_error
        type: api_error
      type: object
      properties:
        message:
          type: string
        code:
          type: string
        help:
          type: string
        type:
          type: string
          enum:
            - api_error
          description: api_error.
    ApiError502:
      title: ApiError502
      description: Error when there is error at partner bank.
      example:
        message: something is not found
        help: >-
          Check latest errors and resolution from Merchant Dashboard API logs:
          https://bit.ly/4glEd0W Help Document: https://bit.ly/4eeZYO9
        code: bank_processing_failure
        type: api_error
      type: object
      properties:
        message:
          type: string
        help:
          type: string
        code:
          type: string
          description: >
            `bank_processing_failure` will be returned here to denote failure at
            bank.
        type:
          type: string
          enum:
            - api_error
          description: api_error.
    CardPaymentMethod:
      title: CardPaymentMethod
      description: Payload for different payment methods is given below.
      type: object
      properties:
        card:
          $ref: '#/components/schemas/Card'
      required:
        - card
    UPIPaymentMethod:
      title: UPIPaymentMethod
      description: Complete payment method for UPI collect.
      type: object
      properties:
        upi:
          $ref: '#/components/schemas/Upi'
      required:
        - upi
    NetBankingPaymentMethod:
      title: NetBankingPaymentMethod
      description: Payment method for netbanking object.
      type: object
      properties:
        netbanking:
          $ref: '#/components/schemas/Netbanking'
      required:
        - netbanking
    AppPaymentMethod:
      title: AppPaymentMethod
      description: App payment method.
      type: object
      properties:
        app:
          $ref: '#/components/schemas/App'
      required:
        - app
    CardEMIPaymentMethod:
      title: CardEMIPaymentMethod
      description: Complete card emi payment method.
      type: object
      properties:
        emi:
          $ref: '#/components/schemas/CardEMI'
      required:
        - emi
    CardlessEMIPaymentMethod:
      title: CardlessEMIPaymentMethod
      description: cardless EMI payment method object.
      type: object
      properties:
        cardless_emi:
          $ref: '#/components/schemas/CardlessEMI'
      required:
        - cardless_emi
    PaylaterPaymentMethod:
      title: PaylaterPaymentMethod
      description: Paylater payment method.
      type: object
      properties:
        paylater:
          $ref: '#/components/schemas/Paylater'
      required:
        - paylater
    BanktransferPaymentMethod:
      title: BanktransferPaymentMethod
      description: banktransfer payment method.
      type: object
      properties:
        banktransfer:
          $ref: '#/components/schemas/Banktransfer'
      required:
        - banktransfer
    Card:
      title: Card
      description: >-
        The card payment object can be used to make payments using a plain card,
        a card saved with Cashfree, an externally saved card, or an external Alt
        ID for guest checkout transactions. Refer to the examples in the Sample
        Request section for different payloads, and refer [Token
        Vault](https://www.cashfree.com/docs/payments/features/token-vault#token-vault)
        for more details on tokenisation.
      required:
        - channel
      example:
        channel: link
        card_number: '4111111111111111'
        card_holder_name: Tushar Gupta
        card_expiry_mm: '06'
        card_expiry_yy: '22'
        card_cvv: '900'
        address_line_one: Address line 1
        address_line_two: Address line 2
        city: Minnehaha
        zip_code: '57109'
        country: United States
        country_code: US
        state: South Dakota
        state_code: SD
      type: object
      properties:
        channel:
          type: string
          enum:
            - link
            - post
          description: >-
            The channel for card payments can be "link" or "post". Use "post" to
            request [Native
            OTP](https://www.cashfree.com/docs/payments/features/native-otp)
            authentication, where the merchant must render the Native OTP UI to
            collect the OTP. Otherwise, use link for the redirection flow.
        card_number:
          type: string
          description: >-
            Customer’s card number for plain card transactions, or token number
            for external token transactions, or Alt ID number for external Alt
            ID transactions.
        card_holder_name:
          type: string
          description: >-
            Name on the customer’s card. Optional for external token or external
            Alt ID transactions.
        card_expiry_mm:
          type: string
          description: >-
            Card expiry month for plain card transactions, or token expiry month
            for external token transactions, or Alt ID expiry month for external
            Alt ID transactions.
        card_expiry_yy:
          type: string
          description: >-
            Card expiry year for plain card transactions, or token expiry year
            for external token transactions and Alt ID expiry year for external
            Alt ID transactions.
        card_cvv:
          type: string
          description: >-
            CVV mentioned on the card. Mandatory for plain card and external Alt
            ID transactions; optional for saved card transactions.
        instrument_id:
          type: string
          description: >-
            Instrument ID of the saved card, as received in response from [Fetch
            All Saved Card Instrument
            API](https://www.cashfree.com/docs/api-reference/payments/latest/token-vault/get-all).
            Required only when making payments using cards saved with Cashfree.
        cryptogram:
          type: string
          description: >-
            Cryptogram received from the card network. Required only for
            external token or external Alt ID transactions; provided by the
            merchant’s token requestor.
        token_requestor_id:
          type: string
          description: >-
            Token Requestor ID (TRID) issued by the respective card network.
            Required only for external token transactions; provided by the
            merchant’s token requestor.
        token_reference_id:
          type: string
          description: >-
            Token Reference ID, required only for external Alt ID transactions
            for Diners; provided by the merchant’s token requestor.
        token_type:
          enum:
            - NETWORK_GC_TOKEN
          type: string
          description: Token type enum. Mandatory only for external Alt ID transactions.
        card_display:
          type: string
          description: >-
            Last 4 digits of original card number, required only for external
            token or external Alt ID transactions, used for bookkeeping
            purposes.
        card_bank_name:
          type: string
          enum:
            - Kotak
            - ICICI
            - RBL
            - BOB
            - Standard Chartered
          description: >-
            One of ["Kotak", "ICICI", "RBL", "BOB", "Standard Chartered"]. Card
            bank name, required for EMI payments. This is the bank user has
            selected for EMI.
        address_line_one:
          type: string
          description: First line of the address.
        address_line_two:
          type: string
          description: Second line of the address.
        city:
          type: string
          description: City Name.
        zip_code:
          type: string
          description: Pin Code/Zip Code.
        country:
          type: string
          description: Country Name.
        country_code:
          type: string
          description: Country Code. Should be in ISO 2 format (ie. US for United States).
        state:
          type: string
          description: State Name.
        state_code:
          type: string
          description: State Code. Should be in ISO 2 format (ie. FL for Florida).
        emi_tenure:
          type: integer
          description: EMI tenure selected by the user.
    Upi:
      title: Upi
      description: UPI collect payment method object.
      example:
        channel: collect
        upi_id: john@okxdfcbak
        upi_expiry_minutes: 10
      type: object
      properties:
        channel:
          type: string
          enum:
            - link
            - collect
            - qrcode
            - podQrCode
          description: >-
            Specify the channel through which the payment must be processed. Can
            be one of ["link", "collect", "qrcode", "podQrCode"].
        upi_id:
          type: string
          description: |
            Customer UPI VPA to process payment. 
            ### Important
            This is a required parameter for channel = `collect`.
        upi_redirect_url:
          type: boolean
          description: >
            use this if you want cashfree to show a loader. Sample response
            below. It is only supported for collect

            `action:collect` will be returned with `data.url` having the link
            for redirection.
        upi_expiry_minutes:
          type: number
          description: >-
            The UPI request will be valid for this expiry minutes. This
            parameter is only applicable for a UPI collect payment. The default
            value is 5 minutes. You should keep the minimum as 5 minutes, and
            maximum as 15 minutes.
        authorize_only:
          type: boolean
          description: >-
            For one time mandate on UPI. Set this as authorize_only = true.
            Please note that you can only use the "collect" channel if you are
            sending a one time mandate request.
        authorization:
          $ref: '#/components/schemas/UPIAuthorizeDetails'
      required:
        - channel
    Netbanking:
      title: Netbanking
      description: Netbanking payment method request body.
      example:
        channel: link
        netbanking_bank_code: 3022
      type: object
      properties:
        channel:
          type: string
          description: The channel for netbanking will always be `link`.
        netbanking_bank_code:
          type: integer
          format: int32
          description: Bank code.
          pattern: ^\d{4}$
        netbanking_bank_name:
          type: string
          format: BANKR
          description: String code for bank.
          pattern: ^[A-Z]{5}$
      required:
        - channel
    App:
      title: App
      description: App payment method.
      example:
        channel: link
        provider: gpay
        phone: '8474090552'
      type: object
      properties:
        channel:
          type: string
          description: Specify the channel through which the payment must be processed.
        provider:
          type: string
          enum:
            - gpay
            - phonepe
            - ola
            - paytm
            - amazon
            - airtel
            - freecharge
            - mobikwik
            - jio
          description: Specify the provider through which the payment must be processed.
        phone:
          type: string
          description: Customer phone number associated with a wallet for payment.
      required:
        - channel
        - provider
        - phone
    CardEMI:
      title: CardEMI
      description: Payment method for card EMI.
      required:
        - channel
        - card_number
        - card_expiry_mm
        - card_expiry_yy
        - card_cvv
        - card_bank_name
        - emi_tenure
      example:
        channel: link
        card_bank_name: hdfc
        card_number: '4111111111111111'
        card_holder_name: Tushar Gupta
        card_expiry_mm: '06'
        card_expiry_yy: '22'
        card_cvv: '900'
        emi_tenure: 3
      type: object
      properties:
        channel:
          type: string
          description: The channel for card payments will always be "link".
        card_number:
          type: string
          description: Customer card number.
        card_holder_name:
          type: string
          description: Customer name mentioned on the card.
        card_expiry_mm:
          type: string
          description: Card expiry month.
        card_expiry_yy:
          type: string
          description: Card expiry year.
        card_cvv:
          type: string
          description: CVV mentioned on the card.
        card_alias:
          type: string
          description: Card alias as returned by Cashfree Vault API.
        card_bank_name:
          type: string
          enum:
            - hdfc
            - kotak
            - icici
            - rbl
            - bob
            - standard chartered
            - axis
            - au
            - 'yes'
            - sbi
            - fed
            - hsbc
            - citi
            - amex
          description: >-
            Card bank name, required for EMI payments. This is the bank user has
            selected for EMI. One of ["hdfc, "kotak", "icici", "rbl", "bob",
            "standard chartered", "axis", "au", "yes", "sbi", "fed", "hsbc",
            "citi", "amex"].
        emi_tenure:
          type: integer
          description: EMI tenure selected by the user.
    CardlessEMI:
      title: CardlessEMI
      description: Request body for cardless EMI payment method.
      example:
        channel: link
        provider: kotak
        phone: '7768913241'
        emi_tenure: 3
      type: object
      properties:
        channel:
          type: string
          description: The channel for cardless EMI is always `link`.
        provider:
          type: string
          enum:
            - flexmoney
            - zestmoney
            - hdfc
            - icici
            - cashe
            - idfc
            - kotak
            - snapmint
            - bharatx
          description: >-
            One of [`flexmoney`, `zestmoney`, `hdfc`, `icici`, `cashe`, `idfc`,
            `kotak`, `snapmint`, `bharatx`].
        phone:
          type: string
          description: >-
            Customers phone number for this payment instrument. If the customer
            is not eligible you will receive a 400 error with type as
            'invalid_request_error' and code as 'invalid_request_error'.
        emi_tenure:
          type: integer
          description: >-
            EMI tenure for the selected provider. This is mandatory when
            provider is one of [`hdfc`, `icici`, `cashe`, `idfc`, `kotak`].
    Paylater:
      title: Paylater
      description: Paylater payment method.
      example:
        channel: link
        provider: kotak
        phone: '7789112345'
      type: object
      properties:
        channel:
          type: string
          description: The channel for cardless EMI is always `link`.
        provider:
          type: string
          enum:
            - kotak
            - flexipay
            - zestmoney
            - lazypay
            - olapostpaid
            - simpl
            - freechargepaylater
          description: >-
            One of ["kotak", "flexipay", "zestmoney", "lazypay",
            "olapostpaid","simpl", "freechargepaylater"]. Please note that
            Flexipay is offered by HDFC bank.
        phone:
          type: string
          description: >-
            Customers phone number for this payment instrument. If the customer
            is not eligible you will receive a 400 error with type as
            'invalid_request_error' and code as 'invalid_request_error'.
    Banktransfer:
      title: Banktransfer
      description: Bank transfer payment method.
      example:
        channel: link
      type: object
      properties:
        channel:
          type: string
          description: The channel for bank transfer is always `link`.
    UPIAuthorizeDetails:
      title: UPIAuthorizeDetails
      description: Object when you are using preauth in UPI in order pay.
      example:
        authorization:
          approve_by: '2022-07-02T10:20:12+05:30'
          start_time: '2022-09-21T12:34:34Z'
          end_time: '2022-10-22T12:34:34Z'
      type: object
      properties:
        approve_by:
          type: string
          description: Time by which this authorization should be approved by the customer.
        start_time:
          type: string
          description: This is the time when the UPI one time mandate will start.
        end_time:
          type: string
          description: >-
            This is the time when the UPI mandate will be over. If the mandate
            has not been executed by this time, the funds will be returned back
            to the customer after this time.
  headers:
    x-api-version:
      schema:
        type: string
        format: YYYY-MM-DD
        enum:
          - '2025-01-01'
      description: >-
        This header has the version of the API. The current version is
        `2025-01-01`.
    x-ratelimit-limit:
      schema:
        type: integer
      example: 200
      description: Ratelimit set for your account for this API per minute.
    x-ratelimit-remaining:
      schema:
        type: integer
      example: 2
      description: >-
        Rate limit remaning for your account for this API in the next minute.
        Uses sliding window.
    x-ratelimit-retry:
      schema:
        type: integer
      example: 4
      description: |
        Contains number of seconds to wait if rate limit is breached
        - Is 0 if withing the limit
        - Is between 1 and 59 if breached
    x-ratelimit-type:
      schema:
        type: string
        enum:
          - app_id
          - ip
      example: ip
      description: >
        either ip or app_id

        - `ip` if making a call from the browser. True for api where you don't
        need `x-client-id` and `x-client-secret`

        - `app_id` for authenticated api calls i.e using `x-client-id` and
        `x-client-secret`
    x-request-id:
      schema:
        type: string
      example: some-req-id
      description: >-
        Request id for your api call. Is blank or null if no `x-request-id` is
        sent during the request.
    x-idempotency-key:
      schema:
        type: string
      example: some-idem-id
      description: >-
        An idempotency key is a unique identifier you include with your API
        call. If the request fails or times out, you can safely retry it using
        the same key to avoid duplicate actions.
    x-idempotency-replayed:
      schema:
        type: string
        format: boolean
      example: 'true'
      description: |-
        In conjunction with `x-idempotency-key` this means
        - `true` if the response was replayed
        - `false` if the response has not been replayed.
  responses:
    Response400:
      description: Bad request error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BadRequestError'
      headers:
        x-api-version:
          $ref: '#/components/headers/x-api-version'
        x-ratelimit-limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        x-ratelimit-remaining:
          $ref: '#/components/headers/x-ratelimit-remaining'
        x-ratelimit-retry:
          $ref: '#/components/headers/x-ratelimit-retry'
        x-ratelimit-type:
          $ref: '#/components/headers/x-ratelimit-type'
        x-request-id:
          $ref: '#/components/headers/x-request-id'
        x-idempotency-key:
          $ref: '#/components/headers/x-idempotency-key'
        x-idempotency-replayed:
          $ref: '#/components/headers/x-idempotency-replayed'
    Response401:
      description: Authentication Error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AuthenticationError'
      headers:
        x-api-version:
          $ref: '#/components/headers/x-api-version'
        x-ratelimit-limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        x-ratelimit-remaining:
          $ref: '#/components/headers/x-ratelimit-remaining'
        x-ratelimit-retry:
          $ref: '#/components/headers/x-ratelimit-retry'
        x-ratelimit-type:
          $ref: '#/components/headers/x-ratelimit-type'
        x-request-id:
          $ref: '#/components/headers/x-request-id'
        x-idempotency-key:
          $ref: '#/components/headers/x-idempotency-key'
        x-idempotency-replayed:
          $ref: '#/components/headers/x-idempotency-replayed'
    Response404:
      description: Resource Not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError404'
      headers:
        x-api-version:
          $ref: '#/components/headers/x-api-version'
        x-ratelimit-limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        x-ratelimit-remaining:
          $ref: '#/components/headers/x-ratelimit-remaining'
        x-ratelimit-retry:
          $ref: '#/components/headers/x-ratelimit-retry'
        x-ratelimit-type:
          $ref: '#/components/headers/x-ratelimit-type'
        x-request-id:
          $ref: '#/components/headers/x-request-id'
        x-idempotency-key:
          $ref: '#/components/headers/x-idempotency-key'
        x-idempotency-replayed:
          $ref: '#/components/headers/x-idempotency-replayed'
    Response409:
      description: Resource already present.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError409'
      headers:
        x-api-version:
          $ref: '#/components/headers/x-api-version'
        x-ratelimit-limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        x-ratelimit-remaining:
          $ref: '#/components/headers/x-ratelimit-remaining'
        x-ratelimit-retry:
          $ref: '#/components/headers/x-ratelimit-retry'
        x-ratelimit-type:
          $ref: '#/components/headers/x-ratelimit-type'
        x-request-id:
          $ref: '#/components/headers/x-request-id'
        x-idempotency-key:
          $ref: '#/components/headers/x-idempotency-key'
        x-idempotency-replayed:
          $ref: '#/components/headers/x-idempotency-replayed'
    Response422:
      description: Idempotency error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/IdempotencyError'
      headers:
        x-api-version:
          $ref: '#/components/headers/x-api-version'
        x-ratelimit-limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        x-ratelimit-remaining:
          $ref: '#/components/headers/x-ratelimit-remaining'
        x-ratelimit-retry:
          $ref: '#/components/headers/x-ratelimit-retry'
        x-ratelimit-type:
          $ref: '#/components/headers/x-ratelimit-type'
        x-request-id:
          $ref: '#/components/headers/x-request-id'
        x-idempotency-key:
          $ref: '#/components/headers/x-idempotency-key'
        x-idempotency-replayed:
          $ref: '#/components/headers/x-idempotency-replayed'
    Response429:
      description: Rate Limit Error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitError'
      headers:
        x-api-version:
          $ref: '#/components/headers/x-api-version'
        x-ratelimit-limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        x-ratelimit-remaining:
          $ref: '#/components/headers/x-ratelimit-remaining'
        x-ratelimit-retry:
          $ref: '#/components/headers/x-ratelimit-retry'
        x-ratelimit-type:
          $ref: '#/components/headers/x-ratelimit-type'
        x-request-id:
          $ref: '#/components/headers/x-request-id'
        x-idempotency-key:
          $ref: '#/components/headers/x-idempotency-key'
        x-idempotency-replayed:
          $ref: '#/components/headers/x-idempotency-replayed'
    Response500:
      description: API related Error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
      headers:
        x-api-version:
          $ref: '#/components/headers/x-api-version'
        x-ratelimit-limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        x-ratelimit-remaining:
          $ref: '#/components/headers/x-ratelimit-remaining'
        x-ratelimit-retry:
          $ref: '#/components/headers/x-ratelimit-retry'
        x-ratelimit-type:
          $ref: '#/components/headers/x-ratelimit-type'
        x-request-id:
          $ref: '#/components/headers/x-request-id'
        x-idempotency-key:
          $ref: '#/components/headers/x-idempotency-key'
        x-idempotency-replayed:
          $ref: '#/components/headers/x-idempotency-replayed'
    Response502:
      description: Bank related Error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError502'
      headers:
        x-api-version:
          $ref: '#/components/headers/x-api-version'
        x-ratelimit-limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        x-ratelimit-remaining:
          $ref: '#/components/headers/x-ratelimit-remaining'
        x-ratelimit-retry:
          $ref: '#/components/headers/x-ratelimit-retry'
        x-ratelimit-type:
          $ref: '#/components/headers/x-ratelimit-type'
        x-request-id:
          $ref: '#/components/headers/x-request-id'
        x-idempotency-key:
          $ref: '#/components/headers/x-idempotency-key'
        x-idempotency-replayed:
          $ref: '#/components/headers/x-idempotency-replayed'
  examples:
    upi_intent:
      description: UPI intent. Opens UPI APP. Mobile only.
      summary: UPI Intent
      value:
        payment_session_id: session__someidwhichislongandhasnumbers1232132andcharacterscn
        transaction_expiry_time: '2021-07-02T10:20:12+05:30'
        payment_method:
          upi:
            channel: link
    upi_collect:
      description: Customer will receive a notification on their phone to pay via UPI.
      summary: UPI Collect
      value:
        payment_session_id: session_cChK4rQ9
        transaction_expiry_time: '2021-07-02T10:20:12+05:30'
        payment_method:
          upi:
            channel: collect
            upi_id: testsuccess@gocash
    upi_qr:
      description: Get a `base64` QR Image.
      summary: QR Code
      value:
        payment_session_id: session_somesessionid
        transaction_expiry_time: '2021-07-02T10:20:12+05:30'
        payment_method:
          upi:
            channel: qrcode
    upi_podqr:
      description: Get a `base64` QR Image.
      summary: POD QR Code
      value:
        payment_session_id: session_somesessionid
        transaction_expiry_time: '2021-07-02T10:20:12+05:30'
        payment_method:
          upi:
            channel: podQrCode
    upi_collect_redirect:
      description: Redirect to loader page for UPI Collect.
      summary: UPI Collect Loader Page
      value:
        payment_session_id: session_ehHbh0NXtVqlWwKS3acRxeT0uz5QuzHYgIBt8uLZ
        transaction_expiry_time: '2021-07-02T10:20:12+05:30'
        payment_method:
          upi:
            channel: collect
            upi_id: rajnandan1@oksomebank
            upi_redirect_url: true
    card_plain:
      summary: Pay using plain card
      description: Plain card payment method.
      value:
        payment_session_id: >-
          session__CvcEmNKDkmERQrxnx39ibhJ3Ii034pjc8ZVxf3qcgEXCWlgDDlHRgz2XYZCqpajDQSXMMtCusPgOIxYP2LZx0-05p39gC2Vgmq1RAj--gcn
        transaction_expiry_time: '2021-07-02T10:20:12+05:30'
        payment_method:
          card:
            channel: link
            card_number: '4111111111111111'
            card_holder_name: Tushar Gupta
            card_expiry_mm: '06'
            card_expiry_yy: '22'
            card_cvv: '900'
        save_instrument: true
    card_saved_token:
      summary: Instrument id of saved card
      description: pay using instrument id or saved card.
      value:
        payment_session_id: >-
          session__CvcEmNKDkmERQrxnx39ibhJ3Ii034pjc8ZVxf3qcgEXCWlgDDlHRgz2XYZCqpajDQSXMMtCusPgOIxYP2LZx0-05p39gC2Vgmq1RAj--gcn
        transaction_expiry_time: '2021-07-02T10:20:12+05:30'
        payment_method:
          card:
            channel: link
            instrument_id: 54deabb4-ba45-4a60-9e6a-9c016fe7ab10
    card_external_alt_id:
      summary: Instrument id of saved card
      description: Payload for external alt ID payment for cards.
      value:
        payment_session_id: >-
          session__CvcEmNKDkmERQrxnx39ibhJ3Ii034pjc8ZVxf3qcgEXCWlgDDlHRgz2XYZCqpajDQSXMMtCusPgOIxYP2LZx0-05p39gC2Vgmq1RAj--gcn
        transaction_expiry_time: '2021-07-02T10:20:12+05:30'
        payment_method:
          card:
            channel: link
            card_number: '4111111111111111'
            card_expiry_mm: '03'
            card_expiry_yy: '26'
            cryptogram: AQBBBBBBZatIlaIAmWKSghwBBBB=
            card_cvv: '900'
            token_type: NETWORK_GC_TOKEN
            card_holder_name: Tushar Gupta
            card_display: '3243'
            token_reference_id: '22457512314'
    card_external_token:
      summary: Card network token and cryptogram
      description: Pay using card network token and cryptogram.
      value:
        payment_session_id: >-
          session__CvcEmNKDkmERQrxnx39ibhJ3Ii034pjc8ZVxf3qcgEXCWlgDDlHRgz2XYZCqpajDQSXMMtCusPgOIxYP2LZx0-05p39gC2Vgmq1RAj--gcn
        transaction_expiry_time: '2021-07-02T10:20:12+05:30'
        payment_method:
          card:
            channel: link
            card_number: '4111111111111111'
            card_expiry_mm: '03'
            card_expiry_yy: '26'
            cryptogram: AQBBBBBBZatIlaIAmWKSghwBBBB=
            card_cvv: '900'
            token_requestor_id: '22457512314'
            card_holder_name: Tushar Gupta
            card_display: '3243'
    card_headless_otp_payment:
      description: Zero redirect Card Payment.
      summary: Card Headless OTP
      value:
        payment_session_id: session_Cke8Y9LKs2CQP9KuTzsomExG1x5CKBLo8MynNCv8QT
        transaction_expiry_time: '2021-07-02T10:20:12+05:30'
        payment_method:
          card:
            channel: post
            card_number: '4111111111111111'
            card_expiry_mm: '03'
            card_expiry_yy: '25'
            card_cvv: '326'
            card_holder_name: john
        save_instrument: true
    netbanking_by_name:
      description: Pay by netbanking name.
      summary: NetBanking By Name
      value:
        payment_session_id: session_someid
        transaction_expiry_time: '2021-07-02T10:20:12+05:30'
        payment_method:
          netbanking:
            channel: link
            netbanking_bank_name: TESTR
    netbanking_by_code:
      description: Pay by netbanking Code.
      summary: NetBanking By Code
      value:
        payment_session_id: session_someid
        transaction_expiry_time: '2021-07-02T10:20:12+05:30'
        payment_method:
          netbanking:
            channel: link
            netbanking_bank_code: 3021
    emi_cc:
      description: Use Credit Card EMI 3 months.
      summary: CreditCard EMI
      value:
        payment_session_id: session_ccemi
        transaction_expiry_time: '2021-07-02T10:20:12+05:30'
        payment_method:
          emi:
            channel: link
            card_number: '4748461111111111'
            card_expiry_mm: '12'
            card_expiry_yy: '24'
            card_cvv: '123'
            card_bank_name: ICICI
            emi_tenure: 3
    wallet_app:
      description: Pay using PhonePe Wallet.
      summary: Wallet/APP
      value:
        payment_session_id: session_ehHbh0NXtVqlWwKS3acRxeT0uz5t8uLZ
        transaction_expiry_time: '2021-07-02T10:20:12+05:30'
        payment_method:
          app:
            provider: phonepe
            channel: link
            phone: '8474090589'
    banktransfer:
      description: >-
        Bank transfer payment method. The channel for bank transfer is always
        link.
      summary: Bank Transfer
      value:
        payment_session_id: >-
          session__CvcEmNKDkmERQrxnx39ibhJ3Ii034pjc8ZVxf3qcgEXCWlgDDlHRgz2XYZCqpajDQSXMMtCusPgOIxYP2LZx0-05p39gC2Vgmq1RAj--gcn
        transaction_expiry_time: '2021-07-02T10:20:12+05:30'
        payment_method:
          banktransfer:
            channel: link

````