openapi: 3.1.0
info:
  title: Pine Labs Online Payment Gateway API
  version: '3.0'
  description: |
    The Pine Labs Online Payment Gateway API enables merchants to accept payments
    via cards, UPI, net banking, wallets, EMI, BNPL, and international methods.

    ## Environments

    | Environment | Base URL |
    |---|---|
    | UAT (Sandbox) | `https://pluraluat.v2.pinepg.in` |
    | Production | `https://api.pluralpay.in` |

    ## Authentication

    All API requests (except token generation) require a Bearer token.
    Obtain one by calling `POST /api/auth/v1/token` with your client credentials.

    ## Common Headers

    | Header | Required | Description |
    |---|---|---|
    | Authorization | Yes | `Bearer <token>` |
    | Content-Type | Yes | `application/json` |
    | Request-Timestamp | No | ISO 8601 UTC timestamp of the request |
    | Request-ID | No | Unique GUID to identify and trace the request |

    ## Monetary Amounts

    All monetary values are expressed in the smallest currency unit
    (e.g., paisa for INR). So ₹500 = `50000`.
  contact:
    name: Pine Labs Developer Support
    url: https://developer.pinelabsonline.com
  license:
    name: Proprietary
    url: https://www.pinelabs.com/terms
jsonSchemaDialect: https://spec.openapis.org/oas/3.1/dialect/base
servers:
  - url: https://pluraluat.v2.pinepg.in
    description: User Acceptance Testing (UAT) — Sandbox
  - url: https://api.pluralpay.in
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Authentication
    description: Generate and manage API access tokens.
  - name: Orders
    description: Create, capture, cancel, and retrieve payment orders.
  - name: Refunds
    description: Initiate refunds against completed payments.
  - name: Settlements
    description: View settlement reports and details.
  - name: Split Settlements
    description: Release or cancel split settlements for marketplace flows.
  - name: Checkout
    description: Generate hosted checkout links for payment collection.
  - name: Payment Links
    description: Create and manage payment links for collecting payments.
  - name: Card Payments
    description: Process card-based payments including OTP authorization.
  - name: UPI Payments
    description: Process UPI payments via collect, intent, and QR flows.
  - name: NetBanking
    description: Process net banking payments.
  - name: Wallet
    description: Process wallet-based payments.
  - name: Pay by Points
    description: Check balance and create payments using reward points.
  - name: E-Challans
    description: Create and retrieve electronic challans.
  - name: Apple Pay
    description: Process Apple Pay payments.
  - name: International Payments
    description: Process international card payments in 100+ currencies and compute TCS for LRS cross-border orders.
  - name: Customers
    description: Create and manage customer profiles.
  - name: Tokenization
    description: Generate, retrieve, and manage card tokens and cryptograms.
  - name: Payouts
    description: Create, manage, and track bank payouts.
  - name: Affordability Suite
    description: Discover offers, validate EMI eligibility, and process affordability payments.
  - name: BNPL
    description: Check eligibility and process Buy Now Pay Later payments.
  - name: Convenience Fee
    description: Calculate convenience fees for payment methods.
  - name: Payment Option
    description: Check payment option eligibility and fetch UPI VPA details.
  - name: Brand Wallet
    description: Create, validate, activate/deactivate wallets, check balance, load money, view transaction history, and reset PIN for Brand Wallets.
  - name: Brand Wallet Payments
    description: Process payments using Brand Wallet balance and add money to Brand Wallets via gift cards or UPI.
  - name: Subscriptions - Plans
    description: Create and manage subscription plans.
  - name: Subscriptions - Subscriptions
    description: Create and manage subscriptions against plans.
  - name: Subscriptions - Presentations
    description: Submit and manage mandate debit requests for subscriptions.
  - name: UPI Reserve Pay
    description: Reserve Funds and pay seamlessly using blocked funds
paths:
  /api/auth/v1/token:
    post:
      operationId: GenerateToken
      summary: Generate Token
      x-seo-title: "Generate Token | Pine Labs Payments API Reference"
      x-seo-description: "Authenticate your integration by generating a Bearer access token using client credentials. Required for all API calls."
      x-keywords: "generate access token, API authentication, OAuth token, client credentials, Bearer token, payment gateway API"
      description: |
        Generate an API access token using client credentials.
        This token is required in the Authorization header for all other API calls.
        This API is authenticated using the client secret provided in the request body.
      tags:
        - Authentication
      security: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateTokenRequest'
      responses:
        '200':
          description: Token generated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerateTokenResponse'
        '405':
          description: Method not allowed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Unprocessable entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/orders/{order_id}:
    get:
      operationId: GetOrderById
      summary: Get Order by Order ID
      x-seo-title: "Get Order by Order ID | Pine Labs Payments API Reference"
      x-seo-description: "Fetch complete payment order details including status, amount, and transaction history using the order ID."
      x-keywords: "get order API, retrieve order details, order status, payment order lookup, order tracking"
      description: |
        Retrieve order details using the Pine Labs order identifier.
      tags:
        - Orders
      security:
        - BearerAuth: []
      parameters:
        - name: order_id
          in: path
          required: true
          description: Unique Pine Labs order identifier.
          schema:
            type: string
            example: v1-5757575757-aa-hU1rUd
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Order retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: Unprocessable entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/orders/reference/{merchant_order_reference}:
    get:
      operationId: GetOrderByMerchantReference
      summary: Get Order by Merchant Order Reference
      x-seo-title: "Get Order by Merchant Reference | Pine Labs Payments API Reference"
      x-seo-description: "Look up payment order details using your merchant order reference. Ideal for reconciliation and back-office integration."
      x-keywords: "merchant reference lookup, order reconciliation API, merchant order reference, payment tracking"
      description: |
        Retrieve order details using the merchant-assigned order reference.
      tags:
        - Orders
      security:
        - BearerAuth: []
      parameters:
        - name: merchant_order_reference
          in: path
          required: true
          description: Unique order reference assigned by the merchant.
          schema:
            type: string
            example: '112345'
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Order retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: Unprocessable entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/orders/{order_id}/capture:
    put:
      operationId: CaptureOrder
      summary: Capture Order
      x-seo-title: "Capture Order | Pine Labs Payments API Reference"
      x-seo-description: "Capture an authorized payment to initiate settlement. Supports full or partial capture for pre-auth transactions."
      x-keywords: "capture payment API, order capture, payment settlement, pre-authorization capture, partial capture"
      description: |
        Capture a pre-authorized payment. Only applicable when pre_auth is true
        and a payment is created against the order. Supports one partial capture
        per order — any remaining amount is auto-reversed.
      tags:
        - Orders
      security:
        - BearerAuth: []
      parameters:
        - name: order_id
          in: path
          required: true
          description: Unique Pine Labs order identifier.
          schema:
            type: string
            example: v1-5757575757-aa-hU1rUd
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CaptureOrderRequest'
      responses:
        '200':
          description: Order captured successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: Unprocessable entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/orders/{order_id}/cancel:
    put:
      operationId: CancelOrder
      summary: Cancel Order
      x-seo-title: "Cancel Order | Pine Labs Payments API Reference"
      x-seo-description: "Cancel a pre-authorized payment order to release the held amount back to the customer before capture."
      x-keywords: "cancel order API, void payment, cancel authorization, release hold, payment cancellation"
      description: |
        Cancel a pre-authorized order. Only applicable when pre_auth is true
        and a payment is created against the order.
      tags:
        - Orders
      security:
        - BearerAuth: []
      parameters:
        - name: order_id
          in: path
          required: true
          description: Unique Pine Labs order identifier.
          schema:
            type: string
            example: v1-5757575757-aa-hU1rUd
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Order cancelled successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: Unprocessable entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/orders:
    post:
      operationId: CreateOrder
      summary: Create Order
      x-seo-title: "Create Order | Pine Labs Payments API Reference"
      x-seo-description: "Create a payment order specifying amount, currency, and customer details. First step in accepting online payments."
      x-keywords: "create order API, payment order, initiate payment, order creation, accept payments online, payment gateway"
      description: |
       An order contains the total amount and the purchase details against an order. For every order, we generate a unique order ID. It ensures that each order can be identified, referenced, and accessed without confusion or ambiguity. This order_id must be used in our payments API to accept payment against an order.
      tags:
        - Orders
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOrderRequest'
            examples:
              StandardOrder:
                summary: Order
                value:
                  merchant_order_reference: "112345"
                  order_amount:
                    value: 1100
                    currency: "INR"
                  pre_auth: false
                  allowed_payment_methods:
                    - CARD
                    - UPI
                    - NETBANKING
                    - POINTS
                    - WALLET
                  notes: "order1"
                  callback_url: "https://sample-callback-url"
                  failure_callback_url: "https://sample-failure-callback-url"
                  purchase_details:
                    customer:
                      email_id: "kevin.bob@example.com"
                      first_name: "Kevin"
                      last_name: "Bob"
                      customer_id: "123456"
                      mobile_number: "9876543210"
                      country_code: "91"
                    merchant_metadata:
                      key1: "DD"
                      key2: "XOF"
              CrossBorderOrder:
                summary: Cross Border Order Import
                value:
                  merchant_order_reference: "112345"
                  order_amount:
                    value: 1100
                    currency: "INR"
                  pre_auth: false
                  allowed_payment_methods:
                    - CARD
                    - UPI
                    - NETBANKING
                    - POINTS
                    - WALLET
                  notes: "order1"
                  callback_url: "https://sample-callback-url"
                  failure_callback_url: "https://sample-failure-callback-url"
                  purchase_details:
                    customer:
                      email_id: "kevin.bob@example.com"
                      first_name: "Kevin"
                      last_name: "Bob"
                      customer_id: "123456"
                      mobile_number: "9876543210"
                      country_code: "91"
                      billing_address:
                        address1: "10 Downing Street Westminster London"
                        address2: "Oxford Street Westminster London"
                        address3: "Baker Street Westminster London"
                        pincode: "51524036"
                        city: "Westminster"
                        state: "Westminster"
                        country: "London"
                        full_name: "Kevin Bob"
                        address_category: "billing"
                      shipping_address:
                        address1: "10 Downing Street Westminster London"
                        address2: "Oxford Street Westminster London"
                        address3: "Baker Street Westminster London"
                        pincode: "51524036"
                        city: "Westminster"
                        state: "Westminster"
                        country: "London"
                        full_name: "Kevin Bob"
                        address_category: "shipping"
                    merchant_metadata:
                      key1: "DD"
                      key2: "XOF"
                  cross_border_details:
                    settlement_currency: "USD"
                    hs_code: "8471300000"
                    hs_description: "Portable digital automatic data processing machines"
                    iec_code: "0512345678"
      responses:
        '200':
          description: Order created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
              examples:
                StandardOrder:
                  summary: Order
                  value:
                    data:
                      order_id: "v1-5757575757-aa-hU1rUd"
                      merchant_order_reference: "112345"
                      type: "CHARGE"
                      status: "CREATED"
                      callback_url: "https://sample-callback-url"
                      failure_callback_url: "https://sample-failure-callback-url"
                      merchant_id: "123456"
                      order_amount:
                        value: 1100
                        currency: "INR"
                      pre_auth: false
                      part_payment: false
                      allowed_payment_methods:
                        - CARD
                        - UPI
                        - NETBANKING
                        - POINTS
                        - WALLET
                      notes: "order1"
                      created_at: "2024-07-09T07:57:08.022Z"
                      updated_at: "2024-07-09T07:57:08.022Z"
                      integration_mode: "SEAMLESS"
                      payment_retries_remaining: 10
                      is_mcc_transaction: false
                CrossBorderOrder:
                  summary: Cross Border Order Import
                  value:
                    data:
                      order_id: "v1-260522080410-aa-SrAzoh"
                      merchant_order_reference: "112345"
                      type: "CHARGE"
                      status: "CREATED"
                      callback_url: "https://sample-callback-url"
                      failure_callback_url: "https://sample-failure-callback-url"
                      merchant_id: "111260"
                      order_amount:
                        value: 1100
                        currency: "INR"
                      notes: "order1"
                      pre_auth: false
                      part_payment: false
                      allowed_payment_methods:
                        - CARD
                        - UPI
                        - NETBANKING
                      purchase_details:
                        customer:
                          email_id: "kevin.bob@example.com"
                          first_name: "Kevin"
                          last_name: "Bob"
                          customer_id: "cust-v1-260522080222-aa-AkwlFw"
                          mobile_number: "9876543210"
                          country_code: "91"
                        merchant_metadata:
                          key1: "DD"
                          key2: "XOF"
                      created_at: "2026-05-22T08:04:10.662Z"
                      updated_at: "2026-05-22T08:04:10.662Z"
                      integration_mode: "SEAMLESS"
                      payment_retries_remaining: 10
                      is_mcc_transaction: false
                      is_domestic_txn_for_risk_enabled: false
                      cross_border_details:
                        flow_type: "NON_LRS"
                        purpose_code: "S0101"
                        commodity_type: "SERVICES"
                        requires_pan: true
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: Unprocessable entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/refunds/{order_id}:
    post:
      operationId: CreateRefund
      summary: Create Refund
      x-seo-title: "Create Refund | Pine Labs Payments API Reference"
      x-seo-description: "Initiate a full or partial refund on a completed payment. Supports idempotent requests to prevent duplicate refunds."
      x-keywords: "create refund API, payment refund, partial refund, full refund, refund initiation, payment reversal"
      description: |
        Creates a refund against a completed order.

        **Important notes:**
        - For a full refund, all IMEI numbers associated with products are automatically blocked.
        - For a partial refund, you must specify the IMEI number that needs to be blocked.
        - Refunds of less than ₹1 are not supported.
        - For a given day, the total sale amount must be greater than or equal to the total refund amount.

        **Brand Wallet refunds:** Set `destination` to `WALLET` and include the
        `customer` object with `customer_id` to refund directly into the customer's brand wallet.
      tags:
        - Refunds
      security:
        - BearerAuth: []
      parameters:
        - name: order_id
          in: path
          required: true
          description: The unique order identifier to refund against.
          schema:
            type: string
            maxLength: 50
            example: v1-241010055924-aa-AHbN0s
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRefundRequest'
            examples:
              refund:
                $ref: '#/components/examples/CreateRefundRequestExample'
              brandWalletRefund:
                summary: Brand Wallet Refund
                description: |
                  Refund directly into a customer's brand wallet by setting
                  destination to WALLET and providing the customer_id.
                value:
                  merchant_order_reference: bw-refund-001
                  order_amount:
                    value: 25000
                    currency: INR
                  destination: WALLET
                  customer:
                    customer_id: "cust-v1-241125-aa"
      responses:
        '200':
          description: Refund created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundResponse'
              examples:
                processed:
                  $ref: '#/components/examples/RefundResponseExample'
                splitRefund:
                  $ref: '#/components/examples/SplitRefundResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: Unprocessable Entity — amount limit exceeded or invalid refund.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/settlements/v1/list:
    get:
      operationId: GetAllSettlements
      summary: Get All Settlements
      x-seo-title: "Get All Settlements | Pine Labs Payments API Reference"
      x-seo-description: "Retrieve your settlement reports with filters for date range, status, and amount. Simplify payout reconciliation."
      x-keywords: "get settlements API, settlement report, merchant payout, payment settlement, reconciliation"
      description: |
        Retrieves all settlements within a specified date range.

        **Notes:**
        - Maximum date range for retrieving settlement data is 60 days.
        - API supports a maximum of 10 records per page, one page at a time.
      tags:
        - Settlements
      security:
        - BearerAuth: []
      parameters:
        - name: start_date
          in: query
          required: true
          description: Start date for settlement retrieval.
          schema:
            type: string
            example: '2024-10-01'
        - name: end_date
          in: query
          required: true
          description: End date for settlement retrieval.
          schema:
            type: string
            example: '2024-10-09'
        - name: page
          in: query
          required: false
          description: Page number to retrieve.
          schema:
            type: string
            example: '1'
        - name: per_page
          in: query
          required: false
          description: Number of records per page (max 10).
          schema:
            type: string
            example: '10'
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Settlements retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListSettlementsResponse'
              examples:
                success:
                  $ref: '#/components/examples/ListSettlementsResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/settlements/v1/detail/{utr}:
    get:
      operationId: GetSettlementsByUTR
      summary: Get Settlements by UTR
      x-seo-title: "Get Settlements by UTR | Pine Labs Payments API Reference"
      x-seo-description: "Look up settlement details by UTR number to match bank credits with payouts for reconciliation."
      x-keywords: "settlement by UTR, UTR lookup API, bank reconciliation, settlement matching, transaction reference"
      description: |
        Retrieves detailed settlement information for a specific UTR (Unique Transaction Reference).

        **Notes:**
        - Maximum date range for retrieving settlement data is 60 days.
        - API supports a maximum of 10 records per page, one page at a time.
      tags:
        - Settlements
      security:
        - BearerAuth: []
      parameters:
        - name: utr
          in: path
          required: true
          description: Unique Transaction Reference number.
          schema:
            type: string
            maxLength: 50
            example: '410092786849'
        - name: page
          in: query
          required: false
          description: Page number to retrieve.
          schema:
            type: string
            example: '1'
        - name: per_page
          in: query
          required: false
          description: Number of records per page (max 10).
          schema:
            type: string
            example: '10'
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Settlement details retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementByUTRResponse'
              examples:
                success:
                  $ref: '#/components/examples/SettlementByUTRResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/orders/{orderId}/settlementId/{settlementId}/release:
    patch:
      operationId: ReleaseSettlement
      summary: Release Settlement
      x-seo-title: "Release Settlement | Pine Labs Payments API Reference"
      x-seo-description: "Release held funds to sub-merchants or vendors in marketplace and split-settlement payment flows."
      x-keywords: "release settlement API, split settlement, marketplace payout, sub-merchant settlement, vendor payout"
      description: |
        Releases a held split settlement for a specific order.

        **Notes:**
        - This API can only be used for orders with split settlements.
        - Use the Create Orders API to create a split settlement order.
      tags:
        - Split Settlements
      security:
        - BearerAuth: []
      parameters:
        - name: orderId
          in: path
          required: true
          description: The unique order identifier.
          schema:
            type: string
            maxLength: 50
            example: v1-250513055632-aa-rjIIWX
        - name: settlementId
          in: path
          required: true
          description: The unique split settlement identifier.
          schema:
            type: string
            maxLength: 50
            example: v1-250513055632-aa-rjIIWX-ss-f
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReleaseSettlementRequest'
            examples:
              release:
                $ref: '#/components/examples/ReleaseSettlementRequestExample'
      responses:
        '200':
          description: Settlement released successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SplitSettlementResponse'
              examples:
                success:
                  $ref: '#/components/examples/SplitSettlementResponseExample'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: Unprocessable Entity — invalid release request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/orders/{orderId}/settlementId/{settlementId}/cancel:
    patch:
      operationId: CancelSettlement
      summary: Cancel Settlement
      x-seo-title: "Cancel Settlement | Pine Labs Payments API Reference"
      x-seo-description: "Cancel a pending split settlement before funds are released. Amount returns to the primary merchant balance."
      x-keywords: "cancel settlement API, split settlement cancel, marketplace refund, settlement reversal"
      description: |
        Cancels a held split settlement for a specific order.
      tags:
        - Split Settlements
      security:
        - BearerAuth: []
      parameters:
        - name: orderId
          in: path
          required: true
          description: The unique order identifier.
          schema:
            type: string
            maxLength: 50
            example: v1-250513055632-aa-rjIIWX
        - name: settlementId
          in: path
          required: true
          description: The unique split settlement identifier.
          schema:
            type: string
            maxLength: 50
            example: v1-250513055632-aa-rjIIWX-ss-g
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Settlement cancelled successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SplitSettlementResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: Unprocessable Entity — invalid cancel request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/affordability/v1/offer/discovery:
    post:
      operationId: CreateOfferDiscovery
      summary: Offer Discovery
      x-seo-title: "Offer Discovery | Pine Labs Payments API Reference"
      x-seo-description: "Fetch available EMI plans, no-cost EMI, and bank offers for a card BIN and amount. Display offers at checkout."
      x-keywords: "offer discovery API, EMI offers, no-cost EMI, bank discount offers, card BIN offers, affordability"
      description: |
        Use this API to discover offers available on cart amount or product and calculate the EMI.
      tags:
        - Affordability Suite
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OfferDiscoveryRequest'
            examples:
              Bank EMI:
                value:
                  order_amount:
                    currency: INR
                    value: 1200000
                  issuer:
                    bin: '60100000'
              Brand EMI:
                value:
                  order_amount:
                    currency: INR
                    value: 1200000
                  product_details:
                    - product_code: xyz
                      product_amount:
                        currency: INR
                        value: 1200000
                      product_coupon_discount_amount:
                        currency: INR
                        value: 1200000
                  cart_coupon_discount_amount:
                    currency: INR
                    value: 1200000
                  issuer:
                    bin: '60100000'
              Downpayment Bank EMI:
                value:
                  order_amount:
                    currency: INR
                    value: 1200000
                  issuer:
                    bin: '60100000'
                    id: '2'
                    name: ICICI DC
                    issuer_type: DC_BANK
                  downpayment_details:
                    downpayment_amount:
                      currency: INR
                      value: 200000
              Downpayment Brand EMI:
                value:
                  order_amount:
                    currency: INR
                    value: 1200000
                  product_details:
                    - product_code: xyz
                      product_amount:
                        currency: INR
                        value: 1200000
                      product_coupon_discount_amount:
                        currency: INR
                        value: 12000
                  cart_coupon_discount_amount:
                    currency: INR
                    value: 1200000
                  issuer:
                    bin: '37693000'
                    id: '1'
                    name: ICICI CC
                    issuer_type: CC_BANK
                  downpayment_details:
                    downpayment_amount:
                      currency: INR
                      value: 20000
              Brand EMI with Card Velocity Check:
                value:
                  order_amount:
                    currency: INR
                    value: 1200000
                  cart_coupon_discount_amount:
                    currency: INR
                    value: 1200000
                  issuer:
                    bin: '60100000'
                  product_details:
                    - product_code: xyz
                      product_amount:
                        currency: INR
                        value: 1200000
                      product_coupon_discount_amount:
                        currency: INR
                        value: 1200000
                  payment_option:
                    card_details:
                      card_number: '4000000000000000'
              Brand EMI with Token Velocity Check:
                value:
                  order_amount:
                    currency: INR
                    value: 1200000
                  cart_coupon_discount_amount:
                    currency: INR
                    value: 1200000
                  issuer:
                    bin: '60100000'
                  product_details:
                    - product_code: xyz
                      product_amount:
                        currency: INR
                        value: 1200000
                      product_coupon_discount_amount:
                        currency: INR
                        value: 1200000
                  payment_option:
                    card_token_details:
                      token: '4000000040001001'
              Brand EMI with Token ID Velocity Check:
                value:
                  order_amount:
                    currency: INR
                    value: 1200000
                  cart_coupon_discount_amount:
                    currency: INR
                    value: 1200000
                  issuer:
                    bin: '60100000'
                  product_details:
                    - product_code: xyz
                      product_amount:
                        currency: INR
                        value: 1200000
                      product_coupon_discount_amount:
                        currency: INR
                        value: 1200000
                  payment_option:
                    card_token_details:
                      token_id: token-v1-250206114014-aa-nqIJoM
                  customer_details:
                    customer_id: cust-v1-250709071350-aa-1M9thA
              Downpayment Brand EMI with Card Velocity Check:
                value:
                  order_amount:
                    currency: INR
                    value: 1200000
                  product_details:
                    - product_code: xyz
                      product_amount:
                        currency: INR
                        value: 1200000
                      product_coupon_discount_amount:
                        currency: INR
                        value: 1200000
                  cart_coupon_discount_amount:
                    currency: INR
                    value: 1200000
                  issuer:
                    bin: '60100000'
                    id: '1'
                    name: ICICI CC
                    issuer_type: CC_BANK
                  downpayment_details:
                    downpayment_amount:
                      currency: INR
                      value: 200000
                  payment_option:
                    card_details:
                      card_number: '4000000000000000'
              Downpayment Brand EMI with Token Velocity Check:
                value:
                  order_amount:
                    currency: INR
                    value: 1200000
                  product_details:
                    - product_code: xyz
                      product_amount:
                        currency: INR
                        value: 1200000
                      product_coupon_discount_amount:
                        currency: INR
                        value: 1200000
                  cart_coupon_discount_amount:
                    currency: INR
                    value: 1200000
                  issuer:
                    bin: '60100000'
                    id: '1'
                    name: ICICI CC
                    issuer_type: CC_BANK
                  downpayment_details:
                    downpayment_amount:
                      currency: INR
                      value: 200000
                  payment_option:
                    card_token_details:
                      token: '4000000040001001'
              Downpayment Brand EMI with Token ID Velocity Check:
                value:
                  order_amount:
                    currency: INR
                    value: 1200000
                  product_details:
                    - product_code: xyz
                      product_amount:
                        currency: INR
                        value: 1200000
                      product_coupon_discount_amount:
                        currency: INR
                        value: 1200000
                  cart_coupon_discount_amount:
                    currency: INR
                    value: 1200000
                  issuer:
                    bin: '60100000'
                    id: '1'
                    name: ICICI CC
                    issuer_type: CC_BANK
                  downpayment_details:
                    downpayment_amount:
                      currency: INR
                      value: 200000
                  payment_option:
                    card_token_details:
                      token_id: token-v1-250206114014-aa-nqIJoM
                  customer_details:
                    customer_id: cust-v1-250709071350-aa-1M9thA
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferDiscoveryResponse'
              examples:
                Bank EMI:
                  $ref: '#/components/examples/BankEMIResponse'
                Brand EMI:
                  $ref: '#/components/examples/BrandEMIResponse'
                Downpayment Bank EMI:
                  $ref: '#/components/examples/DownpaymentBankEMIResponse'
                Downpayment Brand EMI:
                  $ref: '#/components/examples/DownpaymentBrandEMIResponse'
                Split EMI:
                  $ref: '#/components/examples/SplitEMIOfferResponse'
        '400':
          description: '400'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferDiscoveryErrorResponse'
              examples:
                Result:
                  value:
                    code: INVALID_REQUEST
                    message: Missing or invalid required parameters
                    additional_error_details:
                      source: PLURAL
                      step: OFFER_DISCOVERY
                      field: order_amount
                      reason: order_amount is mandatory
        '422':
          description: '422'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferDiscoveryErrorResponse'
              examples:
                Result:
                  value:
                    code: VELOCITY_CHECK_FAILED
                    message: Velocity check failed
                    additional_error_details:
                      source: PLURAL
                      step: OFFER_DISCOVERY
                      reason: Velocity check failed
  /api/affordability/v2/offer/discovery:
    post:
      operationId: CreateOfferDiscoveryV2
      summary: Offer Discovery (v2)
      x-seo-title: "Offer Discovery V2 | Pine Labs Payments API Reference"
      x-seo-description: "Discover available EMI plans, no-cost EMI, bank offers, and UPI offers for a card BIN and amount. V2 returns entity-based response."
      x-keywords: "offer discovery v2 API, EMI offers, no-cost EMI, bank discount offers, UPI offers, affordability"
      description: |
        Use this API to discover offers available on cart amount or product and calculate the EMI.
        V2 returns an entity-based response structure with support for multiple entity types including UPI.
      tags:
        - Affordability Suite
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OfferDiscoveryRequest'
            examples:
              Bank EMI:
                value:
                  order_amount:
                    currency: INR
                    value: 1200000
                  issuer:
                    bin: '60100000'
              Brand EMI:
                value:
                  order_amount:
                    currency: INR
                    value: 1200000
                  product_details:
                    - product_code: xyz
                      product_amount:
                        currency: INR
                        value: 1200000
                      product_coupon_discount_amount:
                        currency: INR
                        value: 1200000
                  cart_coupon_discount_amount:
                    currency: INR
                    value: 1200000
                  issuer:
                    bin: '60100000'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferDiscoveryResponseV2'
              examples:
                UPI Offer:
                  value:
                    entities:
                      - entity_id: '37'
                        entity_name: UPI
                        entity_display_name: UPI
                        entity_type: UPI
                        entity_priority: 26
                        tenures:
                          - tenure_id: '7'
                            name: No EMI Only Cashback
                            tenure_type: MONTH
                            tenure_value: 0
                            details: []
                            offers:
                              - offer_ranking: 1
                                issuer_offer_parameters:
                                  - program_type: MERCHANT_BANK_OFFER
                                    offer_id: '6037'
                                    offer_parameter_id: v1-37-10-7-5-6037-287151
                                details:
                                  - product_code: ICB_BOSCH_001
                                    brand_id: '7'
                                    product_amount:
                                      currency: INR
                                      value: 500
                                    interest_rate: 0.0
                                    discount:
                                      discount_type: INSTANT
                                      percentage: 10.0
                                      amount:
                                        currency: INR
                                        value: 50
                                      max_amount:
                                        currency: INR
                                        value: 50000
                                      breakup:
                                        merchant:
                                          amount:
                                            currency: INR
                                            value: 50
                                discount:
                                  discount_type: INSTANT
                                  percentage: 10.0
                                  amount:
                                    currency: INR
                                    value: 50
                                  max_amount:
                                    currency: INR
                                    value: 50000
                                  breakup:
                                    merchant:
                                      amount:
                                        currency: INR
                                        value: 50
                                loan_amount:
                                  currency: INR
                                  value: 450
                                auth_amount:
                                  currency: INR
                                  value: 450
                                total_discount_amount:
                                  currency: INR
                                  value: 50
                                net_payment_amount:
                                  currency: INR
                                  value: 500
                                interest_rate_percentage: 0.0
                                emi_type: STANDARD
                                is_mobile_number_required_for_eligibility: false
                                is_offer_auto_applied: true
                        entity_data:
                          issuer_data:
                            otp_length: 6
                            otp_time_in_sec: 30
                            otp_retry_count: 3
                            is_consent_page_required: false
                            consent_data: Sample Consent
                            terms_and_conditions: Sample TNC
                            show_key_fact_statement: false
                            auth_type: OTP
                            pan_number_last_digit_count: 3
        '400':
          description: '400'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferDiscoveryErrorResponse'
              examples:
                Result:
                  value:
                    code: INVALID_REQUEST
                    message: Missing or invalid required parameters
                    additional_error_details:
                      source: PLURAL
                      step: OFFER_DISCOVERY
                      field: order_amount
                      reason: order_amount is mandatory
        '422':
          description: '422'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferDiscoveryErrorResponse'
              examples:
                Result:
                  value:
                    code: VELOCITY_CHECK_FAILED
                    message: Velocity check failed
                    additional_error_details:
                      source: PLURAL
                      step: OFFER_DISCOVERY
                      reason: Velocity check failed
  /api/affordability/v1/offer/discovery/cardless:
    post:
      operationId: CreateCardlessOfferDiscovery
      summary: Offer Discovery Cardless
      x-seo-title: "Cardless Offer Discovery | Pine Labs Payments API Reference"
      x-seo-description: "Discover cardless EMI and BNPL offers available to customers without requiring card details upfront."
      x-keywords: "cardless EMI offers, BNPL offer discovery, EMI without card, cardless offers API, affordability"
      description: |
        Discover available cardless EMI offers for a given order amount and product.
        Used when customer does not use a card for EMI (e.g. BNPL-style cardless EMI).
      tags:
        - Affordability Suite
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OfferDiscoveryCardlessRequest'
      responses:
        '200':
          description: Cardless offers discovered successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferDiscoveryResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: Unprocessable entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/affordability/v1/offer/downpayment/details:
    post:
      operationId: CreateDownPaymentDetails
      summary: Down Payment Details
      x-seo-title: "Down Payment Details | Pine Labs Payments API Reference"
      x-seo-description: "Submit down payment information for EMI transactions requiring an advance partial payment from the customer."
      x-keywords: "down payment API, EMI advance payment, partial down payment, EMI processing, affordability suite"
      description: |
        Retrieve applicable down payment range and EMI repayment details
        based on order amount and issuer BIN.
      tags:
        - Affordability Suite
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DownpaymentDetailsRequest'
      responses:
        '200':
          description: Down payment details retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownpaymentDetailsResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/affordability/v1/offer/validate:
    post:
      operationId: offer-validation-create
      summary: Offer Validation
      x-seo-title: "Offer Validation | Pine Labs Payments API Reference"
      x-seo-description: "Validate a customer-selected EMI or bank offer before processing payment. Confirms eligibility and final terms."
      x-keywords: "offer validation API, validate EMI offer, bank offer eligibility, offer verification, EMI confirmation"
      description: Use this API for validating applied offers.
      tags:
        - Affordability Suite
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OfferValidationRequest'
            examples:
              OfferValidation:
                $ref: '#/components/examples/OfferValidationRequest'
              OfferValidationCardlessEMI:
                $ref: '#/components/examples/OfferValidationCardlessEMIRequest'
              OfferValidationSplitEMI:
                $ref: '#/components/examples/OfferValidationSplitEMIRequest'
              ICBOnUPI:
                $ref: '#/components/examples/OfferValidationICBOnUPIRequest'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferValidationResponse'
              examples:
                Result:
                  value:
                    code: ELIGIBLE
                    message: Offer is Eligible
        '400':
          description: '400'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferValidationErrorResponse'
              examples:
                Result:
                  value:
                    code: INVALID_REQUEST
                    message: Missing or invalid required parameters
                    additional_error_details:
                      source: PLURAL
                      step: OFFER_VALIDATION
                      field: cardDetails.cardNumber
                      reason: Card number is invalid
  /api/affordability/v1/product/{order_id}/imei:
    post:
      operationId: CreateIMEIValidation
      summary: IMEI Validation
      x-seo-title: "IMEI Validation | Pine Labs Payments API Reference"
      x-seo-description: "Validate a device IMEI number to confirm eligibility for brand EMI and device-specific financing offers."
      x-keywords: "IMEI validation API, device EMI eligibility, brand EMI, IMEI check, product financing"
      description: |
        Validate or block/unblock IMEI numbers for Brand EMI transactions.
        Used to confirm the device is eligible for the selected EMI program.
      tags:
        - Affordability Suite
      security:
        - BearerAuth: []
      parameters:
        - name: order_id
          in: path
          required: true
          description: Unique Pine Labs order identifier.
          schema:
            type: string
            example: v1-5757575757-aa-hU1rUd
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IMEIValidationRequest'
      responses:
        '200':
          description: Multi-Status — IMEI validation results per product.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IMEIValidationResponse'
        '207':
          description: Multi-Status — IMEI validation result if validation is successful for all products.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IMEIValidationResponse'
  /api/pay/v1/orders/{order_id}/payments:
    post:
      operationId: CreatePayment
      summary: Create Payment
      x-seo-title: "Create Payment | Pine Labs Payments API Reference"
      x-seo-description: "Process payments via cards, UPI, net banking, wallets, or EMI. Single unified API for all payment methods."
      x-keywords: "create payment API, process payment, card payment, UPI payment, net banking, wallet, EMI payment"
      description: |
        Create a payment against an existing order. This unified endpoint supports
        multiple payment methods differentiated by the `payment_method` field:

        - **CARD** — Pay with card number or card token (see Card Payments documentation)
        - **UPI** — Pay via UPI Collect or UPI Intent/QR (see UPI Payments documentation)
        - **NETBANKING** — Pay via net banking redirect (see Net Banking documentation)
        - **WALLET** — Pay via digital wallet (see Wallet documentation)
        - **BRAND_WALLET** — Pay using Brand Wallet balance (see Brand Wallet documentation)
        - **EMI** — Pay via Credit/Debit EMI or Cardless EMI (see Affordability Suite documentation)
        - **BNPL** — Pay via Buy Now Pay Later (see BNPL documentation)

        The response returns the full order object with the payment linked.
        For redirect-based flows (NetBanking, Wallet, UPI Intent), use the
        `challenge_url` in the response to redirect the customer.

        **Brand Wallet flow:** After a successful Create Payment call with `BRAND_WALLET`,
        the payment enters `PENDING` status. The wallet provider automatically sends an
        OTP to the customer. Call **Submit OTP** to authorize the payment.
      tags:
        - Card Payments
        - UPI Payments
        - NetBanking
        - Wallet
        - Brand Wallet Payments
        - Affordability Suite
        - BNPL
      security:
        - BearerAuth: []
      parameters:
        - name: order_id
          in: path
          required: true
          description: Unique identifier of the order in the Pine Labs Online database.
          schema:
            type: string
            example: v1-4405071524-aa-qlAtAf
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePaymentRequest'
            examples:
              cardPayment:
                summary: Card Payment (raw card)
                value:
                  payments:
                    - merchant_payment_reference: pay-ref-001
                      payment_amount:
                        value: 1000
                        currency: INR
                      payment_method: CARD
                      payment_option:
                        card_details:
                          card_number: '4000000000001091'
                          expiry_month: '01'
                          expiry_year: '2026'
                          cvv: '123'
                          name: Kevin Bob
                          save: true
              cardTokenPayment:
                summary: Card Payment (tokenized)
                value:
                  payments:
                    - merchant_payment_reference: pay-ref-002
                      payment_amount:
                        value: 1000
                        currency: INR
                      payment_method: CARD
                      payment_option:
                        card_token_details:
                          name: Kevin Bob
                          last4_digit: '1091'
                          cvv: '123'
                          expiry_month: '01'
                          expiry_year: '2026'
                          token: '4000000000001091'
                          cryptogram: wAAAAAAl9SX1HsAmWKSgqwAAAA
                          token_txn_type: ALT_TOKEN
              cardPaymentPACBWithTCS:
                summary: Cross Border Import Card Payment with TCS (Individual PAN)
                value:
                  payments:
                    - merchant_payment_reference: 39965ef7-355f-45a0-a8b7-9cd48b77fec2
                      payment_method: CARD
                      payment_amount:
                        value: 1000
                        currency: INR
                      payment_option:
                        card_details:
                          name: John Doe
                          card_number: '4000000000000000'
                          cvv: '065'
                          expiry_month: '12'
                          expiry_year: '2026'
                      payer_data:
                        first_name: Rajesh
                        last_name: Patel
                        pan: KGEPS1880J
                        dob: '1999-04-14'
                        email: rajesh@techcorp.com
                        phone: '9876543210'
                        country_code: '91'
                        is_tcs_declared: true
                      tcs_data:
                        tcs_applicable: true
                        tcs_rate: '2.00'
                        original_amount:
                          value: 1000
                          currency: INR
                        computed_amount:
                          value: 1020
                          currency: INR
                        slab_id: EDU_MED_FY2627
                        is_flat_rate: false
                        financial_year: '2026-27'
                        breakdown:
                          amount:
                            value: 1000
                            currency: INR
                          tcs:
                            value: 20
                            currency: INR
              cardPaymentPACBBusinessPAN:
                summary: Cross Border Import Card Payment with TCS (Business PAN)
                value:
                  payments:
                    - merchant_payment_reference: 49965ef7-355f-45a0-a8b7-9cd48b77fec3
                      payment_method: CARD
                      payment_amount:
                        value: 1000
                        currency: INR
                      payment_option:
                        card_details:
                          name: TechCorp Pvt Ltd
                          card_number: '4000000000000000'
                          cvv: '065'
                          expiry_month: '12'
                          expiry_year: '2026'
                      payer_data:
                        first_name: Rajesh
                        last_name: Patel
                        pan: AABCT1234F
                        name_on_pan: TechCorp Private Limited
                        email: rajesh@techcorp.com
                        phone: '9876543210'
                        country_code: '91'
                        is_tcs_declared: true
                      tcs_data:
                        tcs_applicable: true
                        tcs_rate: '2.00'
                        original_amount:
                          value: 1000
                          currency: INR
                        computed_amount:
                          value: 1020
                          currency: INR
                        slab_id: EDU_MED_FY2627
                        is_flat_rate: false
                        financial_year: '2026-27'
                        breakdown:
                          amount:
                            value: 1000
                            currency: INR
                          tcs:
                            value: 20
                            currency: INR
              cardPaymentPACBNoTCS:
                summary: Cross Border Import Card Payment without TCS (NON_LRS)
                value:
                  payments:
                    - merchant_payment_reference: 39965ef7-355f-45a0-a8b7-9cd48b77fec2
                      payment_method: CARD
                      payment_amount:
                        value: 1000
                        currency: INR
                      payment_option:
                        card_details:
                          name: John Doe
                          card_number: '4000000000000000'
                          cvv: '065'
                          expiry_month: '12'
                          expiry_year: '2026'
                      payer_data:
                        first_name: Rajesh
                        last_name: Patel
                        pan: KGEPS1880J
                        email: rajesh@techcorp.com
                        phone: '9876543210'
                        country_code: '91'
              upiIntent:
                summary: UPI Intent Payment
                value:
                  payments:
                    - merchant_payment_reference: pay-ref-004
                      payment_amount:
                        value: 100
                        currency: INR
                      payment_method: UPI
                      payment_option:
                        upi_details:
                          txn_mode: INTENT
              upiIntentQR:
                summary: UPI Intent Payment with QR Flow
                value:
                  payments:
                    - merchant_payment_reference: pay-ref-007
                      payment_amount:
                        value: 100
                        currency: INR
                      payment_method: UPI
                      payment_option:
                        upi_details:
                          txn_mode: INTENT
                          qr_code: true
              netBanking:
                summary: NetBanking Payment
                value:
                  payments:
                    - merchant_payment_reference: pay-ref-005
                      payment_amount:
                        value: 100
                        currency: INR
                      payment_method: NETBANKING
                      payment_option:
                        netbanking_details:
                          pay_code: NB1531
                      device_info:
                        device_type: WEB
                        browser_user_agent: Mozilla/5.0 (WindowsNT 10.0; WOW64; rv:51.0)
              wallet:
                summary: Wallet Payment
                value:
                  payments:
                    - merchant_payment_reference: pay-ref-006
                      payment_amount:
                        value: 100
                        currency: INR
                      payment_method: WALLET
                      payment_option:
                        wallet_details:
                          wallet_code: PAYTM
              bnplPayment:
                summary: Buy Now, Pay Later (BNPL)
                value:
                  payments:
                    - merchant_payment_reference: guid
                      payment_method: BNPL
                      payment_amount:
                        value: 100
                        currency: INR
                      payment_option:
                        bnpl_details:
                          mobile: '9315829629'
                          bnpl_pay_code: LAZYPAY
                      device_info:
                        source_ip_address: source_ip_address
                        device_model: modelA
                        device_manufacturer: manufacturerA
                        browser_user_agent: buaA
              brandWalletPayment:
                summary: Brand Wallet Payment
                description: |
                  Pay using Brand Wallet balance. After this call, the payment status
                  becomes PENDING and an OTP is automatically sent to the customer.
                  Call Submit OTP to authorize.
                value:
                  payments:
                    - merchant_payment_reference: pay-ref-bw-001
                      payment_amount:
                        value: 50000
                        currency: INR
                      payment_method: BRAND_WALLET
                      payment_option:
                        wallet_details:
                          customer_id: "cust-bw-001"
              creditEMI:
                $ref: '#/components/examples/CreditEMIRequest'
              debitEMI:
                $ref: '#/components/examples/DebitEMIRequest'
              tokenizedEMI:
                $ref: '#/components/examples/TokenizedEMIRequest'
              cardlessEMI:
                $ref: '#/components/examples/CardlessEMIRequest'
              splitEMI:
                $ref: '#/components/examples/SplitEMIRequest'
              icbOnUPI:
                summary: ICB on UPI
                value:
                  payments:
                    - merchant_payment_reference: 96d253ac-7387-4647-ae64-6f0d55f4724e
                      payment_method: UPI
                      payment_amount:
                        value: 450
                        currency: INR
                      is_final_part_payment: true
                      payment_option:
                        upi_details:
                          txn_mode: INTENT
                          payer:
                            phone_number: '8979279800'
                            vpa: saklania8@okaxis
                      offer_data:
                        offer_details:
                          tenure:
                            offer_ranking: 1
                            issuer_offer_parameters:
                              - program_type: MERCHANT_BANK_OFFER
                                offer_id: '6037'
                                offer_parameter_id: v1-37-10-7-5-6037-287151
                            details:
                              - product_code: ICB_BOSCH_001
                                brand_id: '7'
                                product_amount:
                                  currency: INR
                                  value: 500
                                interest_rate: 0.0
                                discount:
                                  discount_type: INSTANT
                                  percentage: 10.0
                                  amount:
                                    currency: INR
                                    value: 50
                                  max_amount:
                                    currency: INR
                                    value: 50000
                                  breakup:
                                    merchant:
                                      amount:
                                        currency: INR
                                        value: 50
                            discount:
                              discount_type: INSTANT
                              percentage: 10.0
                              amount:
                                currency: INR
                                value: 50
                              max_amount:
                                currency: INR
                                value: 50000
                              breakup:
                                merchant:
                                  amount:
                                    currency: INR
                                    value: 50
                            loan_amount:
                              currency: INR
                              value: 450
                            auth_amount:
                              currency: INR
                              value: 450
                            total_discount_amount:
                              currency: INR
                              value: 50
                            net_payment_amount:
                              currency: INR
                              value: 500
                            interest_rate_percentage: 0.0
                            emi_type: STANDARD
                            is_mobile_number_required_for_eligibility: false
                            is_offer_auto_applied: true
      responses:
        '200':
          description: Payment created successfully. Returns the full order with payment details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
              examples:
                cardPaymentResponse:
                  summary: Card Payment Response
                  value:
                    data:
                      order_id: v1-5206071124-aa-mpLhF3
                      merchant_order_reference: 0342ef1e-4606-4c11-8640-705f4d415b6d
                      type: CHARGE
                      status: PROCESSED
                      challenge_url: https://api.pluralpay.in/web/auth/landing/?token=S50xnInJvpcft...
                      merchant_id: '104359'
                      order_amount:
                        value: 1000
                        currency: INR
                      pre_auth: false
                      allowed_payment_methods:
                        - CARD
                        - UPI
                        - NETBANKING
                        - POINTS
                        - WALLET
                      notes: order1
                      callback_url: https://sample-callback-url
                      failure_callback_url: https://sample-failure-callback-url
                      purchase_details:
                        customer:
                          email_id: '[email protected]'
                          first_name: Kevin
                          last_name: Bob
                          customer_id: '123456'
                          mobile_number: '9876543210'
                          country_code: '91'
                        merchant_metadata:
                          key1: value1
                          key2: value2
                      payments:
                        - id: v1-5206071124-aa-mpLhF3-cc-l
                          merchant_payment_reference: 008cf04b-a770-4777-854e-b1e6c1230609
                          status: PROCESSED
                          payment_amount:
                            value: 1000
                            currency: INR
                          payment_method: CARD
                          payment_option:
                            card_data:
                              card_type: CREDIT
                              network_name: MASTERCARD
                              issuer_name: HDFC
                              card_category: NONE
                              country_code: IND
                              token_txn_type: ALT_TOKEN
                              last4_digit: '1091'
                              save: false
                              is_native_otp_eligible: true
                          acquirer_data:
                            approval_code: '030376'
                            acquirer_reference: '202455840588334'
                            rrn: '419335023601'
                            is_aggregator: true
                          created_at: '2024-07-11T06:52:12.484Z'
                          updated_at: '2024-07-11T06:59:38.260Z'
                      created_at: '2024-07-11T06:52:12.484Z'
                      updated_at: '2024-07-11T06:59:38.260Z'
                cardPaymentPACBWithTCSResponse:
                  summary: Cross Border Import Card Payment Response (with TCS)
                  value:
                    data:
                      order_id: v1-260522080410-aa-SrAzoh
                      merchant_order_reference: '112345'
                      type: CHARGE
                      status: PENDING
                      challenge_url: https://pluraluat.v2.pinepg.in/web/auth/landing/?token=S50TpKleRC1badrnan295BUX0VQ3tDWZC922nXnhPO%2BKHKegMc1RDKvPWs6BwHWR%2FHw
                      callback_url: https://sample-callback-url
                      failure_callback_url: https://sample-failure-callback-url
                      merchant_id: '111260'
                      order_amount:
                        value: 1100
                        currency: INR
                      notes: order1
                      pre_auth: false
                      part_payment: false
                      allowed_payment_methods:
                        - CARD
                        - UPI
                        - NETBANKING
                      payments:
                        - id: v1-260522080410-aa-SrAzoh-cc-x
                          merchant_payment_reference: 39965ef7-355f-45a0-a8b7-9cd48b77fec2
                          status: PENDING
                          payment_amount:
                            value: 1100
                            currency: INR
                          payment_method: CARD
                          payment_option:
                            card_data:
                              card_type: DEBIT
                              network_name: Visa
                              issuer_name: INTL HDQTRS-CENTER OWNED
                              card_category: Commercial
                              country_code: IND
                              token_txn_type: ALT_TOKEN
                              last4_digit: '1091'
                              save: false
                              is_native_otp_eligible: true
                          acquirer_data:
                            approval_code: ''
                            acquirer_reference: ''
                            rrn: ''
                            is_aggregator: true
                          created_at: '2026-05-22T08:04:12.757Z'
                          updated_at: '2026-05-22T08:04:15.193Z'
                      created_at: '2026-05-22T08:04:10.662Z'
                      updated_at: '2026-05-22T08:04:15.193Z'
                      integration_mode: SEAMLESS
                      payment_retries_remaining: 9
                      is_mcc_transaction: false
                      is_domestic_txn_for_risk_enabled: false
                      order_token: RR%2Bv%2FjamqGXzGvSxk3X3SpxvIXQVmRDCFf%2FcXWg%2FY2g%3D
                      cross_border_details:
                        flow_type: NON_LRS
                        purpose_code: S0101
                        commodity_type: SERVICES
                        requires_pan: true
                        payer_data:
                          first_name: Rajesh
                          last_name: Patel
                          email: rajesh@techcorp.com
                          phone: '9876543210'
                          country_code: '91'
                          pan: KGEPS1880J
                          dob: '1999-04-14'
                          address_line_1: 10 Downing Street Westminster London
                          address_line_2: Oxford Street Westminster London
                        tcs_data:
                          tcs_applicable: true
                          tcs_rate: '2.00'
                          original_amount:
                            value: 1000
                            currency: INR
                          computed_amount:
                            value: 1020
                            currency: INR
                          slab_id: EDU_MED_FY2627
                          is_flat_rate: false
                          financial_year: '2026-27'
                          breakdown:
                            amount:
                              value: 1000
                              currency: INR
                            tcs:
                              value: 20
                              currency: INR
                cardPaymentPACBNoTCSResponse:
                  summary: Cross Border Import Card Payment Response (without TCS / NON_LRS)
                  value:
                    data:
                      order_id: v1-260522080410-aa-SrAzoh
                      merchant_order_reference: '112345'
                      type: CHARGE
                      status: PENDING
                      challenge_url: https://pluraluat.v2.pinepg.in/web/auth/landing/?token=abcToken123
                      callback_url: https://sample-callback-url
                      failure_callback_url: https://sample-failure-callback-url
                      merchant_id: '111260'
                      order_amount:
                        value: 1100
                        currency: INR
                      pre_auth: false
                      payments:
                        - id: v1-260522080410-aa-SrAzoh-cc-x
                          merchant_payment_reference: 39965ef7-355f-45a0-a8b7-9cd48b77fec2
                          status: PENDING
                          payment_amount:
                            value: 1100
                            currency: INR
                          payment_method: CARD
                          payment_option:
                            card_data:
                              card_type: DEBIT
                              network_name: Visa
                              last4_digit: '1091'
                              save: false
                          created_at: '2026-05-22T08:04:12.757Z'
                          updated_at: '2026-05-22T08:04:15.193Z'
                      created_at: '2026-05-22T08:04:10.662Z'
                      updated_at: '2026-05-22T08:04:15.193Z'
                      integration_mode: SEAMLESS
                      payment_retries_remaining: 9
                      is_mcc_transaction: false
                      cross_border_details:
                        flow_type: NON_LRS
                        purpose_code: S0101
                        commodity_type: SERVICES
                        requires_pan: true
                        payer_data:
                          first_name: Rajesh
                          last_name: Patel
                          email: rajesh@techcorp.com
                          phone: '9876543210'
                          country_code: '91'
                          pan: KGEPS1880J
                          dob: '1999-04-14'
                        tcs_data: null
                upiCollectResponse:
                  summary: UPI Collect Payment Response
                  value:
                    data:
                      order_id: v1-240820090251-aa-xwuI7J
                      merchant_order_reference: 8200c7f7-4490-4970-b6bb-40ffa05d47e5
                      type: CHARGE
                      status: PENDING
                      challenge_url: upi://pay?mode=04&pa=pinelabs.24092@hdfcbank&pn=Pine%20Test&mc=6012&cu=INR&am=1.00&tr=68706&tn=Payment%20for%20v1
                      merchant_id: '110047'
                      order_amount:
                        value: 100
                        currency: INR
                      pre_auth: false
                      allowed_payment_methods:
                        - CARD
                        - UPI
                        - NETBANKING
                        - POINTS
                        - WALLET
                      notes: order1
                      callback_url: https://sample-callback-url
                      failure_callback_url: https://sample-failure-callback-url
                      purchase_details:
                        customer:
                          email_id: '[email protected]'
                          first_name: Kevin
                          last_name: Bob
                          customer_id: '192212'
                          mobile_number: '9876543210'
                          country_code: '91'
                        merchant_metadata:
                          key1: DD
                          key2: XOF
                      payments:
                        - id: v1-240820090251-aa-xwuI7J-up-6
                          merchant_payment_reference: 008cf04b-a770-4777-854e-b1e6c1230609
                          status: PENDING
                          payment_amount:
                            value: 100
                            currency: INR
                          payment_method: UPI
                          payment_option:
                            upi_details:
                              txn_mode: COLLECT
                              payer:
                                vpa: kevinbob@example
                          acquirer_data:
                            approval_code: ''
                            acquirer_reference: ''
                            rrn: ''
                            is_aggregator: true
                          created_at: '2024-08-20T09:02:51.265Z'
                          updated_at: '2024-08-20T09:03:01.208Z'
                      created_at: '2024-08-20T09:02:51.265Z'
                      updated_at: '2024-08-20T09:03:01.208Z'
                upiIntentResponse:
                  summary: UPI Intent Payment Response
                  value:
                    data:
                      order_id: v1-240820090251-aa-xwuI7J
                      merchant_order_reference: 8200c7f7-4490-4970-b6bb-40ffa05d47e5
                      type: CHARGE
                      status: PENDING
                      challenge_url: upi://pay?mode=04&pa=pinelabs.24092@hdfcbank&pn=Pine%20Test&mc=6012&cu=INR&am=1.00&tr=68706&tn=Payment%20for%20v1
                      merchant_id: '110047'
                      order_amount:
                        value: 100
                        currency: INR
                      pre_auth: false
                      allowed_payment_methods:
                        - CARD
                        - UPI
                        - NETBANKING
                        - POINTS
                        - WALLET
                      callback_url: https://sample-callback-url
                      failure_callback_url: https://sample-failure-callback-url
                      payments:
                        - id: v1-240820090251-aa-xwuI7J-up-6
                          merchant_payment_reference: 008cf04b-a770-4777-854e-b1e6c1230609
                          status: PENDING
                          payment_amount:
                            value: 100
                            currency: INR
                          payment_method: UPI
                          payment_option:
                            upi_details:
                              txn_mode: INTENT
                          acquirer_data:
                            approval_code: ''
                            acquirer_reference: ''
                            rrn: ''
                            is_aggregator: true
                          created_at: '2024-08-20T09:02:51.265Z'
                          updated_at: '2024-08-20T09:03:01.208Z'
                      created_at: '2024-08-20T09:02:51.265Z'
                      updated_at: '2024-08-20T09:03:01.208Z'
                upiIntentQRResponse:
                  summary: UPI Intent with QR Flow Response
                  value:
                    data:
                      order_id: v1-250102053141-aa-TRBQR6
                      merchant_order_reference: f5cba4a4-1c46-4b23-b0a8-7fd6b8027f63
                      type: CHARGE
                      status: PENDING
                      challenge_url: upi://pay?mode=04&pa=pinelabs.1068@hdfcbank&pn=Saklani%20Bhai%20Upi&mc=6012&cu=INR&am=1.00&tr=3562571&tn=Payment%20for%20v1
                      merchant_id: '110939'
                      order_amount:
                        value: 100
                        currency: INR
                      pre_auth: false
                      allowed_payment_methods:
                        - CARD
                        - UPI
                        - NETBANKING
                        - POINTS
                        - WALLET
                      callback_url: https://sample-callback-url
                      failure_callback_url: https://sample-failure-callback-url
                      payments:
                        - id: v1-250102053141-aa-TRBQR6-up-6
                          merchant_payment_reference: pay-ref-007
                          status: PENDING
                          payment_amount:
                            value: 100
                            currency: INR
                          payment_method: UPI
                          payment_option:
                            upi_details:
                              txn_mode: INTENT
                          acquirer_data:
                            approval_code: ''
                            acquirer_reference: ''
                            rrn: ''
                            is_aggregator: true
                          created_at: '2025-01-02T05:31:41.265Z'
                          updated_at: '2025-01-02T05:31:51.208Z'
                      image_url: https://plural-prod-settlement.s3.ap-south-1.amazonaws.com/qrcode/v1-250102053141-aa-TRBQR6.png?X-Amz-Algorithm=AWS4-HMAC-SHA256...
                      integration_mode: SEAMLESS
                      created_at: '2025-01-02T05:31:41.265Z'
                      updated_at: '2025-01-02T05:31:51.208Z'
                icbOnUPIResponse:
                  summary: ICB on UPI Response
                  value:
                    data:
                      order_id: v1-260526052910-aa-D8YXpn
                      merchant_order_reference: 8edc983d-da49-40bd-9585-61068d68641a
                      type: CHARGE
                      status: PENDING
                      challenge_url: upi://pay?mode=04&pa=abc@pinetest&pn=PineLabsTest&mc=5732&cu=INR&am=4.5&tr=ONLINE18713327843714527131990248&tn=Paymentforv1
                      callback_url: https://www.google.com/
                      failure_callback_url: https://www.chatgpt.com
                      merchant_id: '119222'
                      order_amount:
                        value: 500
                        currency: INR
                      pre_auth: false
                      part_payment: false
                      allowed_payment_methods:
                        - CARD
                        - CREDIT_EMI
                        - UPI
                        - DEBIT_EMI
                        - BNPL
                      purchase_details:
                        customer:
                          email_id: aayush1.sam@gmail.com
                          first_name: joe
                          last_name: kumar
                          customer_id: cust-v1-260522121758-aa-E0cRfd
                          mobile_number: '9868608104'
                          country_code: '91'
                          billing_address:
                            address1: H.No 15, Sector 17
                            pincode: '61232112'
                            city: CHANDIGARH
                            state: PUNJAB
                            country: INDIA
                          shipping_address:
                            address1: H.No 15, Sector 17
                            address2: string
                            address3: string
                            pincode: '144001123'
                            city: CHANDIGARH
                            state: PUNJAB
                            country: INDIA
                        merchant_metadata:
                          key1: ''
                          key2: ''
                      payments:
                        - id: v1-260526052910-aa-D8YXpn-up-a
                          merchant_payment_reference: 96d253ac-7387-4647-ae64-6f0d55f4724e
                          status: PENDING
                          payment_amount:
                            value: 450
                            currency: INR
                          challenge_url: upi://pay?mode=04&pa=abc@pinetest&pn=PineLabsTest&mc=5732&cu=INR&am=4.5&tr=ONLINE18713327843714527131990248&tn=Paymentforv1
                          payment_method: UPI
                          payment_option:
                            upi_data:
                              txn_mode: INTENT
                              payer:
                                vpa: saklania8@okaxis
                                phone_number: '8979279800'
                                vpa_masked: sakl********axis
                          acquirer_data:
                            approval_code: ''
                            acquirer_reference: ''
                            rrn: ''
                            is_aggregator: false
                            acquirer_name: AXIS_PINE
                          offer_data:
                            offer_details:
                              id: '37'
                              name: UPI
                              issuer_type: UPI
                              priority: 26
                              tenure:
                                tenure_id: '7'
                                name: No EMI Only Cashback
                                tenure_type: MONTH
                                tenure_value: 0
                                issuer_offer_parameters:
                                  - program_type: MERCHANT_BANK_OFFER
                                    offer_id: '6037'
                                    offer_parameter_id: '287151'
                                details:
                                  - product_code: ICB_BOSCH_001
                                    product_display_name: Convection 27L-TH-43LX700DX
                                    brand_id: '7'
                                    brand_name: Panasonic
                                    product_amount:
                                      currency: INR
                                      value: 500
                                    interest_rate: 0.0
                                    discount:
                                      discount_type: INSTANT
                                      max_amount:
                                        currency: INR
                                        value: 50000
                                      percentage: 10.0
                                      amount:
                                        currency: INR
                                        value: 50
                                      breakup:
                                        merchant:
                                          amount:
                                            currency: INR
                                            value: 50
                                        issuer: {}
                                        brand: {}
                                        dealer: {}
                                discount:
                                  discount_type: INSTANT
                                  max_amount:
                                    currency: INR
                                    value: 50000
                                  percentage: 10.0
                                  amount:
                                    currency: INR
                                    value: 50
                                  breakup:
                                    merchant:
                                      amount:
                                        currency: INR
                                        value: 50
                                    issuer: {}
                                    brand: {}
                                    dealer: {}
                                loan_amount:
                                  currency: INR
                                  value: 450
                                auth_amount:
                                  currency: INR
                                  value: 450
                                total_discount_amount:
                                  currency: INR
                                  value: 50
                                net_payment_amount:
                                  currency: INR
                                  value: 450
                                monthly_emi_amount:
                                  currency: INR
                                  value: 450
                                total_emi_amount:
                                  currency: INR
                                  value: 450
                                interest_rate_percentage: 0.0
                                emi_type: STANDARD
                          created_at: '2026-05-26T05:29:28.978Z'
                          updated_at: '2026-05-26T05:29:33.874Z'
                      created_at: '2026-05-26T05:29:10.012Z'
                      updated_at: '2026-05-26T05:29:33.874Z'
                      integration_mode: SEAMLESS
                      payment_retries_remaining: 9
                      is_mcc_transaction: false
                netBankingResponse:
                  summary: NetBanking Payment Response
                  value:
                    data:
                      order_id: v1-241108065317-aa-zqaZCr
                      merchant_order_reference: d1bc3469-672b-478f-b935-b385dda1a3a0
                      type: CHARGE
                      status: PENDING
                      challenge_url: https://redirect-listener-service-uat.v2.pinepg.in/netbanking/billdesk?token=v1-241108065317-aa-zqaZCr-nb-T
                      merchant_id: '123456'
                      order_amount:
                        value: 100
                        currency: INR
                      pre_auth: false
                      allowed_payment_methods:
                        - CARD
                        - UPI
                        - NETBANKING
                        - POINTS
                        - WALLET
                      notes: order1
                      callback_url: https://sample-callback-url
                      failure_callback_url: https://sample-failure-callback-url
                      payments:
                        - id: v1-241108065317-aa-zqaZCr-nb-T
                          merchant_payment_reference: d99a376f-2b41-440d-841d-aa75e8abce13
                          status: PENDING
                          payment_amount:
                            value: 100
                            currency: INR
                          payment_method: NETBANKING
                          payment_option:
                            netbanking_details:
                              pay_code: NB1531
                              txn_mode: REDIRECT
                          acquirer_data:
                            approval_code: ''
                            acquirer_reference: USBI0001265227
                            rrn: ''
                            is_aggregator: true
                          created_at: '2024-11-08T06:53:32.527Z'
                          updated_at: '2024-11-08T06:53:33.271Z'
                      integration_mode: SEAMLESS
                      created_at: '2024-11-08T06:53:17.603Z'
                      updated_at: '2024-11-08T06:53:33.272Z'
                walletResponse:
                  summary: Wallet Payment Response
                  value:
                    data:
                      order_id: v1-241114140627-aa-8Ujllu
                      merchant_order_reference: d1bc3469-672b-478f-b935-b385dda1a3a0
                      type: CHARGE
                      status: PENDING
                      challenge_url: https://api.pluralpay.in/web/auth/wallet/billdesk?token=v1-241114140627-aa-8Ujllu-wa-C
                      merchant_id: '110553'
                      order_amount:
                        value: 100
                        currency: INR
                      pre_auth: false
                      allowed_payment_methods:
                        - CARD
                        - UPI
                        - NETBANKING
                        - POINTS
                        - WALLET
                      callback_url: https://sample-callback-url
                      failure_callback_url: https://sample-failure-callback-url
                      payments:
                        - id: v1-241114140627-aa-8Ujllu-wa-C
                          merchant_payment_reference: 008cf04b-a770-4777-854e-b1e6c1230609
                          status: PENDING
                          payment_amount:
                            value: 100
                            currency: INR
                          payment_method: WALLET
                          payment_option:
                            wallet_details:
                              wallet_code: PAYTM
                          acquirer_data:
                            approval_code: ''
                            acquirer_reference: USBI0001265227
                            rrn: ''
                            is_aggregator: true
                          created_at: '2024-11-14T14:06:32.527Z'
                          updated_at: '2024-11-14T14:06:33.271Z'
                      integration_mode: SEAMLESS
                      created_at: '2024-11-14T14:06:27.603Z'
                      updated_at: '2024-11-14T14:06:33.272Z'
                bnplPaymentResponse:
                  summary: BNPL Payment Response
                  value:
                    data:
                      order_id: v1-250708064524-aa-Zd1J9Y
                      merchant_order_reference: efe43c72-acef-43ba-a3cf-c712ca183ffe
                      type: CHARGE
                      status: PENDING
                      merchant_id: '106974'
                      order_amount:
                        value: 100
                        currency: INR
                      pre_auth: false
                      payments:
                        - id: v1-250708064524-aa-Zd1J9Y-bn-a
                          merchant_payment_reference: 2f2c63e5-c623-4a9f-8b43-67dbd721fa38
                          status: PENDING
                          payment_amount:
                            value: 100
                            currency: INR
                          payment_method: BNPL
                          payment_option:
                            bnpl_details:
                              mobile: '9315829629'
                              bnpl_pay_code: LAZYPAY
                          acquirer_data:
                            approval_code: ''
                            acquirer_reference: TXN1679652
                            rrn: ''
                            is_aggregator: true
                            acquirer_name: LAZYPAY_BNPL
                          created_at: '2025-07-08T06:45:26.763Z'
                          updated_at: '2025-07-08T06:45:35.111Z'
                      created_at: '2025-07-08T06:45:24.813Z'
                      updated_at: '2025-07-08T06:45:35.112Z'
                      integration_mode: SEAMLESS
                      payment_retries_remaining: 9
                creditEMIResponse:
                  $ref: '#/components/examples/CreditEMIResponse'
                tokenizedEMIResponse:
                  $ref: '#/components/examples/TokenizedEMIResponse'
                cardlessEMIResponse:
                  $ref: '#/components/examples/CardlessEMIResponse'
                splitEMIResponse:
                  $ref: '#/components/examples/SplitEMIResponse'
                brandWalletPaymentResponse:
                  summary: Brand Wallet Payment Response (Pending OTP)
                  description: |
                    After a Brand Wallet payment is created, the payment status is
                    PENDING. An OTP is automatically sent to the customer by the
                    wallet provider. Call Submit OTP with the payment_id to complete.
                  value:
                    data:
                      order_id: v1-260602120000-aa-BWexmpl
                      merchant_order_reference: bw-order-001
                      type: CHARGE
                      status: PENDING
                      merchant_id: '104359'
                      order_amount:
                        value: 50000
                        currency: INR
                      pre_auth: false
                      allowed_payment_methods:
                        - BRAND_WALLET
                      payments:
                        - id: v1-260602120000-aa-BWexmpl-bw-l
                          merchant_payment_reference: pay-ref-bw-001
                          status: PENDING
                          payment_amount:
                            value: 50000
                            currency: INR
                          payment_method: BRAND_WALLET
                          created_at: '2026-06-02T12:00:00.000Z'
                          updated_at: '2026-06-02T12:00:01.000Z'
                      created_at: '2026-06-02T12:00:00.000Z'
                      updated_at: '2026-06-02T12:00:01.000Z'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Order not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Unprocessable entity — validation failed or payment cannot be processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/otp/generate:
    post:
      operationId: GenerateOTP
      summary: Generate OTP
      x-seo-title: "Generate OTP | Pine Labs Payments API Reference"
      x-seo-description: "Trigger a one-time password for additional cardholder verification during the payment authentication flow."
      x-keywords: "generate OTP API, card authentication, payment OTP, cardholder verification, OTP request"
      description: |
        Generate a One-Time Password (OTP) for card payment authentication.
        This API is called after a card payment is created and the card requires
        OTP-based verification (native OTP flow).
      tags:
        - Card Payments
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OTPGenerateRequest'
            example:
              payment_id: v1-5757575757-aa-hU1rUd-cc-l
      responses:
        '200':
          description: OTP generated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OTPGenerateResponse'
              example:
                next:
                  - SUBMIT_OTP
                  - RESEND_OTP
                meta_data:
                  resend_after: '180'
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          description: Unprocessable entity — payment not eligible for OTP generation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          description: Service temporarily unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/pay/v1/getCardDetails:
    post:
      operationId: GetCardDetails
      summary: Get Card Details
      x-seo-title: "Get Card Details | Pine Labs Payments API Reference"
      x-seo-description: "Retrieve card metadata—type, issuer bank, and network—from a BIN to tailor the checkout experience."
      x-keywords: "card details API, BIN lookup, card type detection, card issuer, card network, BIN range"
      description: |
        Use this API to get the card details.
      tags:
        - Card Payments
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetCardDetailsRequest'
            example:
              amount: '100'
              card_details:
                - payment_identifier: '4012001037141112'
                  payment_reference_type: CARD
      responses:
        '200':
          description: Card details retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCardDetailsResponse'
              example:
                card_payment_details:
                  - card_network: VISA
                    card_issuer: INTL HDQTRS-CENTER OWNED
                    card_type: CREDIT
                    card_category: NONE
                    is_international_card: false
                    is_native_otp_supported: true
                    country_code: IND
                    currency: INR
                    is_currency_supported: true
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          description: Unprocessable entity — invalid card number format.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          description: Service temporarily unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/pay/v1/order/{order_id}/challan:
    post:
      operationId: CreateChallan
      summary: Create Challan
      x-seo-title: "Create Challan | Pine Labs Payments API Reference"
      x-seo-description: "Generate an electronic challan for government or institutional fee collection via the payment gateway."
      x-keywords: "create challan API, e-challan, electronic challan, government payments, institutional collection"
      description: |
        Creates an e-challan for a given order. The challan contains virtual account details
        that customers can use for payment.
      tags:
        - E-Challans
      security:
        - BearerAuth: []
      parameters:
        - name: order_id
          in: path
          required: true
          description: Unique identifier of the order in the Pine Labs Online database.
          schema:
            type: string
            example: v1-250912053834-aa-a6T94l
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateChallanRequest'
            examples:
              create:
                $ref: '#/components/examples/CreateChallanRequestExample'
      responses:
        '200':
          description: Challan created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChallanResponse'
              examples:
                success:
                  $ref: '#/components/examples/ChallanResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
    get:
      operationId: GetChallan
      summary: Get Challan
      x-seo-title: "Get Challan | Pine Labs Payments API Reference"
      x-seo-description: "Retrieve challan details and payment status by challan ID for tracking and reconciliation."
      x-keywords: "get challan API, challan status, challan tracking, e-challan details, challan lookup"
      description: |
        Retrieves the e-challan details for a given order.
      tags:
        - E-Challans
      security:
        - BearerAuth: []
      parameters:
        - name: order_id
          in: path
          required: true
          description: Unique identifier of the order in the Pine Labs Online database.
          schema:
            type: string
            example: v1-250912053834-aa-a6T94l
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Challan retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChallanResponse'
              examples:
                success:
                  $ref: '#/components/examples/ChallanResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
  /api/pay/v1/order/{order_id}/challan/pdf:
    get:
      operationId: GetChallanPDF
      summary: Get Challan PDF
      x-seo-title: "Get Challan PDF | Pine Labs Payments API Reference"
      x-seo-description: "Download the challan receipt as a PDF for printing, record-keeping, or sharing with the payer."
      x-keywords: "challan PDF API, download challan receipt, challan document, PDF receipt, challan print"
      description: |
        Downloads the e-challan in PDF format for a given order.
      tags:
        - E-Challans
      security:
        - BearerAuth: []
      parameters:
        - name: order_id
          in: path
          required: true
          description: Unique identifier of the order in the Pine Labs Online database.
          schema:
            type: string
            example: v1-250912053834-aa-a6T94l
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Challan PDF returned successfully.
          content:
            application/pdf:
              schema:
                type: string
                format: binary
  /api/pay/v1/orders/{order_id}/payments/{payments_id}/authorize:
    post:
      operationId: AuthorizeApplePayPayment
      summary: Authorize Payment (Apple Pay)
      x-seo-title: "Authorize Apple Pay Payment | Pine Labs Payments API Reference"
      x-seo-description: "Accept Apple Pay on your app or website by submitting the encrypted payment token for authorization."
      x-keywords: "Apple Pay API, Apple Pay integration, Apple Pay payment token, iOS payments, mobile payments"
      description: |
        Use this API to authorize payments initiated through Apple Pay.

        **Note:** You can use this API only if you are decrypting the Apple Pay payment token
        on your end using the Apple Pay JS SDK.
      tags:
        - Apple Pay
      security:
        - BearerAuth: []
      parameters:
        - name: order_id
          in: path
          required: true
          description: Unique identifier of the order in the Pine Labs Online database.
          schema:
            type: string
            example: v1-4405071524-aa-qlAtAf
        - name: payments_id
          in: path
          required: true
          description: |
            Unique identifier of the payment in the Pine Labs Online database.
            Maximum length: 50 characters.
          schema:
            type: string
            maxLength: 50
            example: v1-5206071124-aa-mpLhF3-cc-l
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthorizePaymentRequest'
            examples:
              authorizePayment:
                summary: Authorize Payment
                value:
                  decrypted_card_details:
                    token: '4111111111111111'
                    expiration_month: '12'
                    expiration_year: '2031'
                    cryptogram: AceY+igABPs3jdwNaDg3MAACAAA=
                    cavv: AceY+igABPs3jdwNaDg3MAACAAA=
                    eci: '05'
                    card_meta_data:
                      card_type: DEBIT
                      network_name: VISA
      responses:
        '200':
          description: Payment authorized successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizePaymentResponse'
              examples:
                success:
                  $ref: '#/components/examples/AuthorizePaymentResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: Unprocessable Entity — invalid card details or authorization failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/conversion/mcc:
    post:
      operationId: CurrencyConversion
      summary: Currency Conversion (MCC)
      x-seo-title: "Currency Conversion (MCC) | Pine Labs Payments API Reference"
      x-seo-description: "Convert transaction amounts between currencies at real-time exchange rates for cross-border payment processing."
      x-keywords: "currency conversion API, MCC, forex exchange rate, international payments, multi-currency checkout"
      description: |
        Calculates accurately converted amounts for cross-border transactions
        using Multi-Currency Conversion (MCC).

        Supports 50+ currencies with a robust Fraud Risk Management engine.
      tags:
        - International Payments
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CurrencyConversionRequest'
            examples:
              convert:
                $ref: '#/components/examples/CurrencyConversionRequestExample'
      responses:
        '200':
          description: Currency conversion calculated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CurrencyConversionResponse'
              examples:
                success:
                  $ref: '#/components/examples/CurrencyConversionResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
  /api/v1/tcs/compute:
    post:
      operationId: ComputeTCS
      summary: Compute TCS
      x-seo-title: "Compute TCS | Pine Labs Payments API Reference"
      x-seo-description: "Calculate Tax Collected at Source for LRS remittance transactions as mandated by RBI for cross-border payments."
      x-keywords: "compute TCS API, tax collected at source, LRS tax, RBI TCS, cross-border tax, remittance"
      description: |
        Computes Tax Collected at Source (TCS) for LRS (Liberalised Remittance Scheme) cross-border orders.

        **When to use:**
        - **Amount exceeds TCS slab threshold** — The transaction amount is greater than the configured slab threshold (e.g., ₹10,00,000) for the current financial year.
        - **Customer declares TCS voluntarily (`is_tcs_declared: true`)** — The customer has intentionally declared TCS even when the current transaction amount is below the slab threshold. This is applicable when the customer has already exceeded the slab threshold across multiple transactions in the current financial year.

        **Note:** This API is only applicable for orders with `flow_type: LRS`. It will return an error for non-LRS purpose code orders.
      tags:
        - International Payments
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TCSComputeRequest'
            examples:
              TCSCompute:
                summary: Compute TCS for LRS order
                value:
                  order_id: "v1-260514071718-aa-XqVzeA"
                  amount:
                    currency: "INR"
                    value: 100000
                  is_tcs_declared: true
      responses:
        '200':
          description: TCS computation result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TCSComputeResponse'
              examples:
                TCSApplicable:
                  summary: TCS Applicable
                  value:
                    tcs_applicable: true
                    tcs_rate: "20.00"
                    original_amount:
                      value: 100000
                      currency: "INR"
                    computed_amount:
                      value: 120000
                      currency: "INR"
                    slab_id: "slab-lrs-2026-27"
                    is_flat_rate: false
                    financial_year: "2026-27"
                    breakdown:
                      amount:
                        value: 100000
                        currency: "INR"
                      tcs:
                        value: 20000
                        currency: "INR"
                TCSNotApplicable:
                  summary: TCS Not Applicable
                  value:
                    tcs_applicable: false
                    tcs_rate: "0.00"
                    original_amount:
                      value: 100000
                      currency: "INR"
                    computed_amount:
                      value: 100000
                      currency: "INR"
                    financial_year: "2026-27"
        '400':
          description: Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                InvalidRequest:
                  summary: Invalid request
                  value:
                    error_code: "INVALID_TCS_COMPUTE_REQUEST"
                    message: "amount.value must be greater than 0"
                NotCrossBorder:
                  summary: Order is not cross-border
                  value:
                    error_code: "TCS_ORDER_NOT_CROSS_BORDER"
                    message: "Order is not a cross-border Import order"
                NonLRS:
                  summary: Non-LRS purpose code
                  value:
                    error_code: "TCS_NON_LRS_PURPOSE_CODE"
                    message: "TCS computation is only applicable for LRS orders"
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Order not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                OrderNotFound:
                  summary: Order not found
                  value:
                    error_code: "TCS_ORDER_NOT_FOUND"
                    message: "Order not found or does not belong to merchant"
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/orders/{orderId}/invoice:
    post:
      operationId: CaptureInvoice
      summary: Capture Invoice
      x-seo-title: "Capture Invoice | Pine Labs Payments API Reference"
      x-seo-description: "Record invoice metadata (number, date, supplier) for a cross-border order. Returns an invoice ID for file upload."
      x-keywords: "capture invoice API, Cross Border Import invoice, cross-border invoice, invoice creation, international order"
      description: |
        Captures invoice metadata for a cross-border order.

        After a successful payment, the merchant must submit the invoice information
        for the transaction to proceed with cross-border settlement. This is applicable
        for both B2B and B2C cross-border orders.

        **Note:** This API creates the invoice metadata (number, date, supplier).
        The actual file upload is done separately via the Upload Invoice File API.
      tags:
        - International Payments
      security:
        - BearerAuth: []
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
          description: The order ID for which the invoice is being uploaded. Must be a valid Cross Border Import order belonging to the merchant.
          example: "v1-260520225359-aa-LHy288"
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvoiceCaptureRequest'
            examples:
              BasicInvoice:
                summary: Basic invoice capture
                value:
                  invoice_number: "v1-260520225359-aa-LHy288-IN"
                  invoice_date: "2026-05-20"
              WithSupplierName:
                summary: Invoice with supplier name
                value:
                  invoice_number: "v1-260520225359-aa-LHy288-IN"
                  invoice_date: "2026-05-20"
                  supplier_name: "Acme Electronics Pvt Ltd"
      responses:
        '202':
          description: Invoice created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceCaptureResponse'
              examples:
                InvoiceCaptured:
                  summary: Invoice captured
                  value:
                    invoice_id: "inv-260520225359-ab-XyZ123"
                    order_id: "v1-260520225359-aa-LHy288"
                    invoice_number: "v1-260520225359-aa-LHy288-IN"
                    invoice_date: "2026-05-20"
                    supplier_name: null
                    status: "INVOICE_CAPTURED"
        '400':
          description: Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                MissingMerchantId:
                  summary: Missing Merchant-ID header
                  value:
                    error_code: "MERCHANT_ID_HEADER_NOT_FOUND"
                    message: "Merchant-ID header is required"
                MissingFields:
                  summary: Required fields missing
                  value:
                    error_code: "DOC_REQUIRED_FIELDS_MISSING"
                    message: "invoice_number and invoice_date are required"
                InvalidDateFormat:
                  summary: Invalid date format
                  value:
                    error_code: "DOC_INVALID_DATE_FORMAT"
                    message: "invoice_date must be in YYYY-MM-DD format"
                ValidationFailed:
                  summary: Invoice validation failed
                  value:
                    error_code: "DOC_INVOICE_VALIDATION_FAILED"
                    message: "invoice_number exceeds 100 characters"
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: Order not eligible for invoice capture.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                OrderNotFound:
                  summary: Order not found
                  value:
                    error_code: "ORDER_NOT_FOUND"
                    message: "Order not found"
                OperationNotAllowed:
                  summary: Order not in processed state
                  value:
                    error_code: "OPERATION_NOT_ALLOWED"
                    message: "Order must be in processed state for invoice capture"
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      operationId: GetInvoiceStatus
      summary: Get Invoice Status
      x-seo-title: "Get Invoice Status | Pine Labs Payments API Reference"
      x-seo-description: "Check the current status of a cross-border invoice—captured, uploaded, or rejected—by invoice or order ID."
      x-keywords: "get invoice status API, invoice tracking, Cross Border Import invoice status, cross-border invoice"
      description: |
        Retrieves the current invoice details and status for a given order.
        Use this API to check the invoice status after creating an invoice (metadata capture)
        and/or uploading the invoice file.

        **Status progression:**
        - `INVOICE_CAPTURED` → after Create Invoice (Step 1)
        - `INVOICE_UPLOADED` → after Upload File (Step 2)
        - `INVOICE_REJECTED` → if rejected by bank/payment partner

        This API is specific to cross-border orders where invoice documentation is required for compliance.
      tags:
        - International Payments
      security:
        - BearerAuth: []
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
          description: Order ID returned from Create Order API.
          example: "v1-260520225359-aa-LHy288"
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Invoice status retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceStatusResponse'
              examples:
                FileUploaded:
                  summary: File uploaded
                  value:
                    invoiceId: "inv-260520225359-ab-XyZ123"
                    orderId: "v1-260520225359-aa-LHy288"
                    invoiceNumber: "v1-260520225359-aa-LHy288-IN"
                    invoiceDate: "2026-05-20"
                    supplierName: null
                    status: "INVOICE_UPLOADED"
                    createdAt: "2026-05-20T22:53:59.000Z"
                    updatedAt: "2026-05-20T23:01:15.000Z"
                FileUploadPending:
                  summary: File upload pending
                  value:
                    invoiceId: "inv-260520225359-ab-XyZ123"
                    orderId: "v1-260520225359-aa-LHy288"
                    invoiceNumber: "v1-260520225359-aa-LHy288-IN"
                    invoiceDate: "2026-05-20"
                    supplierName: null
                    status: "INVOICE_CAPTURED"
                    createdAt: "2026-05-20T22:53:59.000Z"
                    updatedAt: "2026-05-20T22:53:59.000Z"
                InvoiceRejected:
                  summary: Invoice rejected
                  value:
                    invoiceId: "inv-260520225359-ab-XyZ123"
                    orderId: "v1-260520225359-aa-LHy288"
                    invoiceNumber: "v1-260520225359-aa-LHy288-IN"
                    invoiceDate: "2026-05-20"
                    supplierName: "Supplier Corp"
                    status: "INVOICE_REJECTED"
                    createdAt: "2026-05-20T22:53:59.000Z"
                    updatedAt: "2026-05-21T10:15:30.000Z"
        '400':
          description: Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                MissingMerchantId:
                  summary: Missing Merchant-ID header
                  value:
                    error_code: "MERCHANT_ID_HEADER_NOT_FOUND"
                    message: "Merchant-ID header is required"
                MissingOrderId:
                  summary: Missing orderId
                  value:
                    error_code: "DOC_ORDER_ID_MISSING"
                    message: "orderId is required in path"
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Invoice or order not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                InvoiceNotFound:
                  summary: Invoice not found
                  value:
                    error_code: "INVOICE_NOT_FOUND"
                    message: "Invoice not found for the order"
                OrderNotFound:
                  summary: Order not found
                  value:
                    error_code: "ORDER_NOT_FOUND"
                    message: "Order not found"
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/orders/{orderId}/invoice/{invoiceId}/upload:
    put:
      operationId: UploadInvoiceFile
      summary: Upload Invoice File
      x-seo-title: "Upload Invoice File | Pine Labs Payments API Reference"
      x-seo-description: "Upload a PDF, JPEG, or PNG invoice document (max 5 MB) for a cross-border order to complete compliance."
      x-keywords: "upload invoice API, invoice file upload, Cross Border Import document, cross-border compliance, invoice upload"
      description: |
        Uploads the actual invoice file (PDF/image) for a previously created invoice record.

        **Prerequisites:**
        - Invoice must be created first via the Capture Invoice API (Step 1).
        - Use the `invoiceId` from Step 1 response.

        **Constraints:**
        - Maximum file size: 5 MB
        - Allowed file types: PDF (.pdf), JPEG (.jpeg, .jpg), PNG (.png)
        - File upload is one-time. Re-uploading returns 409 Conflict.
      tags:
        - International Payments
      security:
        - BearerAuth: []
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
          description: Order ID.
          example: "v1-260520225359-aa-LHy288"
        - name: invoiceId
          in: path
          required: true
          schema:
            type: string
          description: Invoice ID returned from the Capture Invoice API.
          example: "inv-260520225359-ab-XyZ123"
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          'multipart/form-data':
            schema:
              type: object
              required:
                - file
              properties:
                file:
                  type: string
                  format: binary
                  description: The invoice file to upload. Max 5 MB. Allowed types - PDF, JPEG, PNG.
      responses:
        '200':
          description: Invoice file uploaded successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceFileUploadResponse'
              examples:
                FileUploaded:
                  summary: File uploaded successfully
                  value:
                    invoiceId: "inv-260520225359-ab-XyZ123"
                    orderId: "v1-260520225359-aa-LHy288"
                    invoiceNumber: "v1-260520225359-aa-LHy288-IN"
                    invoiceDate: "2026-05-20"
                    supplierName: null
                    status: "INVOICE_UPLOADED"
        '400':
          description: Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                FileMissing:
                  summary: File not found in request
                  value:
                    error_code: "DOC_FILE_MISSING"
                    message: "File not found in multipart body"
                InvalidFileType:
                  summary: Invalid file type
                  value:
                    error_code: "DOC_INVALID_FILE_TYPE"
                    message: "File type not allowed. Allowed: PDF, JPEG, PNG"
                FileTooLarge:
                  summary: File exceeds size limit
                  value:
                    error_code: "DOC_FILE_TOO_LARGE"
                    message: "File exceeds maximum size of 5 MB"
                MultipartRequired:
                  summary: Content-Type not multipart
                  value:
                    error_code: "DOC_MULTIPART_CONTENT_TYPE_REQUIRED"
                    message: "Content-Type must be multipart/form-data"
        '401':
          $ref: '#/components/responses/Unauthorized'
        '409':
          description: Invoice file already uploaded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                AlreadyUploaded:
                  summary: File already uploaded
                  value:
                    error_code: "DOC_INVOICE_ALREADY_UPLOADED"
                    message: "Invoice file has already been uploaded"
        '422':
          description: Invoice not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                InvoiceNotFound:
                  summary: Invoice not found
                  value:
                    error_code: "INVOICE_NOT_FOUND"
                    message: "Invoice not found"
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/orders/{orderId}/awb:
    post:
      operationId: createAwb
      summary: Create AWB (Bulk)
      x-seo-title: "Create AWB (Bulk) | Pine Labs Payments API Reference"
      x-seo-description: "Submit up to 5 Air Waybill records per request for cross-border orders. Captures AWB number, date, and tracking URL."
      x-keywords: "create AWB API, air waybill, Cross Border Import AWB, cross-border shipping, bulk AWB, AWB tracking"
      description: |
        Creates one or more AWB records for a cross-border order.
        Captures AWB number, date, courier name, and tracking URL.
        Returns an `awb_id` for each record which is used in the subsequent file upload step.

        **Prerequisites:**
        - Order must exist and be in `PROCESSED` state.
        - Merchant must be Cross Border Import enabled.
        - Maximum 5 AWB records per request.
        - AWB numbers must be unique (no duplicates within the request or existing records for any order).
      tags:
        - International Payments
      security:
        - BearerAuth: []
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
          description: Order ID returned from Create Order API.
          example: "v1-260520225359-aa-LHy288"
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CreateAwbRequest'
              minItems: 1
              maxItems: 5
            example:
              - awb_number: "AWB-2026-001"
                awb_date: "2026-05-22"
                tracking_url: "https://www.dhl.com/track?id=AWB-2026-001"
              - awb_number: "AWB-2026-002"
                awb_date: "2026-05-22"
                tracking_url: "https://www.fedex.com/track?id=AWB-2026-002"
      responses:
        '202':
          description: AWB records created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AwbBulkCreateResponse'
              example:
                order_id: "v1-260520225359-aa-LHy288"
                total_created: 2
                awb_records:
                  - awb_id: "awb-260522-001"
                    order_id: "v1-260520225359-aa-LHy288"
                    invoice_id: "inv-260520225359-ab-XyZ123"
                    awb_number: "AWB-2026-001"
                    awb_date: "2026-05-22"
                    status: "AWB_CAPTURED"
                    tracking_url: "https://www.dhl.com/track?id=AWB-2026-001"
                    created_at: "2026-05-22T10:30:00.000Z"
                    updated_at: "2026-05-22T10:30:00.000Z"
                  - awb_id: "awb-260522-002"
                    order_id: "v1-260520225359-aa-LHy288"
                    invoice_id: "inv-260520225359-ab-XyZ123"
                    awb_number: "AWB-2026-002"
                    awb_date: "2026-05-22"
                    status: "AWB_CAPTURED"
                    tracking_url: "https://www.fedex.com/track?id=AWB-2026-002"
                    created_at: "2026-05-22T10:30:00.000Z"
                    updated_at: "2026-05-22T10:30:00.000Z"
        '400':
          description: |
            Bad Request — Validation error in the request.
            Possible error codes:
            - `DOC_INVALID_REQUEST_BODY` — Malformed JSON or cannot parse request body
            - `DOC_ORDER_ID_MISSING` — orderId path parameter is missing
            - `DOC_EMPTY_AWB_REQUEST` — Empty array provided
            - `DOC_AWB_MAX_LIMIT_EXCEEDED` — More than 5 AWB records in a single request
            - `DOC_AWB_VALIDATION_FAILED` — Field validation failed (missing awb_number, invalid date, etc.)
            - `DOC_DUPLICATE_AWB_IN_REQUEST` — Duplicate AWB numbers found within the request
            - `DOC_DUPLICATE_AWB_NUMBER` — AWB number already exists for this order/merchant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                empty_array:
                  summary: Empty AWB array
                  value:
                    code: "DOC_EMPTY_AWB_REQUEST"
                    message: "AWB records cannot be empty"
                max_limit:
                  summary: Exceeds max 5 per request
                  value:
                    code: "DOC_AWB_MAX_LIMIT_EXCEEDED"
                    message: "Maximum 5 AWB records allowed per request"
                validation_failed:
                  summary: Field validation failed
                  value:
                    code: "DOC_AWB_VALIDATION_FAILED"
                    message: "Validation failed for AWB records"
                duplicate_in_request:
                  summary: Duplicate AWB numbers in request
                  value:
                    code: "DOC_DUPLICATE_AWB_IN_REQUEST"
                    message: "Duplicate AWB numbers in request"
                already_exists:
                  summary: AWB number already exists for order/merchant
                  value:
                    code: "DOC_DUPLICATE_AWB_NUMBER"
                    message: "AWB number already exists"
                invalid_request_body:
                  summary: Malformed request body
                  value:
                    code: "DOC_INVALID_REQUEST_BODY"
                    message: "Invalid request body"
        '422':
          description: |
            Unprocessable Entity — Order not eligible for AWB creation.
            Possible error codes:
            - `ORDER_NOT_FOUND` — The specified order does not exist
            - `ORDER_IS_NOT_IN_PROCESSED_STATE` — Order is not in PROCESSED state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                order_not_found:
                  summary: Order not found
                  value:
                    code: "ORDER_NOT_FOUND"
                    message: "Order does not exist"
                order_not_processed:
                  summary: Order not in processed state
                  value:
                    code: "ORDER_IS_NOT_IN_PROCESSED_STATE"
                    message: "The order is not in processed state"
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      operationId: getAllAwbs
      summary: Get All AWBs
      x-seo-title: "Get All AWBs | Pine Labs Payments API Reference"
      x-seo-description: "List all Air Waybill records and their current statuses for a specific cross-border payment order."
      x-keywords: "get AWBs API, AWB list, air waybill status, Cross Border Import AWB records, cross-border AWB"
      description: |
        Retrieves all AWB records and their statuses for a given order.
        Returns an empty list (`total: 0`) if no AWB records exist for the order.
      tags:
        - International Payments
      security:
        - BearerAuth: []
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
          description: Order ID returned from Create Order API.
          example: "v1-260520225359-aa-LHy288"
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: AWBs retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AwbListResponse'
              example:
                order_id: "v1-260520225359-aa-LHy288"
                invoice_id: "inv-260520225359-ab-XyZ123"
                invoice_number: "v1-260520225359-aa-LHy288-IN"
                total: 2
                awb_mappings:
                  - awb_id: "awb-260522-001"
                    awb_number: "AWB-2026-001"
                    awb_date: "2026-05-22"
                    status: "AWB_UPLOADED"
                    created_at: "2026-05-22T10:30:00.000Z"
                    updated_at: "2026-05-22T11:00:00.000Z"
                  - awb_id: "awb-260522-002"
                    awb_number: "AWB-2026-002"
                    awb_date: "2026-05-22"
                    status: "AWB_CAPTURED"
                    created_at: "2026-05-22T10:30:00.000Z"
                    updated_at: "2026-05-22T10:30:00.000Z"
        '400':
          description: Bad Request — Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                order_id_missing:
                  summary: Order ID missing
                  value:
                    code: "DOC_ORDER_ID_MISSING"
                    message: "Order ID is required"
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/orders/{orderId}/awb/{awbId}:
    get:
      operationId: getAwbById
      summary: Get AWB by ID
      x-seo-title: "Get AWB by ID | Pine Labs Payments API Reference"
      x-seo-description: "Retrieve details and status of a single Air Waybill record using the AWB identifier."
      x-keywords: "get AWB by ID API, AWB details, air waybill lookup, AWB status, Cross Border Import AWB"
      description: |
        Retrieves a single AWB record by its ID.
      tags:
        - International Payments
      security:
        - BearerAuth: []
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
          description: Order ID returned from Create Order API.
          example: "v1-260520225359-aa-LHy288"
        - name: awbId
          in: path
          required: true
          schema:
            type: string
          description: AWB ID returned from Create AWB API.
          example: "awb-260522-001"
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: AWB retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AwbStatusResponse'
              example:
                awb_id: "awb-260522-001"
                order_id: "v1-260520225359-aa-LHy288"
                invoice_id: "inv-260520225359-ab-XyZ123"
                awb_number: "AWB-2026-001"
                awb_date: "2026-05-22"
                status: "AWB_UPLOADED"
                created_at: "2026-05-22T10:30:00.000Z"
                updated_at: "2026-05-22T11:00:00.000Z"
        '400':
          description: Bad Request — Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                order_id_missing:
                  summary: Order ID missing
                  value:
                    code: "DOC_ORDER_ID_MISSING"
                    message: "Order ID is required"
                awb_id_missing:
                  summary: AWB ID missing
                  value:
                    code: "DOC_AWB_ID_MISSING"
                    message: "AWB ID is required"
        '404':
          description: Not Found — AWB not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                code: "AWB_NOT_FOUND"
                message: "AWB not found"
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/orders/{orderId}/awb/{awbId}/upload:
    put:
      operationId: uploadAwbFile
      summary: Upload AWB File
      x-seo-title: "Upload AWB File | Pine Labs Payments API Reference"
      x-seo-description: "Upload a PDF, JPEG, or PNG Air Waybill document (max 5 MB) to complete cross-border shipping compliance."
      x-keywords: "upload AWB API, AWB file upload, air waybill document, cross-border compliance, AWB upload"
      description: |
        Uploads the actual AWB file (PDF/image) for a previously created AWB record.

        **Prerequisites:**
        - AWB must exist (created via Create AWB API) with status `AWB_CAPTURED`.
        - File must be PDF, JPEG, or PNG format.
        - File size must not exceed 5 MB.
        - File can only be uploaded once. Re-upload is not allowed.
      tags:
        - International Payments
      security:
        - BearerAuth: []
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
          description: Order ID returned from Create Order API.
          example: "v1-260520225359-aa-LHy288"
        - name: awbId
          in: path
          required: true
          schema:
            type: string
          description: AWB ID returned from Create AWB API.
          example: "awb-260522-001"
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - file
              properties:
                file:
                  type: string
                  format: binary
                  description: |
                    AWB file to upload.
                    - Max size: 5 MB (5,242,880 bytes)
                    - Allowed types: application/pdf, image/jpeg, image/jpg, image/png
      responses:
        '200':
          description: AWB file uploaded successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AwbFileUploadResponse'
              example:
                awb_id: "awb-260522-001"
                order_id: "v1-260520225359-aa-LHy288"
                status: "AWB_UPLOADED"
        '400':
          description: |
            Bad Request — Validation error in the request.
            Possible error codes:
            - `DOC_MULTIPART_CONTENT_TYPE_REQUIRED` — Content-Type must be multipart/form-data
            - `DOC_FILE_MISSING` — No file found in the multipart body
            - `DOC_INVALID_FILE_TYPE` — File type not allowed (must be PDF/JPEG/PNG)
            - `DOC_FILE_TOO_LARGE` — File exceeds 5 MB limit
            - `DOC_ORDER_ID_MISSING` — orderId path parameter is missing
            - `DOC_AWB_ID_MISSING` — awbId path parameter is missing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                multipart_required:
                  summary: Content-Type not multipart/form-data
                  value:
                    code: "DOC_MULTIPART_CONTENT_TYPE_REQUIRED"
                    message: "Content-Type must be multipart/form-data"
                file_missing:
                  summary: File not found in request
                  value:
                    code: "DOC_FILE_MISSING"
                    message: "File is required in multipart body"
                invalid_file_type:
                  summary: Invalid file type
                  value:
                    code: "DOC_INVALID_FILE_TYPE"
                    message: "Only PDF, JPEG, and PNG files are allowed"
                file_too_large:
                  summary: File exceeds size limit
                  value:
                    code: "DOC_FILE_TOO_LARGE"
                    message: "File size must not exceed 5 MB"
                awb_id_missing:
                  summary: AWB ID missing
                  value:
                    code: "DOC_AWB_ID_MISSING"
                    message: "AWB ID is required"
        '404':
          description: Not Found — AWB not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                code: "AWB_NOT_FOUND"
                message: "AWB not found"
        '409':
          description: Conflict — AWB file already uploaded. File upload is a one-time operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                code: "DOC_AWB_ALREADY_UPLOADED"
                message: "AWB file has already been uploaded"
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/payment-option/eligibility/bnpl:
    post:
      operationId: CheckBNPLEligibility
      summary: Check BNPL Eligibility
      x-seo-title: "Check BNPL Eligibility | Pine Labs Payments API Reference"
      x-seo-description: "Verify if a customer qualifies for Buy Now Pay Later based on their mobile number and selected BNPL provider."
      x-keywords: "BNPL eligibility API, buy now pay later, BNPL check, customer eligibility, BNPL provider"
      description: |
        Check whether a customer is eligible for Buy Now Pay Later (BNPL) payment
        based on their mobile number and the selected BNPL provider.
      tags:
        - BNPL
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BNPLCheckEligibilityRequest'
            examples:
              LAZYPAY:
                summary: LazyPay Eligibility Check
                value:
                  mobile: xxxxxx2032
                  pay_code: LAZYPAY
                  amount:
                    value: 3400
                    currency: INR
                  device_info:
                    source_ip_address: 10.11.19.2
                    device_model: Samsung S21 Ultra
                    device_manufacturer: Samsung
                    browser_user_agent: Chrome
      responses:
        '200':
          description: Eligibility check completed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BNPLCheckEligibilityResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: Unprocessable entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /payment-option:
    post:
      operationId: getPaymentOption
      summary: Verify VPA
      x-seo-title: "Verify VPA | Pine Labs Payments API Reference"
      x-seo-description: "Verify a customer's UPI VPA details or check reward points balance."
      x-keywords: "verify VPA API, UPI VPA, payment eligibility, fetch VPA, points balance, pay by points"
      description: |
        Verifies a customer's UPI VPA details or checks reward points balance.
        Supports fetching UPI VPA details based on the payer's phone number, as well as checking reward points balance
        and card eligibility.
      tags:
        - Payment Option
        - Pay by Points
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentOptionRequest'
            examples:
              fetchUpiVpa:
                summary: Fetch UPI VPA
                value:
                  payment_option:
                    upi_details:
                      payer:
                        fetch_vpa: true
                        phone_number: "9876543210"
                  payment_method: UPI
              checkPointBalance:
                $ref: '#/components/examples/CheckPointBalanceRequestExample'
      responses:
        '200':
          description: Payment option eligibility or points balance response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentOptionResponse'
              examples:
                upiVpaResponse:
                  summary: UPI VPA Response
                  value:
                    payment_method: UPI
                    payment_option_metadata:
                      upi_payment_option_data:
                        fetched_vpa: "customer@okaxis"
                pointBalanceResponse:
                  $ref: '#/components/examples/CheckPointBalanceResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: Unprocessable Entity — card not eligible or invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/otp/submit:
    post:
      operationId: SubmitOTP
      summary: Submit OTP
      x-seo-title: "Submit OTP | Pine Labs Payments API Reference"
      x-seo-description: "Submit the OTP entered by the customer to authenticate and complete the in-progress payment transaction."
      x-keywords: "submit OTP API, OTP verification, payment authentication, transaction verification, OTP submit"
      description: |
        Submit the OTP received on the customer's registered mobile number
        to validate and process the payment. This endpoint is shared between
        Card Payments (native OTP flow), BNPL, and Brand Wallet payment verification.
      tags:
        - Card Payments
        - BNPL
        - Brand Wallet Payments
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BNPLSubmitOTPRequest'
      responses:
        '200':
          description: OTP verified and payment processed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BNPLSubmitOTPResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          description: Unprocessable entity — incorrect OTP.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubmitOTPErrorResponse'
              example:
                code: INVALID_REQUEST
                message: The code entered was incorrect. Please try again.
                next:
                  - SUBMIT_OTP
                  - RESEND_OTP
                meta_data:
                  resend_after: '180'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          description: Service unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/pay/v1/otp/resend:
    post:
      operationId: ResendOTP
      summary: Resend OTP
      x-seo-title: "Resend OTP | Pine Labs Payments API Reference"
      x-seo-description: "Resend a fresh OTP to the customer's registered mobile number if the original was not received or expired."
      x-keywords: "resend OTP API, OTP retry, new OTP request, authentication retry, OTP expiry"
      description: |
        Resend the OTP to the customer's registered mobile number
        for payment verification. This endpoint is shared between
        Card Payments (native OTP flow), BNPL, and Brand Wallet payment verification.
      tags:
        - Card Payments
        - BNPL
        - Brand Wallet Payments
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BNPLResendOTPRequest'
      responses:
        '200':
          description: OTP resent successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BNPLResendOTPResponse'
              example:
                status: SUCCESS
                next:
                  - SUBMIT_OTP
                  - RESEND_OTP
                meta_data:
                  resend_after: '180'
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          description: Unprocessable entity — OTP resend limit reached.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResendOTPErrorResponse'
              example:
                code: INVALID_REQUEST
                message: OTP resend limit reached
                next:
                  - SUBMIT_OTP
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          description: Service unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/pay/v1/orders/{order_id}/payments/{payment_id}/authorize:
    post:
      operationId: DecoupledAuthZ
      summary: Decoupled Authorization
      x-seo-title: "Decoupled Authorization | Pine Labs Payments API Reference"
      x-seo-description: "Perform decoupled authorization of an already authenticated transaction"
      x-keywords: "Decoupled Authorization, decoupledAuthz, authorize, applePay, passkey"
      description: |
        Perform decoupled authorization for an already authenticated transaction.
      tags:
        - Card Payments
        - Passkey
        - Apple pay
      security:
        - BearerAuth: []
      parameters:
        - name: order_id
          in: path
          required: true
          description: Unique identifier of the order in the Pine Labs Online database.
          schema:
            type: string
            example: v1-4405071524-aa-qlAtAf
        - name: payment_id
          in: path
          required: true
          description: |
            Unique identifier of the payment in the Pine Labs Online database.
            Maximum length: 50 characters.
          schema:
            type: string
            maxLength: 50
            example: v1-5206071124-aa-mpLhF3-cc-l
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DecoupledAuthorizePaymentRequest'
      responses:
        '200':
          description: Payment authorized successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DecoupledAuthorizePaymentResponse'
              examples:
                successCards:
                  $ref: '#/components/examples/DecoupledAuthorizePaymentResponseCardsExample'
                successApplePay:
                  $ref: '#/components/examples/DecoupledAuthorizePaymentResponseApplePayExample'
                  
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                OperationNotAllowed:
                  summary: Order in processed state
                  value:
                    error_code: "OPERATION_NOT_ALLOWED"
                    message: "Authorization is not allowed"
                    additional_error_details: 
                      source: "INTERNAL"
                      step: "PAYMENT_AUTHORIZATION"
                      reason: "UNPROCESSABLE_ORDER"
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/v1/fees:
    post:
      operationId: CalculateConvenienceFee
      summary: Calculate Convenience Fee
      x-seo-title: "Calculate Convenience Fee | Pine Labs Payments API Reference"
      x-seo-description: "Compute the applicable convenience or surcharge fee for a given payment method and transaction amount."
      x-keywords: "convenience fee API, surcharge calculation, payment method fee, transaction fee, fee computation"
      description: |
        Calculate the convenience fee for a payment against an order based on
        the payment method and amount.
      tags:
        - Convenience Fee
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalculateConvenienceFeeRequest'
      responses:
        '200':
          description: Convenience fee calculated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalculateConvenienceFeeResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: Unprocessable entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/checkout/v1/orders:
    post:
      operationId: GenerateCheckoutLink
      summary: Generate Checkout Link
      x-seo-title: "Generate Checkout Link | Pine Labs Payments API Reference"
      x-seo-description: "Create a hosted checkout page URL to accept payments without building a custom payment frontend."
      x-keywords: "checkout link API, hosted payment page, no-code checkout, checkout URL, payment page"
      description: |
        Generate an Infinity Checkout link. Returns a redirect URL where
        the customer can complete payment on Pine Labs' hosted checkout page.
      tags:
        - Checkout
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateCheckoutLinkRequest'
      responses:
        '200':
          description: Checkout link generated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerateCheckoutLinkResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: Unprocessable entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/paymentlink:
    post:
      operationId: CreatePaymentLink
      summary: Create Payment Link
      x-seo-title: "Create Payment Link | Pine Labs Payments API Reference"
      x-seo-description: "Generate a shareable payment link to collect payments via SMS, email, WhatsApp, or any messaging channel."
      x-keywords: "create payment link API, shareable payment URL, collect payments, payment link, SMS payment"
      description: |
        Create a payment link for collecting payments. Ensure that your Merchant ID
        is configured for Pay by Link, split payments, and pre-authorization before
        creating a payment link.
      tags:
        - Payment Links
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePaymentLinkRequest'
      responses:
        '201':
          description: Payment link created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentLinkResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/paymentlink/{payment_link_id}:
    get:
      operationId: GetPaymentLinkById
      summary: Get Payment Link by Payment Link ID
      x-seo-title: "Get Payment Link by ID | Pine Labs Payments API Reference"
      x-seo-description: "Retrieve payment link details—status, amount, expiry, and payment history—using the payment link ID."
      x-keywords: "get payment link API, payment link status, link details, payment link tracking"
      description: |
        Retrieve payment link details using the Pine Labs payment link identifier.
      tags:
        - Payment Links
      security:
        - BearerAuth: []
      parameters:
        - name: payment_link_id
          in: path
          required: true
          description: Unique Pine Labs payment link identifier.
          schema:
            type: string
            example: pl-v1-250306082755-aa-uT0noy
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Payment link retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentLinkResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/paymentlink/ref/{merchant_payment_link_reference}:
    get:
      operationId: GetPaymentLinkByMerchantReference
      summary: Get Payment Link by Merchant Payment Link Reference
      x-seo-title: "Get Payment Link by Merchant Reference | Pine Labs Payments API Reference"
      x-seo-description: "Look up a payment link using your merchant reference for order mapping and back-office reconciliation."
      x-keywords: "payment link reference, merchant reference lookup, payment link reconciliation, link mapping"
      description: |
        Retrieve payment link details using the merchant-assigned payment link reference.
      tags:
        - Payment Links
      security:
        - BearerAuth: []
      parameters:
        - name: merchant_payment_link_reference
          in: path
          required: true
          description: Unique merchant-assigned payment link reference.
          schema:
            type: string
            example: '1234567890'
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Payment link retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentLinkResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/paymentlink/{payment_link_id}/cancel:
    put:
      operationId: CancelPaymentLink
      summary: Cancel Payment Link
      x-seo-title: "Cancel Payment Link | Pine Labs Payments API Reference"
      x-seo-description: "Deactivate an active payment link so it can no longer accept payments. This action is irreversible."
      x-keywords: "cancel payment link API, deactivate link, expire payment link, link cancellation"
      description: |
        Cancel an existing payment link by its ID.
      tags:
        - Payment Links
      security:
        - BearerAuth: []
      parameters:
        - name: payment_link_id
          in: path
          required: true
          description: Unique Pine Labs payment link identifier.
          schema:
            type: string
            example: pl-v1-250306082755-aa-uT0noy
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Payment link cancelled successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentLinkResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/pay/v1/paymentlink/{payment_link_id}/notify:
    patch:
      operationId: ResendPaymentLinkNotification
      summary: Resend Payment Link Notification
      x-seo-title: "Resend Payment Link Notification | Pine Labs Payments API Reference"
      x-seo-description: "Re-send the payment link notification to the customer via SMS or email as a reminder to complete payment."
      x-keywords: "resend payment link, payment reminder API, SMS notification, email reminder, link notification"
      description: |
        Resend the payment link notification to the customer.
      tags:
        - Payment Links
      security:
        - BearerAuth: []
      parameters:
        - name: payment_link_id
          in: path
          required: true
          description: Unique Pine Labs payment link identifier.
          schema:
            type: string
            example: pl-v1-250306082755-aa-uT0noy
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Payment link notification resent successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentLinkResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/v1/customer:
    post:
      operationId: createCustomer
      summary: Create Customer
      x-seo-title: "Create Customer | Pine Labs Payments API Reference"
      x-seo-description: "Register a customer profile with contact and identity details for tokenization, subscriptions, and saved payments."
      x-keywords: "create customer API, customer registration, customer profile, customer management, saved payments"
      description: |
        Create a new customer profile in the Pine Labs Online system. The customer profile
        can be used for tokenization and recurring payment operations.
      tags:
        - Customers
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomerRequest'
      responses:
        '201':
          description: Customer created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      operationId: getCustomerDetails
      summary: Get Customer Details
      x-seo-title: "Get Customer Details | Pine Labs Payments API Reference"
      x-seo-description: "Search for a customer profile by mobile number or email to retrieve their details and linked tokens."
      x-keywords: "get customer API, customer lookup, search customer, customer details, customer profile"
      description: |
        Retrieve customer details by querying with country code, mobile number, and merchant customer reference.
        All three query parameters are required.
      tags:
        - Customers
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
        - name: country_code
          in: query
          required: true
          description: Country code of the registered mobile number.
          schema:
            type: string
            default: '+91'
            example: '+91'
        - name: mobile_number
          in: query
          required: true
          description: Customer's registered mobile number.
          schema:
            type: string
            example: '9876543210'
        - name: merchant_customer_reference
          in: query
          required: true
          description: Unique customer reference assigned by the merchant.
          schema:
            type: string
            example: '23454334'
      responses:
        '200':
          description: Customer details retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/v1/customer/{customer_id}:
    patch:
      operationId: updateCustomer
      summary: Update Customer
      x-seo-title: "Update Customer | Pine Labs Payments API Reference"
      x-seo-description: "Update a customer's profile information such as name, email, or mobile number in the system."
      x-keywords: "update customer API, edit customer, modify customer profile, customer update"
      description: |
        Update an existing customer profile. All fields in the request body are optional;
        only the provided fields will be updated.
      tags:
        - Customers
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
        - name: customer_id
          in: path
          required: true
          description: Unique identifier of the customer in the Pine Labs Online database.
          schema:
            type: string
            example: cust-v1-0811030624-aa-RBDgpR
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCustomerRequest'
      responses:
        '200':
          description: Customer updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      operationId: getCustomerById
      summary: Get Customer by ID
      x-seo-title: "Get Customer by ID | Pine Labs Payments API Reference"
      x-seo-description: "Retrieve a customer's full profile—contact details, tokens, and metadata—using their unique customer ID."
      x-keywords: "customer by ID API, get customer, customer profile lookup, customer ID, customer details"
      description: |
        Retrieve a customer profile by the unique customer ID.
      tags:
        - Customers
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
        - name: customer_id
          in: path
          required: true
          description: Unique identifier of the customer in the Pine Labs Online database.
          schema:
            type: string
            example: cust-v1-0811030624-aa-RBDgpR
      responses:
        '200':
          description: Customer details retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/v1/tokens:
    post:
      operationId: generateCardToken
      summary: Generate Card Token
      x-seo-title: "Generate Card Token | Pine Labs Payments API Reference"
      x-seo-description: "Tokenize a customer's card for secure, compliant storage enabling one-click future payments per RBI guidelines."
      x-keywords: "card tokenization API, generate card token, RBI tokenization, saved cards, secure card storage"
      description: |
        Generate a network token for a card linked to a customer. This tokenizes the card
        details and returns a token that can be used for subsequent transactions.
      tags:
        - Tokenization
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateCardTokenRequest'
            examples:
              generateCardToken:
                summary: Generate Card Token
                value:
                  customer_id: cust-786cdrexrt
                  merchant_token_reference: ec71b52e-c21f-4ac5-8624-385d6b6bdccc
                  payment_method: CARD
                  payment_option:
                    encrypted_card_details: akdsdsdsh12k12h1k21h2khakshakhakshkh121h2k1hak
                  payment:
                    acquirer_data:
                      approval_code: '000000'
                      acquirer_reference: 5r6t7gyh8uj98
                      rrn: '9530167943'
                      auth_reference: ''
                  merchant_metadata:
                    key1: XYZ
                    key2: DOFJ
      responses:
        '201':
          description: Card token generated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardTokenResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          description: Service temporarily unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/v1/tokens/{identifier}:
    get:
      operationId: getServiceProviderToken
      summary: Get Service Provider Token
      x-seo-title: "Get Service Provider Token | Pine Labs Payments API Reference"
      x-seo-description: "Retrieve the network service provider token and metadata for a previously tokenized card."
      x-keywords: "service provider token API, network token, card token details, tokenization status"
      description: |
        Retrieve service provider token information. The `identifier` path parameter
        can be either:
        - A **customer_id** — returns a list of all service provider tokens for that customer.
        - A **token_id** — returns a single service provider token by its unique ID.

        The response structure varies based on whether a customer_id or token_id is provided.
      tags:
        - Tokenization
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
        - name: identifier
          in: path
          required: true
          description: |
            Customer ID or Token ID. When a customer_id is provided, returns all service
            provider tokens for that customer. When a token_id is provided, returns the
            specific token details.
          schema:
            type: string
            example: token-v1-1234567890-aa-ABCDEF
      responses:
        '200':
          description: Service provider token(s) retrieved successfully.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ServiceProviderTokensListResponse'
                  - $ref: '#/components/schemas/ServiceProviderTokenResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          description: Service temporarily unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/v1/tokens/{token_id}/token-transactional-data:
    post:
      operationId: generateCryptogram
      summary: Generate Cryptogram
      x-seo-title: "Generate Cryptogram | Pine Labs Payments API Reference"
      x-seo-description: "Generate a transaction-specific cryptogram from a stored token to process a tokenized card payment securely."
      x-keywords: "generate cryptogram API, card cryptogram, tokenized card payment, network cryptogram, token payment"
      description: |
        Generate a cryptogram for a tokenized card transaction. The cryptogram is used
        for secure network-level token transactions.
      tags:
        - Tokenization
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
        - name: token_id
          in: path
          required: true
          description: Unique token ID for which to generate the cryptogram.
          schema:
            type: string
            example: token-v1-1234567890-aa-ABCDEF
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateCryptogramRequest'
      responses:
        '201':
          description: Cryptogram generated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CryptogramResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          description: Service temporarily unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/v1/tokens/{token_id}/delete:
    post:
      operationId: deleteTokenByTokenId
      summary: Delete Token by Token ID
      x-seo-title: "Delete Token by Token ID | Pine Labs Payments API Reference"
      x-seo-description: "Permanently delete a stored card token when the customer or merchant no longer needs the saved card."
      x-keywords: "delete token API, remove card token, de-tokenize card, delete saved card, token removal"
      description: |
        Delete a service provider token by its token ID. This permanently deactivates
        the token.
      tags:
        - Tokenization
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
        - name: token_id
          in: path
          required: true
          description: Unique token ID to delete.
          schema:
            type: string
            example: token-v1-1234567890-aa-ABCDEF
      responses:
        '200':
          description: Token deleted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteTokenByTokenIdResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          description: Service temporarily unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/v1/customer/{customer_id}/tokens:
    get:
      operationId: getCustomerTokensByCustomerId
      summary: Get Customer Tokens by Customer ID
      x-seo-title: "Get Customer Tokens | Pine Labs Payments API Reference"
      x-seo-description: "List all saved card tokens for a customer to display saved payment methods at checkout."
      x-keywords: "customer tokens API, saved cards, list card tokens, saved payment methods, token list"
      description: |
        Retrieve all tokens linked to a customer by the customer's unique ID.
      tags:
        - Tokenization
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
        - name: customer_id
          in: path
          required: true
          description: Unique identifier of the customer in the Pine Labs Online database.
          schema:
            type: string
            example: cust-v1-0811030624-aa-RBDgpR
      responses:
        '200':
          description: Customer tokens retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerTokensResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/v1/customer/{customer_id}/tokens/{token_id}:
    get:
      operationId: getCustomerTokenByTokenId
      summary: Get Customer Token by Token ID
      x-seo-title: "Get Customer Token by Token ID | Pine Labs Payments API Reference"
      x-seo-description: "Fetch details of a specific saved card token including masked card number, network, and expiry."
      x-keywords: "get token API, card token details, saved card info, token lookup, token status"
      description: |
        Retrieve a specific token linked to a customer by both the customer ID and token ID.
      tags:
        - Tokenization
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
        - name: customer_id
          in: path
          required: true
          description: Unique identifier of the customer in the Pine Labs Online database.
          schema:
            type: string
            example: cust-v1-0811030624-aa-RBDgpR
        - name: token_id
          in: path
          required: true
          description: Unique token ID to retrieve.
          schema:
            type: string
            example: token-v1-1234567890-aa-ABCDEF
      responses:
        '200':
          description: Customer token details retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerTokenDetail'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/v1/customer/{customer_id}/tokens/{token_id}/delete:
    post:
      operationId: deleteCustomerToken
      summary: Delete Customer Token
      x-seo-title: "Delete Customer Token | Pine Labs Payments API Reference"
      x-seo-description: "Remove a customer's saved card token so it no longer appears as a payment option at checkout."
      x-keywords: "delete customer token API, remove saved card, card token deletion, token removal"
      description: |
        Delete a specific token linked to a customer by both the customer ID and token ID.
        Requires a unique merchant reference for the delete operation.
      tags:
        - Tokenization
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
        - name: customer_id
          in: path
          required: true
          description: Unique identifier of the customer in the Pine Labs Online database.
          schema:
            type: string
            example: cust-v1-0811030624-aa-RBDgpR
        - name: token_id
          in: path
          required: true
          description: Unique token ID to delete.
          schema:
            type: string
            example: token-v1-1234567890-aa-ABCDEF
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteCustomerTokenRequest'
      responses:
        '200':
          description: Customer token deleted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteCustomerTokenResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /payouts/v3/payments/banks:
    post:
      operationId: CreatePayout
      summary: Create Payout
      x-seo-title: "Create Payout | Pine Labs Payments API Reference"
      x-seo-description: "Transfer funds to any bank account via IMPS, NEFT, or RTGS. Supports instant and scheduled payouts."
      x-keywords: "create payout API, bank transfer, fund transfer, IMPS payout, NEFT, RTGS, instant payout"
      description: |
        Creates a single payout to a beneficiary's bank account or UPI VPA.
        Supports IMPS, NEFT, RTGS, and UPI payment modes.

        For IMPS/NEFT/RTGS, provide accountNumber and branchCode.
        For UPI, provide vpa instead.
      tags:
        - Payouts
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePayoutRequest'
            examples:
              imps:
                $ref: '#/components/examples/CreatePayoutRequestExample'
      responses:
        '201':
          description: Payout created and scheduled successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatePayoutResponse'
              examples:
                success:
                  $ref: '#/components/examples/CreatePayoutResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /payouts/v3/payments:
    get:
      operationId: ListPayouts
      summary: Get Payouts
      x-seo-title: "Get Payouts | Pine Labs Payments API Reference"
      x-seo-description: "List and filter your payout transactions by status, date range, and mode for tracking and reconciliation."
      x-keywords: "get payouts API, payout list, payout history, payout tracking, payout status"
      description: |
        Retrieves payout details. Use paymentReferenceId or clientReferenceId
        to fetch a specific payout, or requestReferenceId to fetch all payouts
        associated with a single request. Supports filtering by mode, status,
        and date range.
      tags:
        - Payouts
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
        - name: paymentReferenceId
          in: query
          required: false
          schema:
            type: string
            minLength: 1
            maxLength: 50
          description: Unique identifier of the payment in Pine Labs database.
          example: txn-b03ee63e412a4ecf88b6bdb08a6632c3
        - name: clientReferenceId
          in: query
          required: false
          schema:
            type: string
            minLength: 1
            maxLength: 40
          description: Unique client reference provided when creating the payout.
          example: 0171c4c0-f50a-4151-b39b-63c87a3c0cd6
        - name: requestReferenceId
          in: query
          required: false
          schema:
            type: string
            minLength: 1
            maxLength: 50
          description: Unique identifier of the request in Pine Labs database.
          example: '664816162868'
        - name: bankTransactionReferenceId
          in: query
          required: false
          schema:
            type: string
          description: Unique Transaction Reference (UTR) from the bank.
          example: '664816162868'
        - name: mode
          in: query
          required: false
          schema:
            type: string
            enum:
              - UPI
              - IMPS
              - NEFT
              - RTGS
          description: Filter by payment mode.
          example: IMPS
        - name: dateFrom
          in: query
          required: false
          schema:
            type: string
            format: date-time
          description: Fetch payouts initiated after this date (ISO 8601 UTC).
          example: '2025-07-15T10:26:06Z'
        - name: dateTo
          in: query
          required: false
          schema:
            type: string
            format: date-time
          description: Fetch payouts initiated before this date (ISO 8601 UTC).
          example: '2025-08-16T10:26:06Z'
        - name: status
          in: query
          required: false
          schema:
            type: string
            enum:
              - SCHEDULED
              - PENDING
              - PROCESSING
              - PROCESSED
              - SUCCESS
              - FAILED
          description: Filter by payout status.
          example: SUCCESS
        - name: page
          in: query
          required: false
          schema:
            type: string
            default: '1'
          description: Page number (default 1).
          example: '1'
        - name: count
          in: query
          required: false
          schema:
            type: string
            default: '10'
          description: Number of records per page.
          example: '10'
      responses:
        '200':
          description: Payout records retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPayoutsResponse'
              examples:
                success:
                  $ref: '#/components/examples/GetPayoutsResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /payouts/v3/payments/funding-account:
    get:
      operationId: GetPayoutBalance
      summary: Get Account Balance
      x-seo-title: "Get Account Balance | Pine Labs Payments API Reference"
      x-seo-description: "Check your current payout account balance to confirm available funds before initiating transfers."
      x-keywords: "account balance API, payout balance, available funds, balance check, payout wallet"
      description: |
        Retrieves the funding account balance linked to your Pine Labs Online
        account. This API is only available when you have a funding account
        linked to your Pine Labs Online account.
      tags:
        - Payouts
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Account balance retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAccountBalanceResponse'
              examples:
                success:
                  $ref: '#/components/examples/GetAccountBalanceResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /payouts/v3/payments/banks/file:
    post:
      operationId: CreateBulkPayout
      summary: Create Bulk Payouts
      x-seo-title: "Create Bulk Payouts | Pine Labs Payments API Reference"
      x-seo-description: "Process multiple payouts in a single API call for batch salary disbursements, vendor payments, or refunds."
      x-keywords: "bulk payout API, batch transfer, mass payout, bulk disbursement, batch payments"
      description: |
        Creates multiple payouts in bulk by uploading a file containing
        beneficiary account details. The file is processed asynchronously.
        Use the Get Payouts API with the returned requestReferenceId to
        track individual payout statuses.
      tags:
        - Payouts
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
                - file
              properties:
                file:
                  type: string
                  format: binary
                  description: File containing beneficiary account details for bulk payout processing.
      responses:
        '201':
          description: Bulk payout file accepted and processing initiated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateBulkPayoutResponse'
              examples:
                success:
                  $ref: '#/components/examples/CreateBulkPayoutResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /payouts/v3/payments/banks/{paymentReferenceId}:
    put:
      operationId: UpdateScheduledPayout
      summary: Update Scheduled Payout
      x-seo-title: "Update Scheduled Payout | Pine Labs Payments API Reference"
      x-seo-description: "Modify a scheduled payout's amount, beneficiary, or execution date before it is processed."
      x-keywords: "update payout API, modify scheduled payout, edit payout, payout update, scheduled transfer"
      description: |
        Updates the scheduled date of a payout. Only payouts with status
        SCHEDULED can be updated. Provide the new schedule date in
        ISO 8601 UTC format.
      tags:
        - Payouts
      security:
        - BearerAuth: []
      parameters:
        - name: paymentReferenceId
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 50
          description: Unique identifier of the payment in Pine Labs database.
          example: txn-f9e00a80a357418d908a67bd30cdbc37
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateScheduledPayoutRequest'
            examples:
              reschedule:
                summary: Reschedule payout
                value:
                  scheduleAt: '2025-07-05T16:05:00Z'
      responses:
        '200':
          description: Payout schedule updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutDetail'
              examples:
                success:
                  $ref: '#/components/examples/UpdateScheduledPayoutResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /payouts/v3/payments/banks/{paymentReferenceId}/cancel:
    put:
      operationId: CancelScheduledPayout
      summary: Cancel Scheduled Payout
      x-seo-title: "Cancel Scheduled Payout | Pine Labs Payments API Reference"
      x-seo-description: "Cancel a payout scheduled for future execution. The funds remain available in your payout account."
      x-keywords: "cancel payout API, cancel scheduled transfer, abort payout, payout cancellation"
      description: |
        Cancels a scheduled payout. Only payouts with status SCHEDULED
        can be cancelled. Once cancelled, the payout cannot be reinstated.
      tags:
        - Payouts
      security:
        - BearerAuth: []
      parameters:
        - name: paymentReferenceId
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 50
          description: Unique identifier of the payment in Pine Labs database.
          example: txn-f9e00a80a357418d908a67bd30cdbc37
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Payout cancelled successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutDetail'
              examples:
                success:
                  $ref: '#/components/examples/CancelScheduledPayoutResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /ps/api/v1/public/plans:
    post:
      operationId: CreatePlan
      summary: Create Plan
      x-seo-title: "Create Plan | Pine Labs Payments API Reference"
      x-seo-description: "Define a subscription plan with billing frequency, amount, and duration to enable recurring payments."
      x-keywords: "create plan API, subscription plan, recurring billing, payment plan, billing frequency"
      description: |
        Creates a new subscription plan that serves as a reusable template
        defining the pricing structure, billing frequency, and payment terms.
        Plans must be created before subscriptions can be set up.
      tags:
        - Subscriptions - Plans
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePlanRequest'
            examples:
              monthly:
                $ref: '#/components/examples/CreatePlanRequestExample'
      responses:
        '201':
          description: Plan created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanResponse'
              examples:
                success:
                  $ref: '#/components/examples/CreatePlanResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          description: Unprocessable Entity — validation failed or duplicate request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                duplicateRequest:
                  summary: Duplicate Request
                  value:
                    code: DUPLICATE_REQUEST
                    message: The request has already been processed
                    additional_error_details:
                      source: INTERNAL
                      step: request_validation
                      reason: duplicate_merchant_plan_reference
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      operationId: ListPlans
      summary: Get Plans
      x-seo-title: "Get Plans | Pine Labs Payments API Reference"
      x-seo-description: "List all subscription plans with optional filters for status and type. Supports pagination for large catalogs."
      x-keywords: "list plans API, subscription plans, plan catalog, recurring plans, plan listing"
      description: |
        Retrieves all subscription plans. Supports filtering by plan_id,
        date range, amount, frequency, and pagination.
      tags:
        - Subscriptions - Plans
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
        - name: plan_id
          in: query
          required: false
          schema:
            type: string
          description: Filter by plan ID.
          example: v1-plan-4405071524-aa-qlAtAf
        - name: start_date
          in: query
          required: false
          schema:
            type: string
            format: date-time
          description: Filter plans with start date after this value (ISO 8601 UTC).
          example: '2022-02-01T17:32:28Z'
        - name: end_date
          in: query
          required: false
          schema:
            type: string
            format: date-time
          description: Filter plans with end date before this value (ISO 8601 UTC).
          example: '2026-10-21T12:02:28Z'
        - name: amount
          in: query
          required: false
          schema:
            type: integer
          description: Filter by amount value.
          example: 100
        - name: amount_range
          in: query
          required: false
          schema:
            type: string
            enum:
              - isMore
              - isLess
              - is Equal
          description: Amount comparison operator.
          example: isMore
        - name: frequency
          in: query
          required: false
          schema:
            type: string
          description: Filter by billing frequency.
          example: Month
        - name: size
          in: query
          required: false
          schema:
            type: integer
          description: Number of items per page.
          example: 10
        - name: page
          in: query
          required: false
          schema:
            type: integer
          description: Page number.
          example: 0
        - name: sort
          in: query
          required: false
          schema:
            type: string
          description: Sort field and direction.
          example: id,asc
      responses:
        '200':
          description: Plans retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListPlansResponse'
              examples:
                success:
                  $ref: '#/components/examples/ListPlansResponseExample'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /ps/api/v1/public/plans/{plan_id}:
    get:
      operationId: GetPlanById
      summary: Get Plan by Plan ID
      x-seo-title: "Get Plan by ID | Pine Labs Payments API Reference"
      x-seo-description: "Retrieve full details of a subscription plan including billing rules, amount, and active subscription count."
      x-keywords: "get plan API, plan details, subscription plan lookup, plan info, plan status"
      description: |
        Retrieves a specific subscription plan by its plan ID.
      tags:
        - Subscriptions - Plans
      security:
        - BearerAuth: []
      parameters:
        - name: plan_id
          in: path
          required: true
          schema:
            type: string
          description: Unique identifier for the subscription plan.
          example: v1-plan-4405071524-aa-qlAtAf
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Plan retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanResponse'
              examples:
                success:
                  $ref: '#/components/examples/GetPlanByIdResponseExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    patch:
      operationId: UpdatePlan
      summary: Update Plan
      x-seo-title: "Update Plan | Pine Labs Payments API Reference"
      x-seo-description: "Update a subscription plan's name, description, or metadata. Active subscriptions follow the updated plan."
      x-keywords: "update plan API, modify subscription plan, edit plan, plan update, plan management"
      description: |
        Updates an existing subscription plan. Existing subscriptions under
        this plan will remain unaffected. The changes will apply only to
        new subscriptions created under this plan.
      tags:
        - Subscriptions - Plans
      security:
        - BearerAuth: []
      parameters:
        - name: plan_id
          in: path
          required: true
          schema:
            type: string
          description: Unique identifier for the subscription plan.
          example: v1-plan-4405071524-aa-qlAtAf
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePlanRequest'
      responses:
        '200':
          description: Plan updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanResponse'
              examples:
                success:
                  $ref: '#/components/examples/GetPlanByIdResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
    delete:
      operationId: DeletePlan
      summary: Delete Plan
      x-seo-title: "Delete Plan | Pine Labs Payments API Reference"
      x-seo-description: "Delete a subscription plan that has no active subscriptions. Deleted plans cannot be recovered."
      x-keywords: "delete plan API, remove subscription plan, deactivate plan, plan deletion"
      description: |
        Deletes a subscription plan by its plan ID.
      tags:
        - Subscriptions - Plans
      security:
        - BearerAuth: []
      parameters:
        - name: plan_id
          in: path
          required: true
          schema:
            type: string
          description: Unique identifier for the subscription plan.
          example: v1-plan-4405071524-aa-qlAtAf
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Plan deleted successfully.
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /ps/api/v1/public/plans/reference/{merchant_plan_reference}:
    get:
      operationId: GetPlanByMerchantReference
      summary: Get Plan by Merchant Plan Reference
      x-seo-title: "Get Plan by Merchant Reference | Pine Labs Payments API Reference"
      x-seo-description: "Look up a subscription plan using your own merchant plan reference for system integration and mapping."
      x-keywords: "plan reference lookup, merchant plan reference, plan reconciliation, plan mapping"
      description: |
        Retrieves a specific subscription plan by the merchant plan reference.
      tags:
        - Subscriptions - Plans
      security:
        - BearerAuth: []
      parameters:
        - name: merchant_plan_reference
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 50
          description: Unique identifier of the merchant plan reference.
          example: '1234567890'
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Plan retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanResponse'
              examples:
                success:
                  $ref: '#/components/examples/GetPlanByIdResponseExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /ps/api/v1/public/subscriptions:
    post:
      operationId: CreateSubscription
      summary: Create Subscription
      x-seo-title: "Create Subscription | Pine Labs Payments API Reference"
      x-seo-description: "Enroll a customer in a recurring payment subscription with auto-debit mandate registration."
      x-keywords: "create subscription API, recurring payment, auto-debit, mandate registration, subscription creation"
      description: |
        Creates a new subscription against an existing plan. The subscription
        defines the recurring billing cycle for a customer based on the
        selected plan's pricing and frequency.
      tags:
        - Subscriptions - Subscriptions
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSubscriptionRequest'
      responses:
        '201':
          description: Subscription created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateSubscriptionResponse'
              examples:
                success:
                  $ref: '#/components/examples/CreateSubscriptionResponseExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: Unprocessable Entity — validation failed or duplicate request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                duplicateRequest:
                  summary: Duplicate Request
                  value:
                    code: DUPLICATE_REQUEST
                    message: The request has already been processed
                    additional_error_details:
                      source: INTERNAL
                      step: request_validation
                      reason: duplicate_merchant_subscription_reference
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      operationId: ListSubscriptions
      summary: Get Subscriptions
      x-seo-title: "Get Subscriptions | Pine Labs Payments API Reference"
      x-seo-description: "List subscriptions with filters for status, plan, and customer. Track active, paused, and cancelled mandates."
      x-keywords: "list subscriptions API, recurring payments, subscription list, mandate list, active subscriptions"
      description: |
        Retrieves all subscriptions. Supports filtering by plan_id, status,
        amount, date range, frequency, and pagination.
      tags:
        - Subscriptions - Subscriptions
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
        - name: plan_id
          in: query
          required: false
          schema:
            type: string
          description: Filter by plan ID.
          example: v1-plan-4405071524-aa-qlAtAf
        - name: status
          in: query
          required: false
          schema:
            type: string
          description: Filter by subscription status.
          example: ACTIVE
        - name: amount
          in: query
          required: false
          schema:
            type: integer
          description: Filter by amount value.
          example: 100
        - name: amount_range
          in: query
          required: false
          schema:
            type: string
            enum:
              - isMore
              - isLess
              - isEqual
          description: Amount comparison operator.
          example: isMore
        - name: start_date
          in: query
          required: false
          schema:
            type: string
            format: date-time
          description: Filter subscriptions with start date after this value.
          example: '2022-02-01T17:32:28Z'
        - name: end_date
          in: query
          required: false
          schema:
            type: string
            format: date-time
          description: Filter subscriptions with end date before this value.
          example: '2025-12-31T23:59:59Z'
        - name: size
          in: query
          required: false
          schema:
            type: integer
          description: Number of items per page.
          example: 10
        - name: page
          in: query
          required: false
          schema:
            type: integer
          description: Page number.
          example: 0
        - name: sort
          in: query
          required: false
          schema:
            type: string
          description: Sort field and direction.
          example: id,asc
        - name: frequency
          in: query
          required: false
          schema:
            type: string
          description: Filter by billing frequency.
          example: Month
      responses:
        '200':
          description: Subscriptions retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListSubscriptionsResponse'
              examples:
                success:
                  $ref: '#/components/examples/ListSubscriptionsResponseExample'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /ps/api/v1/public/subscriptions/{subscription_id}:
    get:
      operationId: GetSubscriptionById
      summary: Get Subscription by Subscription ID
      x-seo-title: "Get Subscription by ID | Pine Labs Payments API Reference"
      x-seo-description: "Retrieve a subscription's full details—status, plan, next billing date, and payment history."
      x-keywords: "get subscription API, subscription details, subscription status, mandate details"
      description: |
        Retrieves a specific subscription by its subscription ID.
      tags:
        - Subscriptions - Subscriptions
      security:
        - BearerAuth: []
      parameters:
        - name: subscription_id
          in: path
          required: true
          schema:
            type: string
            maxLength: 50
          description: Unique identifier for the subscription.
          example: v1-sub-4405071524-aa-qlAtAf
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Subscription retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionDetail'
        '500':
          $ref: '#/components/responses/InternalServerError'
    patch:
      operationId: UpdateSubscription
      summary: Update Subscription
      x-seo-title: "Update Subscription | Pine Labs Payments API Reference"
      x-seo-description: "Modify an active subscription's amount or billing parameters within the mandate-approved limits."
      x-keywords: "update subscription API, modify recurring payment, change subscription, mandate update"
      description: |
        Updates an existing subscription. You can switch to a new plan
        or update the end date. A reason is required.
      tags:
        - Subscriptions - Subscriptions
      security:
        - BearerAuth: []
      parameters:
        - name: subscription_id
          in: path
          required: true
          schema:
            type: string
            maxLength: 50
          description: Unique identifier for the subscription.
          example: v1-sub-4405071524-aa-qlAtAf
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSubscriptionRequest'
      responses:
        '200':
          description: Subscription updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionDetail'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /ps/api/v1/public/subscriptions/reference/{merchant_subscription_reference}:
    get:
      operationId: GetSubscriptionByMerchantReference
      summary: Get Subscription by Merchant Subscription Reference
      x-seo-title: "Get Subscription by Merchant Reference | Pine Labs Payments API Reference"
      x-seo-description: "Look up a subscription using your merchant reference for back-office reconciliation and CRM integration."
      x-keywords: "subscription reference lookup, merchant reference, subscription reconciliation, CRM integration"
      description: |
        Retrieves a specific subscription by the merchant subscription reference.
      tags:
        - Subscriptions - Subscriptions
      security:
        - BearerAuth: []
      parameters:
        - name: merchant_subscription_reference
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 50
          description: Unique identifier of the merchant subscription reference.
          example: '1234567890'
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Subscription retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionDetail'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /ps/api/v1/public/subscriptions/{subscription_id}/cancel:
    post:
      operationId: CancelSubscription
      summary: Cancel Subscription
      x-seo-title: "Cancel Subscription | Pine Labs Payments API Reference"
      x-seo-description: "Permanently cancel a subscription to stop all future recurring debits. The underlying mandate is revoked."
      x-keywords: "cancel subscription API, stop recurring payment, revoke mandate, subscription cancellation"
      description: |
        Cancels an active subscription. Once cancelled, the subscription
        can no longer process recurring payments.
      tags:
        - Subscriptions - Subscriptions
      security:
        - BearerAuth: []
      parameters:
        - name: subscription_id
          in: path
          required: true
          schema:
            type: string
            maxLength: 50
          description: Unique identifier for the subscription.
          example: v1-sub-4405071524-aa-qlAtAf
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Subscription cancelled successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionDetail'
        '400':
          $ref: '#/components/responses/BadRequest'
  /ps/api/v1/public/subscriptions/{subscription_id}/pause:
    post:
      operationId: PauseSubscription
      summary: Pause Subscription
      x-seo-title: "Pause Subscription | Pine Labs Payments API Reference"
      x-seo-description: "Temporarily pause a subscription to skip billing cycles. Resume anytime to restart recurring charges."
      x-keywords: "pause subscription API, suspend recurring payment, skip billing, subscription pause"
      description: |
        Pauses an active subscription. The subscription must be in an
        active, inactive, trial, or resumed state to be paused.
      tags:
        - Subscriptions - Subscriptions
      security:
        - BearerAuth: []
      parameters:
        - name: subscription_id
          in: path
          required: true
          schema:
            type: string
            maxLength: 50
          description: Unique identifier for the subscription.
          example: v1-sub-4405071524-aa-qlAtAf
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Subscription paused successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionDetail'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /ps/api/v1/public/subscriptions/{subscription_id}/resume:
    post:
      operationId: ResumeSubscription
      summary: Resume Subscription
      x-seo-title: "Resume Subscription | Pine Labs Payments API Reference"
      x-seo-description: "Reactivate a paused subscription to resume scheduled recurring billing from the next cycle."
      x-keywords: "resume subscription API, reactivate recurring payment, unpause subscription, restart billing"
      description: |
        Resumes a paused or halted subscription.
      tags:
        - Subscriptions - Subscriptions
      security:
        - BearerAuth: []
      parameters:
        - name: subscription_id
          in: path
          required: true
          schema:
            type: string
            maxLength: 50
          description: Unique identifier for the subscription.
          example: v1-sub-4405071524-aa-qlAtAf
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Subscription resumed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionDetail'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /ps/api/v1/public/subscriptions/{subscription_id}/presentations:
    post:
      operationId: CreatePresentation
      summary: Create Presentation
      x-seo-title: "Create Presentation | Pine Labs Payments API Reference"
      x-seo-description: "Submit a debit request against an active subscription mandate for the current or upcoming billing cycle."
      x-keywords: "create presentation API, mandate debit, subscription billing, debit request, recurring debit"
      description: |
        Creates a new presentation (mandate debit request) against an
        active subscription. Presentations represent scheduled debit
        requests raised against a customer mandate.
      tags:
        - Subscriptions - Presentations
      security:
        - BearerAuth: []
      parameters:
        - name: subscription_id
          in: path
          required: true
          schema:
            type: string
            maxLength: 50
          description: Unique identifier for the subscription.
          example: v1-sub-250612062122-aa-3HLXL5
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePresentationRequest'
      responses:
        '201':
          description: Presentation created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatePresentationResponse'
              examples:
                success:
                  $ref: '#/components/examples/CreatePresentationResponseExample'
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      operationId: ListPresentationsBySubscription
      summary: Get Presentations by Subscription ID
      x-seo-title: "Get Presentations by Subscription | Pine Labs Payments API Reference"
      x-seo-description: "List all debit presentations for a subscription with execution status, amounts, and timestamps."
      x-keywords: "presentations list API, subscription debits, mandate history, billing history, debit list"
      description: |
        Retrieves all presentations associated with a specific subscription.
        Supports pagination.
      tags:
        - Subscriptions - Presentations
      security:
        - BearerAuth: []
      parameters:
        - name: subscription_id
          in: path
          required: true
          schema:
            type: string
            maxLength: 50
          description: Unique identifier for the subscription.
          example: v1-sub-250916121532-aa-lKR1S1
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
        - name: size
          in: query
          required: false
          schema:
            type: string
          description: Number of items per page.
          example: '10'
        - name: page
          in: query
          required: false
          schema:
            type: string
          description: Page number.
          example: '1'
        - name: sort
          in: query
          required: false
          schema:
            type: string
          description: Sort field and direction.
          example: cycleId,desc
      responses:
        '200':
          description: Presentations retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListPresentationsResponse'
              examples:
                success:
                  $ref: '#/components/examples/ListPresentationsResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
  /ps/api/v1/public/presentations/{presentation_id}:
    get:
      operationId: GetPresentationById
      summary: Get Presentation
      x-seo-title: "Get Presentation | Pine Labs Payments API Reference"
      x-seo-description: "Retrieve a presentation's execution status, debit amount, and failure reason (if applicable) by ID."
      x-keywords: "get presentation API, debit status, presentation details, mandate debit status"
      description: |
        Retrieves a specific presentation by its presentation ID.
      tags:
        - Subscriptions - Presentations
      security:
        - BearerAuth: []
      parameters:
        - name: presentation_id
          in: path
          required: true
          schema:
            type: string
            maxLength: 50
          description: Unique identifier for the presentation.
          example: v1-bil-250911093822-aa-i37gSm
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Presentation retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PresentationDetail'
              examples:
                success:
                  $ref: '#/components/examples/GetPresentationResponseExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      operationId: DeletePresentation
      summary: Delete Presentation
      x-seo-title: "Delete Presentation | Pine Labs Payments API Reference"
      x-seo-description: "Cancel a pending debit presentation before it is executed to prevent the upcoming charge."
      x-keywords: "delete presentation API, cancel debit request, remove presentation, cancel billing"
      description: |
        Deletes a presentation by its presentation ID.
      tags:
        - Subscriptions - Presentations
      security:
        - BearerAuth: []
      parameters:
        - name: presentation_id
          in: path
          required: true
          schema:
            type: string
            maxLength: 50
          description: Unique identifier for the presentation.
          example: v1-bil-250911093822-aa-i37gSm
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Presentation deleted successfully.
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /ps/api/v1/public/presentations/reference/{merchant_presentation_reference}:
    get:
      operationId: GetPresentationByMerchantReference
      summary: Get Presentation by Merchant Presentation Reference
      x-seo-title: "Get Presentation by Merchant Reference | Pine Labs Payments API Reference"
      x-seo-description: "Look up a debit presentation using your merchant reference for reconciliation with your billing system."
      x-keywords: "presentation reference, debit lookup API, merchant reference, billing reconciliation"
      description: |
        Retrieves a specific presentation by the merchant presentation reference.
      tags:
        - Subscriptions - Presentations
      security:
        - BearerAuth: []
      parameters:
        - name: merchant_presentation_reference
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 50
          description: Unique identifier of the merchant presentation reference.
          example: z1B3pu003
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Presentation retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PresentationDetail'
              examples:
                success:
                  $ref: '#/components/examples/GetPresentationResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
  /ps/api/v1/public/subscriptions/notify:
    post:
      operationId: SendSubscriptionNotification
      summary: Subscription Notification
      x-seo-title: "Subscription Notification | Pine Labs Payments API Reference"
      x-seo-description: "Send a pre-debit notification (PDN) to the customer before executing a mandate debit, as required by NPCI."
      x-keywords: "subscription notification API, pre-debit notification, PDN, NPCI mandate, recurring alert"
      description: |
        Sends a pre-debit notification for a subscription. This is used
        when the merchant controls the PDN (Pre-Debit Notification) process.
      tags:
        - Subscriptions - Presentations
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionNotificationRequest'
      responses:
        '200':
          description: Notification sent successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionNotificationResponse'
              examples:
                success:
                  $ref: '#/components/examples/SubscriptionNotificationResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
  /ps/api/v1/public/subscriptions/execute:
    post:
      operationId: CreateDebit
      summary: Create Debit
      x-seo-title: "Create Debit | Pine Labs Payments API Reference"
      x-seo-description: "Execute the actual mandate debit to collect payment for a previously notified subscription presentation."
      x-keywords: "create debit API, mandate execution, collect subscription payment, auto-debit, recurring collection"
      description: |
        Executes a debit (payment collection) against a subscription.
        Use this when the PDN (Pre-Debit Notification) is controlled by you.
      tags:
        - Subscriptions - Presentations
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDebitRequest'
      responses:
        '200':
          description: Debit created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateDebitResponse'
              examples:
                success:
                  $ref: '#/components/examples/CreateDebitResponseExample'
        '400':
          $ref: '#/components/responses/BadRequest'
  /ps/api/v1/mandate/merchant-retry:
    post:
      operationId: CreateMerchantRetry
      summary: Create Merchant Retry
      x-seo-title: "Create Merchant Retry | Pine Labs Payments API Reference"
      x-seo-description: "Retry a failed subscription debit when the original attempt was declined due to insufficient funds or other reasons."
      x-keywords: "merchant retry API, retry failed debit, subscription retry, payment retry, mandate retry"
      description: |
        Retries mandate execution for a subscription when it is in
        DEBIT FAILED stage. Up to 3 retry attempts are allowed.
        Retries can be made only if is_merchant_retry is set to true
        in the Create Debit API.
      tags:
        - Subscriptions - Presentations
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MerchantRetryRequest'
      responses:
        '200':
          description: Retry initiated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateDebitResponse'
        '400':
          $ref: '#/components/responses/BadRequest'



  /ps/public/subscriptions/sbmd:
    post:
      summary: Create subscription with SBMD enabled
      operationId: createSbmdSubscription
      tags:
        - UPI Reserve Pay
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSbmdSubscriptionRequestV3'
      description: Endpoint used by CMS to create subscription with SBMD enabled
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateSbmdSubscriptionResponseV3'
        '400':
          description: Bad Requet
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseV3'
              examples:
                Result:
                  value:
                    code: INVALID_REQUEST
                    message: Missing or invalid required parameters
              

        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseV3'


  /ps/public/subscriptions/sbmd/{reserve_pay_sub_id}:
    get:
      summary: Get subscription details for SBMD enabled subscription
      operationId: fetchSbmdSubscriptionById
      tags:
        - UPI Reserve Pay
      security:
        - BearerAuth: []
      parameters:
        - name: reserve_pay_sub_id
          in: path
          required: true
          schema:
            type: string
            maxLength: 50
          description: Unique identifier for the subscription.
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      description: Fetch Reserved Pay details for a customer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetSbmdSubscriptionResponseV3'
              examples:
                success:
                  $ref: '#/components/examples/GetSbmdSubscriptionResponseV3Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseV3'
              
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseV3'
                example:
                  code: "INTERNAL_SERVER_ERROR"
                  message: "internal server error"

  /ps/api/v1/public/subscriptions/{reserve_pay_sub_id}/presentations:
    post:
      operationId: CreateReservePayDebit
      summary: Create Debit Using reserve pay
      x-seo-title: "Create Presentation | Pine Labs Payments API Reference"
      x-seo-description: "Submit a debit request against an active subscription mandate for the current or upcoming billing cycle."
      x-keywords: "create presentation API, mandate debit, subscription billing, debit request, recurring debit"
      description: |
        Creates a new presentation (mandate debit request) against an
        active SBMD subscription. Presentations represent scheduled debit
        requests raised against a customer mandate.
      tags:
        - UPI Reserve Pay
      security:
        - BearerAuth: []
      parameters:
        - name: reserve_pay_sub_id
          in: path
          required: true
          schema:
            type: string
            maxLength: 50
          description: Unique identifier for the subscription.
          example: v1-sub-250612062122-aa-3HLXL5
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateReservePayDebitRequest'
      responses:
        '201':
          description: Presentation created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatePresentationResponse'
                example:
                  subscription_id: "v1-sub-250612062122-aa-3HLXL5"
                  presentation_id: "v1-bil-250612063111-aa-FJIBcB"
                  due_date: "2025-06-05T06:14:21.72036Z"
                  amount:
                    value: 100
                    currency: "INR"
                  status: "PENDING"
                  pdn_status : "NOT_APPLICABLE"
                  merchant_presentation_reference: "9caa061f-0e50-494b-aa13-8e902b0bef03"
  
        '500':
          $ref: '#/components/responses/InternalServerError'





  # ─── Brand Wallet ──────────────────────────────

  /payment-option/create/wallet:
    post:
      operationId: CreateBrandWallet
      summary: Create Brand Wallet
      x-seo-title: "Create Brand Wallet | Pine Labs Payments API Reference"
      x-seo-description: "Create brand wallets for one or more customers. First step in the Brand Wallet onboarding flow."
      x-keywords: "create brand wallet, wallet creation API, digital wallet, closed-loop wallet"
      description: |
        Creates brand wallets for one or more customers. The `customers` array must not be empty.
        After creation, activate the wallet before it can be used for transactions.
      tags:
        - Brand Wallet
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BrandWalletCreateRequest'
            example:
              currency_code: "INR"
              customers:
                - customer_id: "cust-bw-001"
                  first_name: "Rahul"
                  last_name: "Sharma"
                  country_code: "91"
                  mobile_number: "9876543210"
                  email_id: "rahul@example.com"
              notes: "Onboarding wallets"
      responses:
        '200':
          description: Wallets created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandWalletCreationResponse'
              example:
                currency_code: "INR"
                customers:
                  - customer_id: "cust-bw-001"
                    first_name: "Rahul"
                    last_name: "Sharma"
                    mobile_number: "9876543210"
                    country_code: "91"
                    email_id: "rahul@example.com"
                notes: "Onboarding wallets"
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: Unprocessable entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /payment-option/wallet/validate:
    post:
      operationId: ValidateBrandWallet
      summary: Validate Brand Wallet
      x-seo-title: "Validate Brand Wallet | Pine Labs Payments API Reference"
      x-seo-description: "Validate whether a customer's brand wallet can cover a payment of the given amount before creating an order."
      x-keywords: "validate wallet, wallet balance check, wallet eligibility, brand wallet validation"
      description: |
        Validates that a customer's wallet can fulfil a payment of the given amount.
        Call this before creating an order to confirm the wallet balance is sufficient.
        Returns the eligible amount and whether redemption is allowed.
      tags:
        - Brand Wallet
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BrandWalletValidateRequest'
            example:
              notes: "POS checkout"
              amount:
                value: 50000
                currency: "INR"
              customers:
                customer_id: "cust-bw-001"
      responses:
        '200':
          description: Wallet validation result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandWalletValidateResponse'
              example:
                eligible_amount:
                  value: 50000
                  currency: "INR"
                total_balance_amount:
                  value: 150000
                  currency: "INR"
                redemption_allowed: true
                notes: "Wallet eligible for transaction"
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: Unprocessable entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /payment-option/wallet/balance:
    post:
      operationId: GetBrandWalletBalance
      summary: Check Brand Wallet Balance
      x-seo-title: "Check Brand Wallet Balance | Pine Labs Payments API Reference"
      x-seo-description: "Retrieve the current balance and bucket breakdown of a customer's brand wallet."
      x-keywords: "wallet balance API, check balance, brand wallet balance, wallet inquiry"
      description: |
        Retrieves the current balance of a customer's brand wallet,
        including breakdown by bucket type (e.g. CASH, PROMOTIONAL).
      tags:
        - Brand Wallet
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BrandWalletBalanceRequest'
            example:
              notes: "Balance check"
              customers:
                customer_id: "cust-bw-001"
      responses:
        '200':
          description: Balance retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandWalletBalanceResponse'
              example:
                total_balance_amount:
                  value: 150000
                  currency: "INR"
                number_of_pin_attempts_allowed: 3
                created_at: "2026-01-15T10:30:00Z"
                native_currency: "INR"
                buckets:
                  - currency_code: "INR"
                    number_of_cards: 2
                    balance: 150000
                    type: "CASH"
                    payment_instruments: []
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /payment-option/wallet/customer/{customer_id}/activate:
    post:
      operationId: ActivateBrandWallet
      summary: Activate Brand Wallet
      x-seo-title: "Activate Brand Wallet | Pine Labs Payments API Reference"
      x-seo-description: "Activate a previously created or deactivated brand wallet so it can be used for transactions."
      x-keywords: "activate wallet, enable wallet, brand wallet activation"
      description: |
        Activates a previously created or deactivated brand wallet for the specified customer.
        The wallet must be activated before it can be used for payments.
      tags:
        - Brand Wallet
      security:
        - BearerAuth: []
      parameters:
        - name: customer_id
          in: path
          required: true
          description: Unique customer identifier (e.g. cust-v1-...).
          schema:
            type: string
            example: cust-bw-001
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Wallet activated successfully.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /payment-option/wallet/customer/{customer_id}/deactivate:
    post:
      operationId: DeactivateBrandWallet
      summary: Deactivate Brand Wallet
      x-seo-title: "Deactivate Brand Wallet | Pine Labs Payments API Reference"
      x-seo-description: "Deactivate a customer's brand wallet to prevent further transactions."
      x-keywords: "deactivate wallet, disable wallet, brand wallet deactivation"
      description: |
        Deactivates a customer's brand wallet, preventing further transactions until reactivated.
      tags:
        - Brand Wallet
      security:
        - BearerAuth: []
      parameters:
        - name: customer_id
          in: path
          required: true
          description: Unique customer identifier (e.g. cust-v1-...).
          schema:
            type: string
            example: cust-bw-001
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Wallet deactivated successfully.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /payment-option/wallet/customer/{customer_id}/reset:
    post:
      operationId: ResetBrandWalletPin
      summary: Reset Brand Wallet PIN
      x-seo-title: "Reset Brand Wallet PIN | Pine Labs Payments API Reference"
      x-seo-description: "Reset the PIN for a customer's brand wallet when it is locked or forgotten."
      x-keywords: "reset wallet PIN, wallet PIN reset, brand wallet PIN"
      description: |
        Resets the PIN for a customer's brand wallet. Use this when the customer's
        wallet PIN is locked or forgotten. Returns the new PIN and remaining attempts.
      tags:
        - Brand Wallet
      security:
        - BearerAuth: []
      parameters:
        - name: customer_id
          in: path
          required: true
          description: Unique customer identifier (e.g. cust-v1-...).
          schema:
            type: string
            example: cust-bw-001
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: PIN reset successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandWalletResetPinResponse'
              example:
                pin: "847291"
                pin_attempts_remaining: 3
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /payment-option/wallet/load:
    post:
      operationId: LoadBrandWallet
      summary: Load Money into Brand Wallet
      x-seo-title: "Load Brand Wallet | Pine Labs Payments API Reference"
      x-seo-description: "Load a specified amount into a customer's brand wallet directly."
      x-keywords: "load wallet, add funds, wallet top-up, brand wallet load"
      description: |
        Loads a specified amount into a customer's brand wallet.
        The loaded amount is added to the specified bucket (e.g. CASH, PROMOTIONAL).
      tags:
        - Brand Wallet
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BrandWalletLoadRequest'
            example:
              amount:
                value: 100000
                currency: "INR"
              customer:
                customer_id: "cust-bw-001"
              bucket: "CASH"
              notes: "Manual load"
      responses:
        '200':
          description: Money loaded successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandWalletLoadResponse'
              example:
                total_balance_amount:
                  value: 250000
                  currency: "INR"
                notes: "Manual load"
                created_at: "2026-06-02T12:00:00Z"
                native_currency: "INR"
                buckets:
                  - currency_code: "INR"
                    number_of_cards: 1
                    balance: 250000
                    type: "CASH"
                    payment_instruments: []
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /payment-option/wallet/customer/{customer_id}/history:
    get:
      operationId: GetBrandWalletHistory
      summary: Get Brand Wallet Transaction History
      x-seo-title: "Brand Wallet Transaction History | Pine Labs Payments API Reference"
      x-seo-description: "Retrieve wallet transaction history for a customer with optional filters by date range, page, and transaction type."
      x-keywords: "wallet history, transaction history, wallet transactions, brand wallet history"
      description: |
        Retrieves wallet transaction history for a customer with optional filters
        by date range, page, and transaction type.
      tags:
        - Brand Wallet
      security:
        - BearerAuth: []
      parameters:
        - name: customer_id
          in: path
          required: true
          description: Unique customer identifier (e.g. cust-v1-...).
          schema:
            type: string
            example: cust-bw-001
        - name: start_date
          in: query
          required: true
          description: Start date for the history range.
          schema:
            type: string
            example: "2026-01-01"
        - name: end_date
          in: query
          required: true
          description: End date for the history range.
          schema:
            type: string
            example: "2026-01-31"
        - name: page
          in: query
          required: false
          description: Page number for pagination (defaults to 1).
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: transaction_type
          in: query
          required: false
          description: Filter by transaction type(s). Can be repeated for multiple types.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Transaction history retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandWalletHistoryResponse'
              example:
                data:
                  transactions:
                    - transaction_date_time: "2026-06-01T14:30:00Z"
                      outlet_name: "Store A"
                      transaction_type: "CREDIT"
                      transaction_amount: 500.00
                      currency_code: "INR"
                      account_balance: 1500.00
                      merchant_name: "Brand Store"
                      reason: "Wallet load"
                      transaction_id: 123456
                      response_message: "Success"
                      transaction_status: "COMPLETED"
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /api/pay/v1/add_money:
    post:
      operationId: AddMoneyToBrandWallet
      summary: Add Money to Brand Wallet
      x-seo-title: "Add Money to Brand Wallet | Pine Labs Payments API Reference"
      x-seo-description: "Add money to a customer's brand wallet via gift card or cash (UPI payment)."
      x-keywords: "add money wallet, wallet top-up, gift card load, UPI wallet load, brand wallet"
      description: |
        Adds money to a customer's brand wallet. Supports two modes:
        - **GIFT_CARD** — Provide gift card number and PIN in `payment_option.gift_card_details`. Funds credited immediately.
        - **CASH** — Provide `amount` and UPI payment details in `payment_option.upi_details`. Creates a parent ADD_MONEY order and child CHARGE order for UPI payment.
      tags:
        - Brand Wallet Payments
      security:
        - BearerAuth: []
      parameters:
        - $ref: '#/components/parameters/RequestTimestamp'
        - $ref: '#/components/parameters/RequestID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BrandWalletAddMoneyRequest'
            examples:
              gift_card:
                summary: Add money via Gift Card
                value:
                  merchant_order_reference: "ADD-GC-001"
                  mode: "GIFT_CARD"
                  payment_option:
                    gift_card_details:
                      gift_card_number: "GC1234567890"
                      pin: "123456"
                  customer:
                    customer_id: "cust-bw-001"
              cash:
                summary: Add money via Cash (UPI)
                value:
                  merchant_order_reference: "ADD-CASH-001"
                  mode: "CASH"
                  amount:
                    value: 50000
                    currency: "INR"
                  payment_option:
                    upi_details:
                      txn_mode: "COLLECT"
                      payer:
                        vpa: "customer@upi"
                  customer:
                    customer_id: "cust-bw-001"
      responses:
        '201':
          description: Money added successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: Unprocessable entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'

components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: |
        Obtain a Bearer token by calling POST /api/auth/v1/token with your
        client_id, client_secret, and grant_type=client_credentials.
        Include the token in all subsequent requests as:
        Authorization: Bearer <token>
  schemas:
    # ---- upi rserve pay


    MerchantMetadataV3:
      type: object
      additionalProperties:
        type: string
      description: A key-value pair of merchant-specific metadata.
      example:
        key1: "DD"
        key2: "XOF"

    PlanDetailsV3:
      type: object
      required:
        - reserve_amount
        - currency
        - validity_days
        - description
      properties:
        reserve_amount:
          type: integer
          description: Amount to be reserved
        currency:
          type: string
          description: Currency code for the subscription
          enum:
            - INR
            - USD
        validity_days:
          type: integer
          minimum: 1
          maximum: 365
          description: Validity of the subscription in days
        description:
          type: string
          description: Description of the SBMD Plan

    ErrorResponseV3:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
  
    GetSbmdSubscriptionResponseV3:
      type: object
      description: Response body after creating a new SBMD subscription
      properties:
        subscription_id:
          type: string
          description: Unique identifier for the created subscription
          example: "sub_xyz789"
        order_id:
          type: string
          description: order_id for the created order
        customer_id:
          type: string
          description: customer_id passed
        status:
          type: string
          description: Current status of the subscription after creation
          example: "ACTIVE"
        start_date:
          type: string
          format: date-time
          description: Subscription start timestamp
        end_date:
          type: string
          format: date-time
          description: Subscription end timestamp
        currency:
          type: string
        total_blocked_amount:
          type: integer
          format: int64
          description: Total amount blocked for the subscription (in smallest currency unit, e.g., paise)
          example: 1000000
        debited_amount:
          type: integer
          format: int64
          description: Amount already debited from the subscription (in smallest currency unit, e.g., paise)
          example: 200000
        remaining_balance:
          type: integer
          format: int64
          description: Amount still available in the subscription (in smallest currency unit, e.g., paise)
          example: 800000

    CreateSbmdSubscriptionResponseV3:
      type: object
      description: Response body after creating a new SBMD subscription
      properties:
        subscription_id:
          type: string
          description: Unique identifier for the created subscription
          example: "sub_xyz789"
        order_id:
          type: string
          description: order_id for the created order
        customer_id:
          type: string
          description: customer_id passed
        status:
          type: string
          description: Current status of the subscription after creation
          example: "ACTIVE"
        start_date:
          type: string
          format: date-time
          description: Subscription start timestamp
        end_date:
          type: string
          format: date-time
          description: Subscription end timestamp
        plan_details:
          $ref: '#/components/schemas/PlanDetailsV3'
        expires_at:
          type: string
          format: date-time
        redirect_url:
          type: string
          description: RedirectURL

    CreateSbmdSubscriptionRequestV3:
      type: object
      description: Request body for creating a new SBMD
      required:
        - merchant_subscription_reference
        - customer_id
        - plan_details
      properties:
        merchant_subscription_reference:
          type: string
          minLength: 1
          description: Unique reference ID for the subscription provided by the merchant
          example: "sub_ref_12345"
        customer_id:
          type: string
          description: Unique identifier for the customer associated with the subscription
          example:  "cust_abc123"
        plan_details:
            $ref: '#/components/schemas/PlanDetailsV3'
        callback_url:
          type: string
          description: URL
        expire_after:
          type: integer
          description: duration after which subscription expires
          minimum: 1
        terms_accepted:
          type: boolean
          default: true
          description: pending
        merchant_metadata:
          $ref: '#/components/schemas/MerchantMetadataV3'



    # ─── Brand Wallet Schemas ──────────────────

    BrandWalletCreateRequest:
      type: object
      required: [customers]
      properties:
        currency_code:
          type: string
          description: ISO 4217 currency code for the wallet
          example: "INR"
        customers:
          type: array
          minItems: 1
          description: List of customers for whom wallets should be created
          items:
            $ref: '#/components/schemas/CustomerDetails'
        notes:
          type: string
          description: Free-text notes attached to the wallet creation request

    BrandWalletCreationResponse:
      type: object
      description: Response after creating brand wallets. Only customers with active wallets are returned.
      properties:
        currency_code:
          type: string
          description: ISO 4217 currency code for the created wallets
          example: "INR"
        customers:
          type: array
          description: List of customers whose wallets were successfully activated
          items:
            $ref: '#/components/schemas/CustomerDetails'
        notes:
          type: string
          description: Notes from the creation request

    BrandWalletValidateRequest:
      type: object
      required: [amount, customers]
      properties:
        notes:
          type: string
        amount:
          $ref: '#/components/schemas/Amount'
        customers:
          $ref: '#/components/schemas/CustomerDetails'
          description: Customer whose wallet to validate (customer_id required)

    BrandWalletValidateResponse:
      type: object
      properties:
        eligible_amount:
          $ref: '#/components/schemas/Amount'
          description: Maximum amount eligible for this transaction
        total_balance_amount:
          $ref: '#/components/schemas/Amount'
          description: Total wallet balance
        redemption_allowed:
          type: boolean
          description: Whether the wallet can be used for this transaction
        notes:
          type: string
          description: Additional validation notes

    BrandWalletBalanceRequest:
      type: object
      required: [customers]
      properties:
        notes:
          type: string
        customers:
          $ref: '#/components/schemas/CustomerDetails'
          description: Customer whose wallet balance to check (customer_id required)

    BrandWalletBalanceResponse:
      type: object
      properties:
        total_balance_amount:
          $ref: '#/components/schemas/Amount'
          description: Total wallet balance
        number_of_pin_attempts_allowed:
          type: integer
          description: Remaining PIN attempts before lockout
        created_at:
          type: string
          format: date-time
          description: Wallet creation timestamp
        native_currency:
          type: string
          description: Primary currency of the wallet
          example: "INR"
        buckets:
          type: array
          description: Balance breakdown by bucket type
          items:
            $ref: '#/components/schemas/BrandWalletBalanceBucket'

    BrandWalletLoadRequest:
      type: object
      required: [amount, customer, notes]
      properties:
        amount:
          $ref: '#/components/schemas/Amount'
        customer:
          $ref: '#/components/schemas/CustomerDetails'
          description: Customer whose wallet to load (customer_id required)
        bucket:
          type: string
          description: Load bucket type (e.g. CASH, PROMOTIONAL)
          example: "CASH"
        notes:
          type: string

    BrandWalletLoadResponse:
      type: object
      properties:
        total_balance_amount:
          $ref: '#/components/schemas/Amount'
          description: Updated total wallet balance after load
        notes:
          type: string
        created_at:
          type: string
          format: date-time
        native_currency:
          type: string
          example: "INR"
        buckets:
          type: array
          items:
            $ref: '#/components/schemas/BrandWalletBalanceBucket'

    BrandWalletResetPinResponse:
      type: object
      properties:
        pin:
          type: string
          description: The new wallet PIN
        pin_attempts_remaining:
          type: integer
          description: Number of PIN entry attempts remaining

    BrandWalletHistoryResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            transactions:
              type: array
              items:
                $ref: '#/components/schemas/BrandWalletTransactionHistory'

    BrandWalletTransactionHistory:
      type: object
      properties:
        transaction_date_time:
          type: string
          description: When the transaction occurred
        outlet_name:
          type: string
        transaction_type:
          type: string
          description: "e.g. CREDIT, DEBIT"
        transaction_amount:
          type: number
          format: double
          description: Transaction amount (in currency units, not paisa)
        currency_code:
          type: string
        account_balance:
          type: number
          format: double
          description: Balance after this transaction
        merchant_name:
          type: string
        reason:
          type: string
        transaction_id:
          type: integer
          format: int64
        response_message:
          type: string
        transaction_status:
          type: string
          description: "e.g. COMPLETED, FAILED"

    BrandWalletBalanceBucket:
      type: object
      description: Balance breakdown for a specific bucket/category
      properties:
        currency_code:
          type: string
          example: "INR"
        number_of_cards:
          type: integer
          description: Number of instruments in this bucket
        balance:
          type: integer
          format: int64
          description: Bucket balance in lowest currency denomination (paisa)
        type:
          type: string
          description: Bucket type (e.g. CASH, PROMOTIONAL)
        payment_instruments:
          type: array
          items:
            $ref: '#/components/schemas/BrandWalletPaymentInstrument'

    BrandWalletPaymentInstrument:
      type: object
      description: Individual payment instrument within a wallet bucket
      properties:
        instrument_number:
          type: string
        currency_code:
          type: string
        expiry_date:
          type: string
        terms_and_conditions:
          type: string

    BrandWalletAddMoneyRequest:
      type: object
      required: [merchant_order_reference, mode, payment_option, customer]
      properties:
        merchant_order_reference:
          type: string
          minLength: 1
          maxLength: 50
          description: Unique reference for this add-money request
        mode:
          type: string
          enum: [GIFT_CARD, CASH]
          description: |
            Mode of adding money:
            - **GIFT_CARD** — Provide gift card number and PIN. Funds credited immediately.
            - **CASH** — Provide amount. Creates a UPI payment order.
        amount:
          $ref: '#/components/schemas/Amount'
          description: Required when mode is CASH. Ignored for GIFT_CARD (amount is determined by the card).
        payment_option:
          type: object
          description: |
            - For **GIFT_CARD** mode: provide `gift_card_details` with `gift_card_number` and `pin`.
            - For **CASH** mode: provide `upi_details` with UPI Collect or Intent details.
          properties:
            gift_card_details:
              $ref: '#/components/schemas/BrandWalletGiftCardDetails'
            upi_details:
              $ref: '#/components/schemas/UPIDetailsRequest'
        customer:
          $ref: '#/components/schemas/CustomerDetails'
          description: Customer details including customer_id
        merchant_metadata:
          type: object
          additionalProperties:
            type: string
          description: Arbitrary key/value pairs attached to the order

    BrandWalletGiftCardDetails:
      type: object
      properties:
        gift_card_number:
          type: string
          minLength: 1
          maxLength: 25
          description: Gift card number
        pin:
          type: string
          minLength: 6
          maxLength: 6
          description: Gift card PIN (exactly 6 digits)

    # ─── End Brand Wallet Schemas ──────────────

    GenerateTokenRequest:
      type: object
      description: Request body for generating an API access token.
      required:
        - client_id
        - client_secret
        - grant_type
      properties:
        client_id:
          type: string
          description: Unique client identifier provided during merchant onboarding.
          example: a17ce30e-f88e-4f81-ada1-c3b4909ed232
        client_secret:
          type: string
          description: Client secret key provided during merchant onboarding.
          example: abcdefgwei7egyhuggwp39w8rh
        grant_type:
          type: string
          description: OAuth2 grant type.
          example: client_credentials
    GenerateTokenResponse:
      type: object
      description: Response containing the generated access token.
      properties:
        access_token:
          type: string
          description: The access token generated by the system. Use in Authorization headers.
          minLength: 1
          maxLength: 8192
          example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
        expires_at:
          type: string
          format: date-time
          description: Access token expiration timestamp in ISO 8601 format.
          example: '2024-06-28T13:26:06.909140Z'
    CaptureOrderRequest:
      type: object
      description: Request body for capturing a pre-authorized order.
      required:
        - merchant_capture_reference
      properties:
        merchant_capture_reference:
          type: string
          description: Unique identifier for the capture request.
          minLength: 1
          maxLength: 50
          example: f31d8c60-0dc8-4788-a577-5ced930cc175
        capture_amount:
          $ref: '#/components/schemas/Amount'
    OrderResponse:
      type: object
      description: Response containing order details.
      properties:
        data:
          type: object
          properties:
            order_id:
              type: string
              description: Unique identifier of the order in the Pine Labs Online database.
              maxLength: 50
              example: v1-5757575757-aa-hU1rUd
            merchant_order_reference:
              type: string
              description: Unique identifier entered while creating the order.
              minLength: 1
              maxLength: 50
              example: '112345'
            type:
              type: string
              description: Payment type.
              enum:
                - CHARGE
                - REFUND
                - ADD_MONEY
              example: CHARGE
            status:
              type: string
              description: Order status.
              enum:
                - CREATED
                - PENDING
                - PROCESSED
                - AUTHORIZED
                - CANCELLED
                - ATTEMPTED
                - FAILED
                - FULLY_REFUNDED
                - PARTIALLY_REFUNDED
              example: CREATED
            challenge_url:
              type: string
              description: URL to accept payment. Returned only after payment is linked against the order_id.
              example: https://api.pluralpay.in/web/auth/landing/?token=S50xnInJvpcftOzmuGWUqnLpIe694YPGJiKL%2FdBh5Yl%2Bwb8giJrl6HoTvcKljRVZa3H
            merchant_id:
              type: string
              description: Unique identifier of the merchant in the Pine Labs Online database.
              example: '123456'
            order_amount:
              $ref: '#/components/schemas/Amount'
            pre_auth:
              type: boolean
              description: Whether pre-authorization is needed.
              example: true
            part_payment:
              type: boolean
              description: Whether part payment is enabled.
              example: false
            allowed_payment_methods:
              type: array
              items:
                type: string
              example:
                - CARD
                - UPI
                - NETBANKING
                - POINTS
                - WALLET
                - BRAND_WALLET
            notes:
              type: string
              description: Note shown against the order.
              example: order1
            callback_url:
              type: string
              description: URL to redirect customers after successful payment.
              example: https://sample-callback-url
            failure_callback_url:
              type: string
              description: URL to redirect customers after failed payment.
              example: https://sample-failure-callback-url
            purchase_details:
              type: object
              properties:
                customer:
                  $ref: '#/components/schemas/CustomerDetails'
                merchant_metadata:
                  $ref: '#/components/schemas/MerchantMetadata'
                split_info:
                  $ref: '#/components/schemas/SplitInfo'
                cart_details:
                  $ref: '#/components/schemas/CartDetails'
            payments:
              type: array
              description: Array of payment details. Returned only for orders linked with a payment.
              items:
                $ref: '#/components/schemas/PaymentItem'
            created_at:
              type: string
              format: date-time
              description: ISO 8601 UTC timestamp when the order was created.
              example: '2024-07-09T07:57:08.022Z'
            updated_at:
              type: string
              format: date-time
              description: ISO 8601 UTC timestamp when the order was last updated.
              example: '2024-07-09T07:57:08.022Z'
            integration_mode:
              type: string
              description: Type of integration.
              enum:
                - SEAMLESS
                - REDIRECT
              example: SEAMLESS
            image_url:
              type: string
              description: QR code image URL. Returned for UPI Intent with QR flow.
              example: https://api.pluralpay.in/qr/image/v1-order-id
            payment_retries_remaining:
              type: integer
              description: Number of retry attempts remaining before payment is marked as failed.
              example: 10
            is_mcc_transaction:
              type: boolean
              description: Whether the order is a MCC transaction.
              example: false
            is_domestic_txn_for_risk_enabled:
              type: boolean
              description: Whether risk evaluation is enabled for domestic transactions.
              example: false
            order_token:
              type: string
              description: Unique identifier of the order token.
              example: mzohdLMNCzZ2SN3k1Ppglkz4mmk9edyahe34BM%2Fu9gA%3D
            cross_border_details:
              $ref: '#/components/schemas/CrossBorderDetailsResponse'
    GenerateCheckoutLinkRequest:
      type: object
      description: Request body for generating an Infinity Checkout link.
      required:
        - merchant_order_reference
        - order_amount
      properties:
        merchant_order_reference:
          type: string
          description: '**Idempotency Key.** Unique identifier for the order request. Duplicate requests with the same `merchant_order_reference` will return the existing order instead of creating a new one.'
          example: '112345'
        order_amount:
          $ref: '#/components/schemas/Amount'
        integration_mode:
          type: string
          description: |
            The integration mode through which you want to accept payments.
            By default, the integration mode is set to REDIRECT.
          enum:
            - REDIRECT
            - IFRAME
            - SDK
            - SEAMLESS
          example: REDIRECT
        pre_auth:
          type: boolean
          description: |
            The pre-authorization type.
            false (default): When pre-authorization is not required.
            true: When pre-authorization is needed.
        allowed_payment_methods:
          type: array
          description: The type of payment methods you want to offer your customers.
          items:
            type: string
            enum:
              - CARD
              - UPI
              - POINTS
              - NETBANKING
              - WALLET
              - CREDIT_EMI
              - DEBIT_EMI
              - BNPL
          example:
            - CARD
            - UPI
        notes:
          type: string
          description: The note you want to show against an order.
          example: Order1
        callback_url:
          type: string
          description: URL to redirect your customers to specific success or failure pages.
          example: https://sample-callback-url
        purchase_details:
          $ref: '#/components/schemas/CheckoutPurchaseDetails'
    GenerateCheckoutLinkResponse:
      type: object
      description: Response returned from the Generate Checkout Link API.
      properties:
        token:
          type: string
          description: Token generated by Pine Labs for Infinity Checkout.
          example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
        order_id:
          type: string
          description: Unique identifier of the order in the Pine Labs Online database.
          example: v1-5757575757-aa-hU1rUd
        redirect_url:
          type: string
          description: The checkout link generated on Pine Labs system.
          example: https://api.pluralonline.com/api/v3/checkout-bff/redirect/checkout?token=REDIRECT_TOKEN
        response_code:
          type: integer
          description: Response code of the request.
          example: 200
        response_message:
          type: string
          description: Corresponding message to the response code.
          example: Order Creation Successful.
    CreatePaymentLinkRequest:
      type: object
      description: Request body for creating a payment link.
      required:
        - amount
        - merchant_payment_link_reference
      properties:
        amount:
          $ref: '#/components/schemas/Amount'
        description:
          type: string
          description: Description corresponding to the payment.
          example: Payment for Order1
        expire_by:
          type: string
          format: date-time
          description: |
            The desired expiration timestamp for the payment link (ISO 8601 UTC).
            Must be set within a maximum of 180 days from the current date.
          example: '2024-10-28T13:26:06.909140Z'
        allowed_payment_methods:
          type: array
          description: The type of payment methods you want to offer your customers.
          items:
            type: string
            enum:
              - CARD
              - UPI
              - POINTS
              - NETBANKING
              - WALLET
              - CREDIT_EMI
              - DEBIT_EMI
              - BNPL
          example:
            - CARD
            - UPI
        pre_auth:
          type: string
          description: |
            The pre-authorization type.
            Possible values: "false" (default), "true".
          example: 'false'
        is_mcc_transaction:
          type: string
          description: |
            Identifies the Payment Link type.
            "true": The payment link is processed for a MCC transaction.
            "false" (default): The payment link is processed for a regular transaction.
          example: 'false'
        failure_callback_url:
          type: string
          description: |
            URL specifically used to redirect customers to a failure page.
            If not provided, customers will be redirected to the callback_url for both
            successful and failed transactions.
          example: https://sample-failure-callback-url
        merchant_payment_link_reference:
          type: string
          description: '**Idempotency Key.** Unique identifier for the payment link request. Duplicate requests with the same `merchant_payment_link_reference` will return the existing payment link instead of creating a new one.'
          minLength: 1
          maxLength: 50
          example: '1234567890'
        customer:
          $ref: '#/components/schemas/PaymentLinkCustomer'
        product_details:
          type: array
          description: An array of objects that contains the list of products associated with the payment.
          items:
            $ref: '#/components/schemas/PaymentLinkProductDetail'
        cart_coupon_discount_amount:
          $ref: '#/components/schemas/Amount'
        merchant_metadata:
          $ref: '#/components/schemas/MerchantMetadata'
        split_info:
          $ref: '#/components/schemas/PaymentLinkSplitInfo'
        account_details:
          $ref: '#/components/schemas/PaymentLinkAccountDetails'
        callback_url:
          type: string
          description: |
            URL to which your customers are redirected based on the order or product details,
            leading them to either a success or failure page.
          example: https://sample-callback-url
        part_payment:
          type: boolean
          description: |
            Indicates whether the order is for part payments or full.
            true: The order created is for a part payment.
            false: The order is created for a full payment.
          example: true
        cart_details:
          $ref: '#/components/schemas/PaymentLinkCartDetails'
    PaymentLinkResponse:
      type: object
      description: Response returned from Payment Link APIs.
      properties:
        payment_link:
          type: string
          description: The payment link URL.
          example: https://shortener.v2.pinepg.in/PLUTUS/3rh4jtd
        payment_link_id:
          type: string
          description: Unique identifier of the payment link in the Pine Labs Online database.
          maxLength: 50
          example: pl-v1-250306082755-aa-uT0noy
        status:
          type: string
          description: Payment link status.
          enum:
            - CREATED
            - CLICKED
            - PAYMENT_INITIATED
            - PROCESSED
            - PARTIAL_PROCESSED
            - EXPIRED
            - CANCELLED
          example: CREATED
        amount:
          $ref: '#/components/schemas/Amount'
        amount_due:
          $ref: '#/components/schemas/Amount'
        order_id:
          type: string
          description: Unique identifier of the order in the Pine Labs Online database.
          example: v1-250131113650-aa-TUzeRY
        merchant_payment_link_reference:
          type: string
          description: Unique identifier entered while creating a payment link.
          minLength: 1
          maxLength: 50
          example: link_ref
        description:
          type: string
          description: Description message against the payment link.
          example: Order Payment Link
        expire_by:
          type: string
          format: date-time
          description: Timestamp when the payment link expires.
          example: '2024-04-30T08:01:32Z'
        allowed_payment_methods:
          type: array
          description: Payment methods offered to the customer.
          items:
            type: string
            enum:
              - CARD
              - UPI
              - POINTS
              - NETBANKING
              - WALLET
              - CREDIT_EMI
              - DEBIT_EMI
          example:
            - NETBANKING
        pre_auth:
          type: boolean
          description: |
            The pre-authorization type.
            true: When pre-authorization is needed.
            false (default): When pre-authorization is not required.
          example: false
        failure_callback_url:
          type:
            - string
            - 'null'
          description: URL to redirect customers to a failure page.
          example: null
        is_mcc_transaction:
          type: boolean
          description: |
            Identifies the Payment Link type.
            true: Processed for a MCC transaction.
            false (default): Processed for a regular transaction.
          example: true
        customer:
          $ref: '#/components/schemas/PaymentLinkCustomer'
        product_details:
          type: array
          description: List of products associated with the payment.
          items:
            $ref: '#/components/schemas/PaymentLinkProductDetail'
        split_info:
          $ref: '#/components/schemas/PaymentLinkSplitInfo'
        account_details:
          $ref: '#/components/schemas/PaymentLinkAccountDetails'
        cart_coupon_discount_amount:
          $ref: '#/components/schemas/Amount'
        merchant_metadata:
          $ref: '#/components/schemas/MerchantMetadata'
        created_at:
          type: string
          format: date-time
          description: ISO 8601 UTC Timestamp when the payment link was created.
          example: '2024-07-09T07:57:08.022Z'
        updated_at:
          type: string
          format: date-time
          description: ISO 8601 UTC Timestamp when the payment link was last updated.
          example: '2024-07-09T07:57:08.022Z'
    CreatePaymentRequest:
      type: object
      description: |
        Unified request body for creating a payment against an order.
        The `payment_method` field within each payment item determines the
        payment flow (CARD, UPI, NETBANKING, WALLET, BRAND_WALLET, EMI, BNPL).
      required:
        - payments
      properties:
        payments:
          type: array
          description: Array of payment items. Typically contains a single item.
          minItems: 1
          items:
            $ref: '#/components/schemas/PaymentRequestItem'
    OTPGenerateRequest:
      type: object
      description: Request body for generating an OTP for card payment authentication.
      required:
        - payment_id
      properties:
        payment_id:
          type: string
          description: Unique identifier of the payment requiring OTP verification.
          example: v1-5757575757-aa-hU1rUd-cc-l
    OTPGenerateResponse:
      type: object
      description: Response after OTP generation.
      properties:
        next:
          type: array
          description: Available next actions.
          items:
            type: string
            enum:
              - SUBMIT_OTP
              - RESEND_OTP
              - NONE
          example:
            - SUBMIT_OTP
            - RESEND_OTP
        meta_data:
          type: object
          description: Additional metadata for OTP handling.
          properties:
            resend_after:
              type: string
              description: Minimum wait time in seconds before OTP can be resent.
              example: '180'
    GetCardDetailsRequest:
      type: object
      description: Request body for retrieving card details.
      required:
        - card_details
      properties:
        amount:
          type: string
          description: Transaction amount in smallest currency unit.
          example: '100'
        card_details:
          type: array
          description: An array that contains the card details.
          minItems: 1
          items:
            $ref: '#/components/schemas/CardDetailLookupItem'
    GetCardDetailsResponse:
      type: object
      description: Response containing card details information.
      properties:
        card_payment_details:
          type: array
          description: Array of card payment details matching the lookup.
          items:
            $ref: '#/components/schemas/CardPaymentDetailItem'
    Amount:
      type: object
      description: Monetary amount with currency.
      required:
        - value
        - currency
      properties:
        value:
          type: integer
          description: Amount in the smallest currency unit (e.g., paisa for INR).
          minimum: 100
          example: 50000
        currency:
          type: string
          description: Three-letter ISO 4217 currency code.
          default: INR
          example: INR
    Address:
      type: object
      description: Physical address.
      properties:
        address1:
          type: string
          description: Address line 1.
          example: 10 Downing Street Westminster London
        address2:
          type: string
          description: Address line 2.
          example: Oxford Street Westminster London
        address3:
          type: string
          description: Address line 3.
          example: Baker Street Westminster London
        pincode:
          type: string
          description: Postal/ZIP code.
          example: '51524036'
        city:
          type: string
          description: City name.
          example: Westminster
        state:
          type: string
          description: State or province.
          example: Westminster
        country:
          type: string
          description: Country name.
          example: London
        full_name:
          type: string
          description: Full name of the address holder.
          example: Kevin Bob
        adddress_type:
          type: string
          description: Type of address (e.g., Home, Office).
          example: Home
        address_category:
          type: string
          description: Category of the address.
          enum:
            - billing
            - shipping
          example: billing
    MerchantMetadata:
      type: object
      description: Arbitrary key-value pairs for merchant use. Maximum 10 pairs, 256 characters each.
      additionalProperties:
        type: string
        maxLength: 256
      maxProperties: 10
      example:
        clientId: DD
        transactionReferenceNo: pine-1223
        merchantId: '1234'
        tid: '9000990'
        acquirerName: HDFC_FSS
        isOfferDisplayRequired: 'true'
        OfferData: UHJvZHVjdF9Db2RlPSIgIiZQcm9kdWN0X05hbWU9IiImUGF5bWVudF9Nb2RlPUJhbmsgRU1JJkNhcmRfVHlwZT1EZWJpdCBDYXJkJkJhbmtfTmFtZT1IREZDIERlYml0JkVNSV9UZW51cmU9NiZJbnRlcmVzdF9SYXRlPTkuMCZJbnRlcmVzdF9BbW91bnQ9MTM4MTQwJk1vbnRobHlfSW5zdGFsbG1lbnQ9ODk0NjkwJkF1dGhvcml6YXRpb25fQW1vdW50PTEwMCZMb2FuX2Jvb2tpbmdfQW1vdW50PTUyMzAwMDAmSW50ZXJlc3RfQ2FzaGJhY2tfQW1vdW50PTAmSW50ZXJlc3RfQ2FzaGJhY2tfVHlwZT1EZWZlcnJlZCZBZGRpdGlvbmFsX0Nhc2hiYWNrPSIiJkFkZGl0aW9uYWxfQ2FzaGJhY2tfVHlwZT0iIiZEZXNjcmlwdGlvbj1CYW5rIEVNSSZQcm9kdWN0X1ZhbHVlPTUyMzAwMDA
        tenant_id: PGATPOS
        is_offer_validation_required: 'true'
    ErrorResponse:
      type: object
      description: |
        Standard error response body returned for all non-2XX API responses.
        Contains the error code, message, and optional additional details.
      properties:
        code:
          type: string
          description: |
            Short code for the error returned. Possible values include:
            INVALID_REQUEST, PAYMENT_RATE_LIMIT, CARD_EXPIRED,
            AMOUNT_LIMIT_EXCEEDED, INTERNAL_ERROR, DUPLICATE_REQUEST,
            USER_AUTHENTICATION_FAILED, ORDER_NOT_FOUND, and others.
          example: INVALID_REQUEST
        message:
          type: string
          description: Corresponding error message for the code.
          example: The request does not meet the expected contract and cannot be processed.
        additional_error_details:
          type: object
          description: Additional details about where and why the error occurred.
          properties:
            source:
              type: string
              description: Indicates where the error originated.
              example: INTERNAL
            step:
              type: string
              description: Specifies the stage in which the error occurred.
              example: payment_eligibility_check
            reason:
              type: string
              description: Describes the cause of the error.
              example: transaction_limit_exceeded
    PaginationMeta:
      type: object
      description: Pagination metadata returned on list endpoints.
      properties:
        current_page:
          type: integer
          description: Current page number (1-indexed).
          example: 1
        per_page:
          type: integer
          description: Number of records per page.
          example: 10
        total_count:
          type: integer
          description: Total number of records matching the query.
          example: 42
        total_pages:
          type: integer
          description: Total number of pages.
          example: 5
    CreateCustomerRequest:
      type: object
      description: Request body for creating a customer profile.
      properties:
        merchant_customer_reference:
          type: string
          description: Unique customer reference assigned by the merchant.
          minLength: 1
          maxLength: 50
          example: 82d57572-057c-4826-5775-385a52150554
        first_name:
          type: string
          description: Customer's first name.
          minLength: 1
          maxLength: 50
          example: Kevin
        last_name:
          type: string
          description: Customer's last name.
          minLength: 1
          maxLength: 50
          example: Bob
        country_code:
          type: string
          description: Country code of the registered mobile number. Defaults to 91.
          maxLength: 5
          example: '91'
        mobile_number:
          type: string
          description: Customer's mobile number.
          minLength: 10
          maxLength: 20
          pattern: ^[0-9]+$
          example: '9876543210'
        email_id:
          type: string
          description: Customer's email address.
          maxLength: 50
          example: kevin@example.com
        billing_address:
          $ref: '#/components/schemas/Address'
        shipping_address:
          $ref: '#/components/schemas/Address'
        gstin:
          type: string
          description: Customer's unique GSTIN (Goods and Services Tax Identification Number).
          example: 28ABCDE1234F2Z6
        merchant_metadata:
          $ref: '#/components/schemas/MerchantMetadata'
    UpdateCustomerRequest:
      type: object
      description: Request body for updating a customer profile. All fields are optional.
      properties:
        merchant_customer_reference:
          type: string
          description: Unique customer reference assigned by the merchant.
          minLength: 1
          maxLength: 50
          example: 82d57572-057c-4826-5775-385a52150554
        first_name:
          type: string
          description: Customer's first name.
          minLength: 1
          maxLength: 50
          example: Kevin
        last_name:
          type: string
          description: Customer's last name.
          minLength: 1
          maxLength: 50
          example: Bob
        country_code:
          type: string
          description: Country code of the registered mobile number.
          maxLength: 5
          example: '91'
        mobile_number:
          type: string
          description: Customer's mobile number.
          minLength: 10
          maxLength: 20
          pattern: ^[0-9]+$
          example: '9876543210'
        email_id:
          type: string
          description: Customer's email address.
          maxLength: 50
          example: kevin@example.com
        billing_address:
          $ref: '#/components/schemas/Address'
        shipping_address:
          $ref: '#/components/schemas/Address'
        status:
          type: string
          description: Customer status to set.
          enum:
            - ACTIVE
            - INACTIVE
            - SUSPENDED
            - DELETED
          example: ACTIVE
    CustomerResponse:
      type: object
      description: Customer profile response object.
      properties:
        customer_id:
          type: string
          description: Unique identifier of the customer in the Pine Labs Online database.
          maxLength: 50
          example: cust-v1-0811030624-aa-RBDgpR
        merchant_customer_reference:
          type: string
          description: Unique identifier entered while creating the customer.
          minLength: 1
          maxLength: 50
          example: 82d57572-057c-4826-5775-385a52150554
        first_name:
          type: string
          description: Customer's first name.
          maxLength: 50
          example: Kevin
        last_name:
          type: string
          description: Customer's last name.
          maxLength: 50
          example: Bob
        country_code:
          type: string
          description: Country code of the registered mobile number.
          example: '91'
        mobile_number:
          type: string
          description: Customer's mobile number.
          minLength: 10
          maxLength: 20
          example: '9876543210'
        email_id:
          type: string
          description: Customer's email address.
          maxLength: 50
          example: kevin@example.com
        billing_address:
          $ref: '#/components/schemas/Address'
        shipping_address:
          $ref: '#/components/schemas/Address'
        gstin:
          type: string
          description: Customer's unique GSTIN.
          example: 28ABCDE1234F2Z6
        merchant_metadata:
          $ref: '#/components/schemas/MerchantMetadata'
        status:
          type: string
          description: Customer status.
          enum:
            - INACTIVE
            - ACTIVE
            - SUSPENDED
            - DELETED
          example: ACTIVE
        created_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the customer was created.
          example: '2024-10-04T13:11:29.645591Z'
        updated_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the customer was last updated.
          example: '2024-10-04T13:11:29.645657Z'
    GenerateCardTokenRequest:
      type: object
      description: Request body for generating a card token.
      required:
        - customer_id
        - merchant_token_reference
        - payment_method
      properties:
        customer_id:
          type: string
          description: Unique identifier of the customer in the Pine Labs Online database.
          maxLength: 50
          example: cust-v1-0811030624-aa-RBDgpR
        merchant_token_reference:
          type: string
          description: '**Idempotency Key.** Unique token reference assigned by the merchant. Duplicate requests with the same `merchant_token_reference` will return the existing token instead of creating a new one.'
          maxLength: 50
          example: token-ref-001
        payment_method:
          type: string
          description: Payment method for which the token is being generated. Currently only CARD is supported.
          enum:
            - CARD
          example: CARD
        payment_option:
          $ref: '#/components/schemas/TokenPaymentOption'
        payment:
          $ref: '#/components/schemas/TokenPayment'
        merchant_metadata:
          $ref: '#/components/schemas/MerchantMetadata'
    CardTokenResponse:
      type: object
      description: Response object after generating a card token.
      properties:
        token_id:
          type: string
          description: Unique token ID generated by Pine Labs Online.
          example: token-v1-1234567890-aa-ABCDEF
        customer_id:
          type: string
          description: Unique identifier of the customer associated with the token.
          example: cust-v1-0811030624-aa-RBDgpR
        merchant_token_reference:
          type: string
          description: Merchant's token reference.
          example: token-ref-001
        status:
          $ref: '#/components/schemas/TokenStatus'
        created_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the token was created.
          example: '2024-10-04T13:11:29.645591Z'
        updated_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the token was last updated.
          example: '2024-10-04T13:11:29.645657Z'
    CustomerTokensResponse:
      type: object
      description: Response object containing all tokens linked to a customer.
      properties:
        customer_id:
          type: string
          description: Unique identifier of the customer.
          example: cust-v1-0811030624-aa-RBDgpR
        total_tokens:
          type: integer
          description: Total number of tokens linked to the customer.
          example: 1
        tokens:
          type: array
          description: List of tokens associated with the customer.
          items:
            $ref: '#/components/schemas/CustomerTokenDetail'
        created_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the customer record was created.
          example: '2024-10-04T13:11:29.645591Z'
        updated_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the customer record was last updated.
          example: '2024-10-04T13:11:29.645657Z'
    CustomerTokenDetail:
      type: object
      description: Individual token detail linked to a customer.
      properties:
        token_id:
          type: string
          description: Unique token ID generated by Pine Labs Online.
          example: token-v1-1234567890-aa-ABCDEF
        merchant_token_reference:
          type: string
          description: Merchant's token reference.
          example: token-ref-001
        customer_id:
          type: string
          description: Unique identifier of the customer.
          example: cust-v1-0811030624-aa-RBDgpR
        status:
          $ref: '#/components/schemas/TokenStatus'
        payment_method:
          type: string
          description: Payment method associated with the token.
          enum:
            - CARD
            - UPI
            - POINTS
          example: CARD
        expired_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the token expires.
          example: '2025-12-31T23:59:59.000000Z'
        created_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the token was created.
          example: '2024-10-04T13:11:29.645591Z'
        updated_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the token was last updated.
          example: '2024-10-04T13:11:29.645657Z'
        status_reason:
          type: string
          description: Reason for the current token status.
          example: Token activated successfully
        merchant_metadata:
          $ref: '#/components/schemas/MerchantMetadata'
        card_data:
          $ref: '#/components/schemas/TokenCardData'
        is_compliant:
          type: boolean
          description: Indicates whether the token is compliant with regulatory requirements.
          example: true
    DeleteCustomerTokenRequest:
      type: object
      description: Request body for deleting a customer token.
      required:
        - merchant_unique_reference
      properties:
        merchant_unique_reference:
          type: string
          description: Unique reference for this delete operation.
          maxLength: 50
          example: del-ref-001
        merchant_metadata:
          $ref: '#/components/schemas/MerchantMetadata'
    DeleteCustomerTokenResponse:
      type: object
      description: Response after successfully deleting a customer token.
      properties:
        token_id:
          type: string
          description: Token ID that was deleted.
          example: token-v1-0811030624-aa-RBDgpR
        customer_id:
          type: string
          description: Unique identifier of the customer.
          example: cust-v1-0811030624-aa-RBDgpR
        status:
          type: string
          description: Status of the token after deletion.
          example: DELETED
        merchant_unique_reference:
          type: string
          description: Unique reference for this delete operation.
          example: ''
    GenerateCryptogramRequest:
      type: object
      description: Request body for generating a cryptogram for a tokenized card transaction.
      required:
        - merchant_unique_reference
        - service_provider_token_id
      properties:
        merchant_unique_reference:
          type: string
          description: Unique reference for this cryptogram generation request.
          maxLength: 50
          example: crypto-ref-001
        service_provider_token_id:
          type: string
          description: Service provider token identifier.
          maxLength: 50
          example: sp-token-001
    CryptogramResponse:
      type: object
      description: Response object containing the generated cryptogram data.
      properties:
        token_id:
          type: string
          description: Token ID used for the cryptogram generation.
          example: token-v1-1234567890-aa-ABCDEF
        merchant_token_reference:
          type: string
          description: Merchant's token reference.
          example: token-ref-001
        service_provider_token_id:
          type: string
          description: Service provider token identifier.
          example: sp-token-001
        token_data:
          $ref: '#/components/schemas/TokenTransactionalData'
    ServiceProviderTokenResponse:
      type: object
      description: Response object containing service provider token information.
      properties:
        token_id:
          type: string
          description: Unique token ID generated by Pine Labs Online.
          example: token-v1-1234567890-aa-ABCDEF
        customer_id:
          type: string
          description: Unique identifier of the customer.
          example: cust-v1-0811030624-aa-RBDgpR
        merchant_token_reference:
          type: string
          description: Merchant's token reference.
          example: token-ref-001
        status:
          $ref: '#/components/schemas/TokenStatus'
        payment_method:
          type: string
          description: Payment method associated with the token.
          enum:
            - CARD
          example: CARD
        card_details:
          $ref: '#/components/schemas/TokenCardData'
        service_provider_token_id:
          type: string
          description: Service provider token identifier.
          example: sp-token-001
        created_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the token was created.
          example: '2024-10-04T13:11:29.645591Z'
        updated_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the token was last updated.
          example: '2024-10-04T13:11:29.645657Z'
    ServiceProviderTokensListResponse:
      type: object
      description: Response containing a list of service provider tokens for a customer.
      properties:
        customer_id:
          type: string
          description: Unique identifier of the customer.
          example: cust-v1-0811030624-aa-RBDgpR
        tokens:
          type: array
          description: List of service provider tokens.
          items:
            $ref: '#/components/schemas/ServiceProviderTokenResponse'
    DeleteTokenByTokenIdResponse:
      type: object
      description: Response after deleting a token by its token ID.
      properties:
        token_id:
          type: string
          description: Token ID that was deleted.
          example: token-v1-1234567890-aa-ABCDEF
        status:
          type: string
          description: Token status after deletion.
          example: DEACTIVATED
    CustomerDetails:
      type: object
      description: Customer information.
      properties:
        email_id:
          type: string
          description: Customer's email address.
          maxLength: 50
          example: john@example.com
        first_name:
          type: string
          description: Customer's first name.
          maxLength: 50
          example: Kevin
        last_name:
          type: string
          description: Customer's last name.
          maxLength: 50
          example: Bob
        customer_id:
          type: string
          description: Unique identifier of the customer.
          maxLength: 19
          example: '123456'
        mobile_number:
          type: string
          description: Customer's mobile number.
          minLength: 10
          maxLength: 20
          example: '9876543210'
        country_code:
          type: string
          description: Country code of the registered mobile number. Defaults to 91.
          maxLength: 5
          example: '91'
        billing_address:
          $ref: '#/components/schemas/Address'
        shipping_address:
          $ref: '#/components/schemas/Address'
        is_edit_customer_details_allowed:
          type: boolean
          description: Whether the customer is allowed to edit their details.
          example: false
    SplitDetail:
      type: object
      description: Individual split settlement detail.
      properties:
        split_merchant_id:
          type: string
          description: Unique identifier of the partner merchant.
          example: '1324'
        split_settlement_id:
          type: string
          description: Unique identifier of the split settlement.
          maxLength: 50
          example: v1-241118074845-aa-wduUQF-ss-b
        merchant_settlement_reference:
          type: string
          description: Unique identifier entered while creating an order in split.
          maxLength: 50
          example: kshjhfk
        amount:
          $ref: '#/components/schemas/Amount'
        on_hold:
          type: boolean
          description: Whether the settlement is on hold for future release.
          example: true
        status:
          type: string
          description: Split settlement status.
          enum:
            - RELEASED
            - HOLD
          example: HOLD
        updated_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the split order was created.
          example: '2024-11-18T07:48:45.324Z'
    SplitInfo:
      type: object
      description: Split settlement information for marketplace flows.
      properties:
        split_type:
          type: string
          description: Type of split.
          example: AMOUNT
        split_details:
          type: array
          description: Array of split details.
          items:
            $ref: '#/components/schemas/SplitDetail'
    CartItem:
      type: object
      description: Individual cart item.
      properties:
        item_id:
          type: string
          description: Unique identifier of the item.
          example: '9876'
        item_name:
          type: string
          description: Name of the item.
          example: T Shirt
        item_description:
          type: string
          description: Description of the item.
          example: Shopping on Diwali Sale
        item_details_url:
          type: string
          description: Item details URL.
          example: https://chriscross.in/cdn/shop/files/95_800x.jpg
        item_image_url:
          type: string
          description: Image URL of the item (24x24 recommended).
          example: https://chriscross.in/cdn/shop/files/95_800x.jpg
        item_original_unit_price:
          type: integer
          description: Original price of the item.
          example: 199
        item_discounted_unit_price:
          type: integer
          description: Discounted price of the item.
          example: 149
        item_quantity:
          type: integer
          description: Number of items purchased.
          example: 2
        item_currency:
          type: string
          description: Currency type for the item purchase.
          example: INR
    CartDetails:
      type: object
      description: Cart details for the purchase.
      properties:
        cart_items:
          type: array
          description: Array of cart items.
          items:
            $ref: '#/components/schemas/CartItem'
    CardData:
      type: object
      description: Card payment details.
      properties:
        card_type:
          type: string
          description: Type of card.
          enum:
            - NONE
            - DEBIT
            - CREDIT
            - PREPAID
            - CIRRUS
            - CHARGE_CARD
            - COMMERCIAL_PREPAID
            - COMMERCIAL_CREDIT
            - COMMERCIAL_DEBIT
            - CONSUMER
            - DEFERRED_DEBIT
            - OTHER
          example: CREDIT
        network_name:
          type: string
          description: Card network provider.
          example: VISA
        issuer_name:
          type: string
          description: Card issuer entity.
          example: HDFC
        product_name:
          type: string
          description: Card product name.
          example: Visa Platinum
        card_category:
          type: string
          description: Card category type.
          example: CONSUMER
        country_code:
          type: string
          description: Card issuer's country code.
          example: IND
        token_txn_type:
          type: string
          description: Transaction token type.
          enum:
            - ALT_TOKEN
            - NETWORK_TOKEN
            - ISSUER_TOKEN
          example: ALT_TOKEN
        last4_digit:
          type: string
          description: Last four digits of the card.
          example: '1091'
        save:
          type: boolean
          description: Whether customer consented to save card details.
          example: false
        is_native_otp_eligible:
          type: boolean
          description: Whether card is eligible for Native OTP.
          example: true
    UPIDetailsResponse:
      type: object
      description: UPI payment details returned in the payment response.
      properties:
        txn_mode:
          type: string
          description: UPI transaction mode used.
          enum:
            - COLLECT
            - INTENT
          example: COLLECT
        payer:
          type: object
          properties:
            vpa:
              type: string
              description: Virtual Payment Address of the payer.
              example: kevinbob@okaxis
    NetBankingDataResponse:
      type: object
      description: Net banking details returned in the payment response.
      properties:
        pay_code:
          type: string
          description: Bank code used for the transaction.
          example: NB1531
        txn_mode:
          type: string
          description: Net banking transaction mode.
          enum:
            - REDIRECT
            - QR
            - INTENT
          example: REDIRECT
    AcquirerData:
      type: object
      description: Acquirer details for the payment.
      properties:
        approval_code:
          type: string
          description: Authorization code returned from acquirer.
          maxLength: 50
          example: '030376'
        acquirer_reference:
          type: string
          description: Unique reference returned from acquirer.
          maxLength: 50
          example: '202455840588334'
        rrn:
          type: string
          description: Retrieval reference number returned from acquirer.
          maxLength: 50
          example: '419335023601'
        is_aggregator:
          type: boolean
          description: Whether Pine Labs Online is responsible for settling funds.
          example: true
    CaptureDataItem:
      type: object
      description: Capture details for a pre-authorized payment.
      properties:
        merchant_capture_reference:
          type: string
          description: Unique identifier for the capture request.
          minLength: 1
          maxLength: 50
          example: f31d8c60-0dc8-4788-a577-5ced930cc175
        capture_amount:
          $ref: '#/components/schemas/Amount'
        created_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the amount was captured.
          example: '2024-07-19T11:13:21.523516426Z'
    PaymentItem:
      type: object
      description: Payment details within an order response.
      properties:
        id:
          type: string
          description: Unique identifier of the payment.
          maxLength: 50
          example: v1-5206071124-aa-mpLhF3-cc-l
        merchant_payment_reference:
          type: string
          description: Unique payment reference assigned by the merchant.
          maxLength: 50
          example: pay-ref-001
        status:
          type: string
          description: Payment status.
          enum:
            - PENDING
            - AUTHORIZED
            - CANCELLED
            - PROCESSED
            - FAILED
          example: PENDING
        payment_amount:
          $ref: '#/components/schemas/Amount'
        base_amount:
          $ref: '#/components/schemas/Amount'
        conversion_rate:
          type: number
          format: double
          description: Currency conversion rate.
          example: 0.0123
        payment_method:
          type: string
          description: Type of payment method.
          enum:
            - CARD
            - UPI
            - NETBANKING
            - WALLET
            - BRAND_WALLET
            - POINTS
            - CREDIT_EMI
            - DEBIT_EMI
            - CARDLESS_EMI
            - BNPL
          example: CARD
        payment_option:
          type: object
          description: Payment option details. Structure varies based on payment_method.
          properties:
            card_data:
              $ref: '#/components/schemas/CardData'
            upi_details:
              $ref: '#/components/schemas/UPIDetailsResponse'
            netbanking_details:
              $ref: '#/components/schemas/NetBankingDataResponse'
            wallet_details:
              type: object
              description: Wallet payment details returned in the response.
              properties:
                wallet_name:
                  type: string
                  description: Name of the wallet provider.
                  example: PAYTM
            bnpl_details:
              type: object
              description: Buy Now Pay Later payment details returned in the response.
              properties:
                mobile:
                  type: string
                  description: Customer mobile number.
                  example: '9876543210'
                bnpl_pay_code:
                  type: string
                  description: BNPL provider code.
                  example: LAZYPAY
            points_card_details:
              type: object
              description: Points card payment details returned in the response.
              properties:
                card_last4:
                  type: string
                  description: Last 4 digits of the card.
                  example: '1234'
                points_redeemed:
                  type: string
                  description: Number of points redeemed.
                  example: '500'
            cardless_details:
              type: object
              description: Cardless EMI payment details returned in the response.
              properties:
                pan_number:
                  type: string
                  description: Masked PAN number.
                  example: ABCDE****F
                registered_mobile_number:
                  type: string
                  description: Registered mobile number.
                  example: '9876543210'
        acquirer_data:
          $ref: '#/components/schemas/AcquirerData'
        offer_data:
          type: object
          description: Offer details associated with the payment. Present for EMI payments.
          properties:
            offer_details:
              type: object
              properties:
                id:
                  type: string
                  description: The ID of the Issuer offering the offer.
                name:
                  type: string
                  description: The name of the Issuer offering the offer.
                issuer_type:
                  type: string
                  description: The type of the Issuer offering the offer.
                priority:
                  type: integer
                  description: The priority of the Issuer offering the offer.
                tenure:
                  type: object
                  properties:
                    tenure_id:
                      type: string
                    name:
                      type: string
                    tenure_type:
                      type: string
                    tenure_value:
                      type: integer
                    issuer_offer_parameters:
                      type: array
                      items:
                        type: object
                        properties:
                          program_type:
                            type: string
                          offer_id:
                            type: string
                          offer_parameter_id:
                            type: string
                    details:
                      type: array
                      items:
                        type: object
                        properties:
                          product_code:
                            type: string
                          product_display_name:
                            type: string
                          brand_id:
                            type: string
                          brand_name:
                            type: string
                          product_offer_parameters:
                            type: array
                            items:
                              type: object
                              properties:
                                program_type:
                                  type: string
                                offer_id:
                                  type: string
                                offer_parameter_id:
                                  type: string
                          product_amount:
                            type: object
                            properties:
                              currency:
                                type: string
                              value:
                                type: integer
                          interest_amount:
                            type: object
                            properties:
                              currency:
                                type: string
                              value:
                                type: integer
                          interest_rate:
                            type: number
                          subvention:
                            type: object
                            properties:
                              subvention_type:
                                type: string
                              offer_type:
                                type: string
                              percentage:
                                type: number
                              amount:
                                type: object
                                properties:
                                  currency:
                                    type: string
                                  value:
                                    type: integer
                              breakup:
                                type: object
                                properties:
                                  merchant:
                                    type: object
                                  issuer:
                                    type: object
                                  brand:
                                    type: object
                                    properties:
                                      amount:
                                        type: object
                                        properties:
                                          currency:
                                            type: string
                                          value:
                                            type: integer
                                  dealer:
                                    type: object
                    auth_amount:
                      type: object
                      properties:
                        currency:
                          type: string
                        value:
                          type: integer
                    loan_amount:
                      type: object
                      properties:
                        currency:
                          type: string
                        value:
                          type: integer
                    net_payment_amount:
                      type: object
                      properties:
                        currency:
                          type: string
                        value:
                          type: integer
                    monthly_emi_amount:
                      type: object
                      properties:
                        currency:
                          type: string
                        value:
                          type: integer
        error_detail:
          type: object
          description: Error details. Returned only for failed payments.
          properties:
            code:
              type: string
              description: Error short code.
              example: PAYMENT_DECLINED
            message:
              type: string
              description: Error description explaining why the error occurred.
              example: Transaction declined due to insufficient balance
        capture_data:
          type: array
          description: Capture details. Present only for pre-authorized orders.
          items:
            $ref: '#/components/schemas/CaptureDataItem'
        additional_detail:
          type: object
          description: Additional details related to the payment.
          additionalProperties: true
        created_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the payment was created.
          example: '2024-09-11T08:07:55.647Z'
        updated_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the payment was last updated.
          example: '2024-09-11T08:07:57.115Z'
    CreateOrderRequest:
      type: object
      description: Request body for creating a payment order.
      required:
        - merchant_order_reference
        - order_amount
      properties:
        merchant_order_reference:
          type: string
          description: '**Idempotency Key.** Unique order reference assigned by the merchant. Duplicate requests with the same `merchant_order_reference` will return the existing order instead of creating a new one.'
          minLength: 1
          maxLength: 50
          example: '112345'
        order_amount:
          $ref: '#/components/schemas/Amount'
        pre_auth:
          type: boolean
          description: Whether pre-authorization is needed.
          example: false
        allowed_payment_methods:
          type: array
          description: Payment methods to offer the customer.
          items:
            type: string
            enum:
              - CARD
              - UPI
              - NETBANKING
              - POINTS
              - WALLET
              - CREDIT_EMI
              - DEBIT_EMI
              - BNPL
              - CARDLESS_EMI
          example:
            - CARD
            - UPI
            - NETBANKING
            - POINTS
            - WALLET
        notes:
          type: string
          description: Note to show against the order.
          example: order1
        callback_url:
          type: string
          description: URL to redirect customers after successful payment.
          example: https://sample-callback-url
        failure_callback_url:
          type: string
          description: URL to redirect customers after failed payment. If not provided, callback_url is used for both.
          example: https://sample-failure-callback-url
        purchase_details:
          type: object
          description: Purchase details including customer information.
          properties:
            customer:
              $ref: '#/components/schemas/CustomerDetails'
            merchant_metadata:
              $ref: '#/components/schemas/MerchantMetadata'
            cart_details:
              $ref: '#/components/schemas/CartDetails'
        split_info:
          $ref: '#/components/schemas/SplitInfo'
        is_mcc_transaction:
          type: string
          description: Identifies the order type for MCC transactions. Set to "true" for MCC transactions.
          example: 'true'
        base_amount:
          $ref: '#/components/schemas/Amount'
        cart_coupon_discount_amount:
          $ref: '#/components/schemas/Amount'
        cross_border_details:
          $ref: '#/components/schemas/CrossBorderDetailsRequest'
    CrossBorderDetailsRequest:
      type: object
      description: Cross-border payment details for Cross Border Import enabled merchants. Required when the merchant is enabled for cross-border transactions.
      properties:
        settlement_currency:
          type: string
          description: The currency in which the merchant wants to receive settlement. Defaults to the default settlement currency configured during merchant onboarding.
          example: "USD"
        hs_code:
          type: string
          description: Harmonized System (HS) code for the goods/services being traded. Must be a 6-to-10 digit numeric code. Required when commodity_type is GOODS.
          pattern: "^\\d{6,10}$"
          example: "8471300000"
        hs_description:
          type: string
          description: Description of the goods/services corresponding to the HS code. Required when commodity_type is GOODS.
          maxLength: 200
          example: "Portable digital automatic data processing machines"
        iec_code:
          type: string
          description: Importer-Exporter Code (IEC) issued by DGFT, India. Must be a 1-to-10 digit numeric code.
          pattern: "^\\d{1,10}$"
          example: "0512345678"
    CrossBorderDetailsResponse:
      type: object
      description: System-enriched cross-border details from merchant onboarding configuration. Includes payer_data and tcs_data after payment creation.
      properties:
        flow_type:
          type: string
          enum:
            - LRS
            - NON_LRS
          description: Flow type derived from the merchant's purpose code.
          example: "NON_LRS"
        purpose_code:
          type: string
          description: Purpose code configured during merchant onboarding.
          example: "S0101"
        commodity_type:
          type: string
          enum:
            - GOODS
            - SERVICES
          description: Commodity type configured during merchant onboarding.
          example: "SERVICES"
        requires_pan:
          type: boolean
          description: Whether PAN is required for this cross-border transaction.
          example: true
        payer_data:
          $ref: '#/components/schemas/PayerData'
        tcs_data:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/TCSData'
          description: TCS computation data from the payment. Present for LRS orders where TCS is applicable; otherwise null.
    PayerData:
      type: object
      description: Payer details for cross-border transactions. Contains customer identity and address information needed for cross-border compliance.
      required:
        - first_name
        - last_name
        - email
        - phone
      properties:
        first_name:
          type: string
          maxLength: 100
          description: First name of the payer.
          example: "Rajesh"
        last_name:
          type: string
          maxLength: 100
          description: Last name of the payer.
          example: "Patel"
        email:
          type: string
          maxLength: 254
          description: Email address of the payer.
          example: "rajesh@techcorp.com"
        phone:
          type: string
          description: Phone number of the payer.
          example: "9876543210"
        country_code:
          type: string
          description: Country code for the phone number.
          example: "91"
        pan:
          type: string
          pattern: "^[A-Z]{5}[0-9]{4}[A-Z]{1}$"
          description: PAN card number. Required when requires_pan is true in the order's cross-border details response.
          example: "KGEPS1880J"
        dob:
          type: string
          pattern: "^\\d{4}-\\d{2}-\\d{2}$"
          description: Date of birth (YYYY-MM-DD). Required when PAN is an individual PAN. At least one of dob or name_on_pan must be provided when PAN is present.
          example: "1999-04-14"
        name_on_pan:
          type: string
          maxLength: 100
          description: Name as printed on the PAN card. Required when PAN is a business PAN. At least one of dob or name_on_pan must be provided when PAN is present.
          example: "TechCorp Private Limited"
        address_line_1:
          type: string
          description: Address line 1 of the payer.
          example: "10 Downing Street Westminster London"
        address_line_2:
          type: string
          description: Address line 2 of the payer.
          example: "Oxford Street Westminster London"
        city:
          type: string
          description: City of the payer.
        state:
          type: string
          description: State of the payer.
        country:
          type: string
          description: Country of the payer.
          example: "IN"
        zip:
          type: string
          description: Postal/ZIP code.
        is_tcs_declared:
          type: boolean
          description: Must match the value sent in the TCS Compute API request. If this differs from what was used during TCS computation, a TCS mismatch error will occur.
          default: false
          example: true
    TCSData:
      type: object
      description: TCS computation data from the TCS Compute API. Required only when tcs_applicable is true from the TCS Compute API response.
      required:
        - tcs_applicable
        - tcs_rate
        - original_amount
        - computed_amount
        - slab_id
        - is_flat_rate
        - financial_year
        - breakdown
      properties:
        tcs_applicable:
          type: boolean
          description: Whether TCS is applicable.
          example: true
        tcs_rate:
          type: string
          description: TCS rate percentage.
          example: "2.00"
        original_amount:
          type: object
          description: Original amount before TCS.
          properties:
            value:
              type: integer
              format: int64
              description: Amount in paisa.
              example: 1000
            currency:
              type: string
              description: Currency code.
              example: "INR"
        computed_amount:
          type: object
          description: Total amount including TCS.
          properties:
            value:
              type: integer
              format: int64
              description: Total amount in paisa (original + TCS).
              example: 1020
            currency:
              type: string
              description: Currency code.
              example: "INR"
        slab_id:
          type: string
          description: Slab identifier from TCS Compute API.
          example: "EDU_MED_FY2627"
        is_flat_rate:
          type: boolean
          description: Whether flat rate slab was applied.
          example: false
        financial_year:
          type: string
          description: Financial year.
          example: "2026-27"
        breakdown:
          type: object
          description: TCS breakdown details.
          properties:
            amount:
              type: object
              description: Base amount for TCS calculation.
              properties:
                value:
                  type: integer
                  format: int64
                  example: 1000
                currency:
                  type: string
                  example: "INR"
            tcs:
              type: object
              description: Computed TCS amount.
              properties:
                value:
                  type: integer
                  format: int64
                  example: 20
                currency:
                  type: string
                  example: "INR"
    TCSComputeRequest:
      type: object
      description: Request body for computing TCS on an LRS cross-border order.
      required:
        - order_id
        - amount
      properties:
        order_id:
          type: string
          description: The order ID for which TCS needs to be computed. Must be a valid cross-border order belonging to the merchant.
          example: "v1-260514071718-aa-XqVzeA"
        amount:
          type: object
          description: The amount on which TCS should be calculated.
          required:
            - value
            - currency
          properties:
            value:
              type: integer
              format: int64
              description: Amount in paisa (smallest currency unit). Must be greater than 0.
              example: 100000
            currency:
              type: string
              description: Currency code. Must be INR.
              example: "INR"
        is_tcs_declared:
          type: boolean
          description: Set to true when the customer voluntarily declares TCS. When true, the full amount is taxed at the applicable TCS rate, bypassing the threshold deduction. Defaults to false.
          default: false
          example: true
    TCSComputeResponse:
      type: object
      description: TCS computation result.
      properties:
        tcs_applicable:
          type: boolean
          description: Whether TCS is applicable for this transaction.
          example: true
        tcs_rate:
          type: string
          description: The TCS rate applied (percentage).
          example: "20.00"
        original_amount:
          type: object
          description: The original amount passed in the request.
          properties:
            value:
              type: integer
              format: int64
              description: Amount in paisa.
              example: 100000
            currency:
              type: string
              description: Currency code.
              example: "INR"
        computed_amount:
          type: object
          description: The total amount including TCS (original + TCS). Same as original when TCS is not applicable.
          properties:
            value:
              type: integer
              format: int64
              description: Total amount in paisa (original + TCS).
              example: 120000
            currency:
              type: string
              description: Currency code.
              example: "INR"
        slab_id:
          type: string
          description: Identifier of the matched TCS slab.
          example: "slab-lrs-2026-27"
        is_flat_rate:
          type: boolean
          description: Whether the slab uses a flat rate or threshold-based rate.
          example: false
        flat_rate:
          type: string
          description: The flat rate value (present only if is_flat_rate is true).
        financial_year:
          type: string
          description: The current financial year (Indian FY April–March).
          example: "2026-27"
        breakdown:
          type: object
          description: Detailed breakdown of the TCS computation.
          properties:
            amount:
              type: object
              description: The base amount used for TCS calculation.
              properties:
                value:
                  type: integer
                  format: int64
                  example: 100000
                currency:
                  type: string
                  example: "INR"
            tcs:
              type: object
              description: The TCS amount computed.
              properties:
                value:
                  type: integer
                  format: int64
                  example: 20000
                currency:
                  type: string
                  example: "INR"
    InvoiceCaptureRequest:
      type: object
      description: Request body for capturing invoice details for a cross-border order.
      required:
        - invoice_number
        - invoice_date
      properties:
        invoice_number:
          type: string
          maxLength: 100
          description: The invoice number/identifier for the transaction.
          example: "v1-260520225359-aa-LHy288-IN"
        invoice_date:
          type: string
          pattern: "^\\d{4}-\\d{2}-\\d{2}$"
          description: The date of the invoice in YYYY-MM-DD format (ISO 8601 date).
          example: "2026-05-20"
        supplier_name:
          type: string
          maxLength: 200
          description: Name of the supplier/merchant on the invoice.
          example: "Acme Electronics Pvt Ltd"
    InvoiceCaptureResponse:
      type: object
      description: Response after successfully capturing invoice details.
      properties:
        invoice_id:
          type: string
          description: Unique invoice identifier. Use this in Step 2 for file upload.
          example: "inv-260520225359-ab-XyZ123"
        order_id:
          type: string
          description: Order ID.
          example: "v1-260520225359-aa-LHy288"
        invoice_number:
          type: string
          description: Invoice number provided in request.
          example: "v1-260520225359-aa-LHy288-IN"
        invoice_date:
          type: string
          description: Invoice date provided in request.
          example: "2026-05-20"
        supplier_name:
          type: string
          nullable: true
          description: Supplier name (if provided).
          example: null
        status:
          type: string
          description: Invoice status.
          enum:
            - INVOICE_CAPTURED
            - INVOICE_UPLOADED
            - INVOICE_REJECTED
          example: "INVOICE_CAPTURED"
    InvoiceFileUploadResponse:
      type: object
      description: Response after successfully uploading an invoice file.
      properties:
        invoiceId:
          type: string
          description: Invoice identifier.
          example: "inv-260520225359-ab-XyZ123"
        orderId:
          type: string
          description: Order ID.
          example: "v1-260520225359-aa-LHy288"
        invoiceNumber:
          type: string
          description: Invoice number.
          example: "v1-260520225359-aa-LHy288-IN"
        invoiceDate:
          type: string
          description: Invoice date.
          example: "2026-05-20"
        supplierName:
          type: string
          nullable: true
          description: Supplier name (if provided during creation).
          example: null
        status:
          type: string
          description: Updated to INVOICE_UPLOADED on success.
          example: "INVOICE_UPLOADED"
    InvoiceStatusResponse:
      type: object
      description: Response containing full invoice status and metadata.
      properties:
        invoiceId:
          type: string
          description: Unique invoice identifier.
          example: "inv-260520225359-ab-XyZ123"
        orderId:
          type: string
          description: Order ID associated with this invoice.
          example: "v1-260520225359-aa-LHy288"
        invoiceNumber:
          type: string
          description: Invoice number provided during invoice creation.
          example: "v1-260520225359-aa-LHy288-IN"
        invoiceDate:
          type: string
          description: Invoice date in YYYY-MM-DD format.
          example: "2026-05-20"
        supplierName:
          type: string
          nullable: true
          description: Supplier name (if provided during invoice creation).
          example: null
        status:
          type: string
          description: Current invoice status.
          enum:
            - INVOICE_CAPTURED
            - INVOICE_UPLOADED
            - INVOICE_REJECTED
          example: "INVOICE_UPLOADED"
        createdAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp of invoice creation.
          example: "2026-05-20T22:53:59.000Z"
        updatedAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp of last status update.
          example: "2026-05-20T23:01:15.000Z"
    CreateAwbRequest:
      type: object
      description: Request body for creating an AWB record for a cross-border order.
      required:
        - awb_number
        - awb_date
      properties:
        awb_number:
          type: string
          maxLength: 100
          description: Unique AWB reference number shared by the merchant for the given AWB. Must be unique per order.
          example: "AWB-2026-001"
        awb_date:
          type: string
          pattern: "^\\d{4}-\\d{2}-\\d{2}$"
          description: |
            AWB date in YYYY-MM-DD format.
            - Cannot be in the future.
            - Cannot be before the order creation date.
          example: "2026-05-22"
        tracking_url:
          type: string
          description: Tracking URL for the shipment. Optional.
          example: "https://www.dhl.com/track?id=AWB-2026-001"
    AwbBulkCreateResponse:
      type: object
      description: Response after successfully creating one or more AWB records.
      properties:
        order_id:
          type: string
          description: Order ID.
          example: "v1-260520225359-aa-LHy288"
        total_created:
          type: integer
          description: Number of AWB records created.
          example: 2
        awb_records:
          type: array
          items:
            $ref: '#/components/schemas/AwbRecordResponse'
    AwbRecordResponse:
      type: object
      description: Individual AWB record details.
      properties:
        awb_id:
          type: string
          description: Unique AWB ID generated by Pinelabs in response to AWB creation. Use this for file upload.
          example: "awb-260522-001"
        order_id:
          type: string
          description: Associated order ID.
          example: "v1-260520225359-aa-LHy288"
        invoice_id:
          type: string
          nullable: true
          description: Associated invoice ID (if invoice exists for the order).
          example: "inv-260520225359-ab-XyZ123"
        awb_number:
          type: string
          description: Unique AWB number shared by the merchant in the request.
          example: "AWB-2026-001"
        awb_date:
          type: string
          description: AWB date in YYYY-MM-DD format.
          example: "2026-05-22"
        status:
          type: string
          enum:
            - AWB_CAPTURED
            - AWB_UPLOADED
            - AWB_REJECTED
          description: |
            Current AWB status.
            - AWB_CAPTURED — Metadata captured, file upload pending
            - AWB_UPLOADED — File uploaded successfully
            - AWB_REJECTED — Rejected by bank/payment partner
          example: "AWB_CAPTURED"
        tracking_url:
          type: string
          nullable: true
          description: Tracking URL.
          example: "https://www.dhl.com/track?id=AWB-2026-001"
        created_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp of creation.
          example: "2026-05-22T10:30:00.000Z"
        updated_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp of last update.
          example: "2026-05-22T10:30:00.000Z"
    AwbListResponse:
      type: object
      description: Response containing all AWB records for an order.
      properties:
        order_id:
          type: string
          description: Order ID.
          example: "v1-260520225359-aa-LHy288"
        invoice_id:
          type: string
          nullable: true
          description: Associated invoice ID.
          example: "inv-260520225359-ab-XyZ123"
        invoice_number:
          type: string
          nullable: true
          description: Associated invoice number.
          example: "v1-260520225359-aa-LHy288-IN"
        total:
          type: integer
          description: Total number of AWB records for this order.
          example: 2
        awb_mappings:
          type: array
          items:
            $ref: '#/components/schemas/AwbListItem'
    AwbListItem:
      type: object
      description: Individual AWB record in the list response.
      properties:
        awb_id:
          type: string
          description: Unique AWB ID generated by Pinelabs in response to AWB creation.
          example: "awb-260522-001"
        awb_number:
          type: string
          description: Unique AWB number shared by the merchant in the request.
          example: "AWB-2026-001"
        awb_date:
          type: string
          description: AWB date.
          example: "2026-05-22"
        status:
          type: string
          enum:
            - AWB_CAPTURED
            - AWB_UPLOADED
            - AWB_REJECTED
          description: Current AWB status.
          example: "AWB_UPLOADED"
        created_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp of creation.
          example: "2026-05-22T10:30:00.000Z"
        updated_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp of last update.
          example: "2026-05-22T11:00:00.000Z"
    AwbStatusResponse:
      type: object
      description: Full details of a single AWB record.
      properties:
        awb_id:
          type: string
          description: Unique AWB ID generated by Pinelabs in response to AWB creation.
          example: "awb-260522-001"
        order_id:
          type: string
          description: Order ID.
          example: "v1-260520225359-aa-LHy288"
        invoice_id:
          type: string
          nullable: true
          description: Associated invoice ID.
          example: "inv-260520225359-ab-XyZ123"
        awb_number:
          type: string
          description: Unique AWB number shared by the merchant in the request.
          example: "AWB-2026-001"
        awb_date:
          type: string
          description: AWB date.
          example: "2026-05-22"
        status:
          type: string
          enum:
            - AWB_CAPTURED
            - AWB_UPLOADED
            - AWB_REJECTED
          description: |
            Current AWB status.
            - AWB_CAPTURED — Metadata captured, file upload pending
            - AWB_UPLOADED — File uploaded successfully
            - AWB_REJECTED — Rejected by bank/payment partner
          example: "AWB_UPLOADED"
        created_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp of creation.
          example: "2026-05-22T10:30:00.000Z"
        updated_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp of last update.
          example: "2026-05-22T11:00:00.000Z"
    AwbFileUploadResponse:
      type: object
      description: Response after successfully uploading an AWB file.
      properties:
        awb_id:
          type: string
          description: AWB identifier.
          example: "awb-260522-001"
        order_id:
          type: string
          description: Order ID.
          example: "v1-260520225359-aa-LHy288"
        status:
          type: string
          enum:
            - AWB_UPLOADED
          description: Updated to AWB_UPLOADED on success.
          example: "AWB_UPLOADED"
    CreateRefundRequest:
      type: object
      description: Request body for creating a refund against a completed order.
      required:
        - merchant_order_reference
        - order_amount
      properties:
        merchant_order_reference:
          type: string
          description: '**Idempotency Key.** Unique identifier for the refund request. Duplicate requests with the same `merchant_order_reference` will return the existing refund instead of creating a new one.'
          minLength: 1
          maxLength: 50
          example: e436fefa-f0e9-4b36-ac01-3d158c31726c
        order_amount:
          type: object
          description: The refund amount details.
          required:
            - value
            - currency
          properties:
            value:
              type: integer
              description: Refund amount in the smallest currency unit (e.g., paisa for INR). Minimum ₹1 (100 paisa).
              minimum: 100
              maximum: 100000000
              example: 400
            currency:
              type: string
              description: Three-letter ISO 4217 currency code.
              example: INR
        merchant_metadata:
          $ref: '#/components/schemas/MerchantMetadata'
        products:
          type: array
          description: Array of product objects for IMEI blocking (required for partial refunds with IMEI).
          items:
            type: object
            properties:
              product_code:
                type: string
                description: Product code/SKU.
              imei_number:
                type: string
                description: IMEI number to block for partial refunds.
        destination:
          type: string
          enum: [SOURCE, WALLET]
          description: |
            Where to send the refund:
            - `SOURCE` — Refund to the original payment source (default)
            - `WALLET` — Refund to the customer's brand wallet (requires `customer.customer_id`)
        customer:
          $ref: '#/components/schemas/CustomerDetails'
          description: Required when destination is WALLET. Must include customer_id.
        split_info:
          type: object
          description: Split settlement information for refunds involving split payments.
          properties:
            split_type:
              type: string
              description: Type of split.
              example: AMOUNT
            split_details:
              type: array
              items:
                type: object
                properties:
                  split_merchant_id:
                    type: string
                    description: Unique identifier of the partner merchant.
                    example: '117230'
                  merchant_settlement_reference:
                    type: string
                    description: Merchant settlement reference for the split.
                    example: ref1
                  amount:
                    type: object
                    properties:
                      value:
                        type: integer
                        minimum: 100
                        maximum: 100000000
                        example: 21000
                      currency:
                        type: string
                        example: INR
    SplitDetailRefund:
      type: object
      properties:
        parent_order_split_settlement_id:
          type: string
          description: Unique identifier of the parent split settlement.
          example: v1-250513063000-aa-UBAnaE-ss-g
        split_merchant_id:
          type: string
          description: Unique identifier of the partner merchant.
          example: '117230'
        split_settlement_id:
          type: string
          description: Unique identifier of the refund split settlement.
          maxLength: 50
          example: v1-5312042524-aa-0YO29z-ss-a
        merchant_settlement_reference:
          type: string
          description: Merchant settlement reference.
          example: ref1
        amount:
          type: object
          properties:
            value:
              type: integer
              example: 21000
            currency:
              type: string
              example: INR
        status:
          type: string
          description: Split settlement recovery status.
          enum:
            - DO_NOT_RECOVER
            - ''
          example: DO_NOT_RECOVER
        updated_at:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the split was created.
          example: '2025-05-13T06:34:38.036Z'
    PaymentObject:
      type: object
      description: Payment details associated with the refund.
      properties:
        id:
          type: string
          description: Unique identifier of the payment.
          maxLength: 50
          example: v1-241010071949-aa-vcqtJY-cc-b
        status:
          type: string
          description: Payment status.
          enum:
            - PENDING
            - AUTHORIZED
            - CANCELLED
            - PROCESSED
            - FAILED
          example: PROCESSED
        payment_amount:
          type: object
          properties:
            value:
              type: integer
              example: 400
            currency:
              type: string
              example: INR
        payment_method:
          type: string
          description: Type of payment method.
          enum:
            - CARD
            - UPI
            - POINTS
            - NETBANKING
            - WALLET
          example: CARD
        acquirer_data:
          type: object
          properties:
            approval_code:
              type: string
              maxLength: 50
              example: ''
            acquirer_reference:
              type: string
              maxLength: 50
              example: '7285447904236780703954'
            rrn:
              type: string
              maxLength: 50
              example: ''
            is_aggregator:
              type: boolean
              example: true
            acquirer_name:
              type: string
              example: Cyber_Source_AXIS
        offer_data:
          type: object
          description: Offer details associated with the payment.
          additionalProperties: true
        created_at:
          type: string
          format: date-time
          example: '2024-10-10T07:19:49.423Z'
        updated_at:
          type: string
          format: date-time
          example: '2024-10-10T07:19:51.205Z'
    RefundResponse:
      type: object
      description: Response returned after creating a refund.
      properties:
        data:
          type: object
          properties:
            order_id:
              type: string
              description: Unique identifier of the refund order.
              maxLength: 50
              example: v1-241010071949-aa-vcqtJY
            parent_order_id:
              type: string
              description: Unique identifier of the parent order being refunded.
              maxLength: 50
              example: v1-241010055924-aa-AHbN0s
            merchant_order_reference:
              type: string
              description: Merchant reference for the refund.
              minLength: 1
              maxLength: 50
              example: e436fefa-f0e9-4b36-ac01-3d158c31726c
            type:
              type: string
              description: Payment type.
              enum:
                - CHARGE
                - REFUND
              example: REFUND
            status:
              type: string
              description: Refund status.
              enum:
                - CREATED
                - PENDING
                - PROCESSED
                - FAILED
              example: PROCESSED
            merchant_id:
              type: string
              description: Unique identifier of the merchant.
              example: '108272'
            order_amount:
              type: object
              properties:
                value:
                  type: integer
                  example: 400
                currency:
                  type: string
                  example: INR
            purchase_details:
              type: object
              properties:
                customer:
                  type: object
                  properties:
                    email_id:
                      type: string
                      maxLength: 50
                      example: '[email protected]'
                    first_name:
                      type: string
                      maxLength: 50
                      example: Kevin
                    last_name:
                      type: string
                      maxLength: 50
                      example: Bob
                    customer_id:
                      type: string
                      maxLength: 19
                      example: '123456'
                    mobile_number:
                      type: string
                      minLength: 10
                      maxLength: 20
                      example: '9876543210'
                    country_code:
                      type: string
                      maxLength: 5
                      example: '91'
                    billing_address:
                      $ref: '#/components/schemas/Address'
                    shipping_address:
                      $ref: '#/components/schemas/Address'
                    is_edit_customer_details_allowed:
                      type: boolean
                      description: Whether the customer is allowed to edit their details.
                      example: false
                merchant_metadata:
                  $ref: '#/components/schemas/MerchantMetadata'
                split_info:
                  type: object
                  properties:
                    split_type:
                      type: string
                      example: AMOUNT
                    split_details:
                      type: array
                      items:
                        $ref: '#/components/schemas/SplitDetailRefund'
            payments:
              type: array
              items:
                $ref: '#/components/schemas/PaymentObject'
            created_at:
              type: string
              format: date-time
              description: ISO 8601 UTC timestamp when the refund was created.
              example: '2024-10-10T07:19:49.424Z'
            updated_at:
              type: string
              format: date-time
              description: ISO 8601 UTC timestamp when the refund was last updated.
              example: '2024-10-10T07:19:51.205Z'
            integration_mode:
              type: string
              description: Mode of implementation.
              enum:
                - SEAMLESS
                - REDIRECT
              example: SEAMLESS
            payment_retries_remaining:
              type: integer
              description: Remaining payment retry attempts.
              example: 10
    SettlementSummary:
      type: object
      description: Individual settlement summary record.
      properties:
        total_amount:
          type: number
          description: Total settlement amount.
          example: 0.96
        actual_transaction_amount:
          type: number
          description: Total transaction amount without deductions.
          example: 2
        total_deduction_amount:
          type: number
          description: Total deduction amount.
          example: 0.08
        total_transactions_count:
          type: integer
          description: Total number of transactions settled within this UTR.
          example: 2
        last_processed_date:
          type: string
          description: Date when transactions were last processed for settlement.
          example: '2024-10-09T07:00:00'
        settled_date:
          type: string
          description: Date on which the batch was settled.
          example: '2024-10-09T10:59:46'
        utr_number:
          type: string
          description: Unique Transaction Reference generated for the settlement.
          example: '410092786849'
        programs:
          type: array
          description: Payment programs included in this settlement.
          items:
            type: string
          example:
            - UPI
        system:
          type: string
          description: Constant system identifier.
          example: PG
        bank_name:
          type: string
          description: Settlement bank name.
          minLength: 1
          maxLength: 50
          example: HDFC Bank Ltd
        bank_acc_number:
          type: string
          description: Settlement bank account number.
          minLength: 1
          maxLength: 50
          example: '04992990009595'
    ListSettlementsResponse:
      type: object
      description: Response from the Get All Settlements API.
      properties:
        data:
          type: array
          description: Array of settlement summary objects.
          items:
            $ref: '#/components/schemas/SettlementSummary'
        total_settlement_count:
          type: integer
          description: Total number of settlements matching the query.
          example: 7
        total_transactions_count:
          type: integer
          description: Total number of transactions across all settlements.
          example: 14
        total_settlement_amount:
          type: number
          description: Total settlement amount across all settlements.
          example: 10.72
    SettlementTransaction:
      type: object
      description: Individual transaction within a UTR settlement.
      properties:
        transaction_id:
          type: string
          description: Unique identifier for the transaction.
          example: v1-241008182747-aa-8JwMy9-up-k
        system:
          type: string
          description: Constant system identifier.
          example: PG
        processed_date:
          type: string
          description: Date when the transaction was processed.
          example: '2024-10-09T07:00:00'
        transaction_date:
          type: string
          description: Date of the transaction.
          example: '2024-10-08T00:00:00'
        transaction_amount:
          type: number
          description: Transaction amount.
          example: 1
        actual_transaction_amount:
          type: number
          description: Total transaction amount without deductions.
          example: 1
        total_deduction_amount:
          type: number
          description: Total deduction amount.
          example: 0.02
        settled_amount:
          type: number
          description: Settled amount for this transaction.
          example: 0
        store_address:
          type: string
          description: Address of the store (applicable for POS transactions).
          example: sec 62 noida
        acquirer_name:
          type: string
          description: Name of the acquirer.
          example: UPI_HDFC
        tid:
          type: string
          description: Terminal ID for the transaction.
          example: HDFC000028502654
        is_emi:
          type: boolean
          description: Whether the transaction was an EMI.
          example: false
        utr_number:
          type: string
          description: UTR number.
          maxLength: 50
          example: '410092786849'
        program:
          type: string
          description: Payment method used.
          example: UPI
        payout_status:
          type: string
          description: Status of the payout.
          example: Success
    SettlementByUTRResponse:
      type: object
      description: Response from the Get Settlements by UTR API.
      properties:
        utr_number:
          type: string
          description: Unique Transaction Reference provided by the bank.
          maxLength: 50
          example: '410092786849'
        bank_name:
          type: string
          description: Settlement bank name.
          example: HDFC Bank Ltd
        bank_acc_number:
          type: string
          description: Settlement bank account number.
          example: '04992990009595'
        programs:
          type: array
          items:
            type: string
          example:
            - UPI
        total_transaction_count:
          type: integer
          description: Total number of transactions in this UTR.
          example: 2
        total_transaction_amount:
          type: number
          description: Total transaction amount settled after deductions.
          example: 2
        actual_transaction_amount:
          type: number
          description: Total transaction amount without deductions.
          example: 2
        total_refund:
          type: number
          description: Total refund amount deducted.
          example: 0
        total_chargeback_recovery_amount:
          type: number
          description: Total chargeback recovery amount.
          example: 0
        total_loan_recovery_amount:
          type: number
          description: Total loan recovery amount.
          example: 0
        total_mdr_amount:
          type: number
          description: Total MDR (Merchant Discount Rate) amount.
          example: 0.04
        total_gst_amount:
          type: number
          description: Total GST amount charged.
          example: 0
        total_late_settlement_fee:
          type: number
          description: Total late settlement fee.
          example: 0
        total_settled_amount:
          type: number
          description: Total settled amount.
          example: 0.96
        total_mar_amount:
          type: number
          description: Total Merchant Acquisition Rate charged.
          example: 0
        split_fund_amount:
          type: number
          description: Split amount of the transaction.
          example: 0
        total_platform_fee:
          type: number
          description: Total platform fee charged.
          example: 0
        other_deductions:
          type: number
          description: Other deductions.
          example: 0
        additional_mdr_amount:
          type: number
          description: Additional MDR amount deducted.
          example: 0
        total_convenience_fee:
          type: number
          description: Total convenience fee charged.
          example: 0
        total_gst_on_c_c_f:
          type: number
          description: GST charged on convenience fees.
          example: 0
        total_cashback_amount:
          type: number
          description: Total cashback amount provided.
          example: 0
        total_merchant_cashback:
          type: number
          description: Total merchant cashback amount.
          example: 0
        total_merchant_convenience_fee:
          type: number
          description: Total merchant convenience fee.
          example: 0
        transactions:
          type: array
          description: Array of individual transaction details.
          items:
            $ref: '#/components/schemas/SettlementTransaction'
        pagination:
          type: object
          properties:
            total_pages:
              type: integer
              description: Total number of pages.
              example: 2
            current_page:
              type: string
              description: Current page number.
              example: '1'
    ReleaseSettlementRequest:
      type: object
      description: Request body for releasing a held split settlement.
      properties:
        release_amount:
          type: object
          description: The amount to release from the held settlement.
          required:
            - value
            - currency
          properties:
            value:
              type: integer
              description: Amount in smallest currency unit (paisa).
              minimum: 100
              maximum: 100000000
              example: 10000
            currency:
              type: string
              description: Three-letter ISO 4217 currency code.
              example: INR
    SplitSettlementDetail:
      type: object
      description: Individual split settlement detail.
      properties:
        split_merchant_id:
          type: string
          description: Unique identifier of the partner merchant.
          example: '111370'
        split_settlement_id:
          type: string
          description: Unique identifier of the split settlement.
          maxLength: 50
          example: v1-250513055632-aa-rjIIWX-ss-f
        amount:
          type: object
          properties:
            value:
              type: integer
              example: 10000
            currency:
              type: string
              example: INR
        on_hold:
          type: boolean
          description: Whether the settlement is on hold.
          example: false
        status:
          type: string
          description: Split settlement status.
          enum:
            - RELEASED
            - HOLD
          example: RELEASED
        updated_at:
          type: string
          format: date-time
          example: '2025-05-13T05:58:15.960Z'
        release_amount:
          type: object
          description: Release amount (present only when status is RELEASED).
          properties:
            value:
              type: integer
              example: 10000
            currency:
              type: string
              example: INR
    SplitPaymentObject:
      type: object
      description: Payment details in a split settlement response.
      properties:
        id:
          type: string
          maxLength: 50
          example: v1-250513055632-aa-rjIIWX-cc-a
        merchant_payment_reference:
          type: string
          maxLength: 50
          example: d1ec1a52-45fb-47be-bd7a-0e0d930f26b8
        status:
          type: string
          enum:
            - PENDING
            - AUTHORIZED
            - CANCELLED
            - PROCESSED
            - FAILED
          example: PROCESSED
        payment_amount:
          type: object
          properties:
            value:
              type: integer
              example: 21000
            currency:
              type: string
              example: INR
        payment_method:
          type: string
          enum:
            - CARD
            - UPI
            - POINTS
            - NETBANKING
            - WALLET
          example: CARD
        payment_option:
          type: object
          properties:
            card_details:
              type: object
              properties:
                card_type:
                  type: string
                  enum:
                    - DEBIT
                    - CREDIT
                  example: CREDIT
                network_name:
                  type: string
                  example: VISA
                issuer_name:
                  type: string
                  example: HDFC
                product_name:
                  type: string
                  description: Card product name.
                  example: Visa Platinum
                card_category:
                  type: string
                  example: ''
                country_code:
                  type: string
                  example: IND
                token_txn_type:
                  type: string
                  enum:
                    - ALT_TOKEN
                    - NETWORK_TOKEN
                    - ISSUER_TOKEN
                  example: ALT_TOKEN
                last4_digit:
                  type: string
                  example: '1091'
                save:
                  type: boolean
                  example: false
                is_native_otp_eligible:
                  type: boolean
                  example: true
        acquirer_data:
          type: object
          properties:
            approval_code:
              type: string
              maxLength: 50
              example: '831000'
            acquirer_reference:
              type: string
              maxLength: 50
              example: '7471158294616880303814'
            rrn:
              type: string
              maxLength: 50
              example: '513205569234'
            is_aggregator:
              type: boolean
              example: true
        capture_data:
          type: array
          description: Capture details. Present only for pre-authorized orders.
          items:
            type: object
            properties:
              merchant_capture_reference:
                type: string
                minLength: 1
                maxLength: 50
                example: 5742ef1e-4606-4c11-5757-705f4d415b6d
              capture_amount:
                type: object
                properties:
                  value:
                    type: integer
                    example: 21000
                  currency:
                    type: string
                    example: INR
              created_at:
                type: string
                format: date-time
                example: '2024-07-11T11:52:12.484105Z'
        additional_detail:
          type: object
          description: Additional details related to the payment.
          properties:
            source_ip:
              type: string
              description: IP address of the merchant.
              example: 52.66.76.63
        created_at:
          type: string
          format: date-time
          example: '2025-05-13T05:56:56.703Z'
        updated_at:
          type: string
          format: date-time
          example: '2025-05-13T05:57:10.422Z'
    SplitSettlementResponse:
      type: object
      description: Response returned after release or cancel settlement operations.
      properties:
        data:
          type: object
          properties:
            order_id:
              type: string
              maxLength: 50
              example: v1-250513055632-aa-rjIIWX
            merchant_order_reference:
              type: string
              minLength: 1
              maxLength: 50
              example: bc2ddc75-eebb-452c-a034-ba9a836ddf17
            type:
              type: string
              enum:
                - CHARGE
                - REFUND
              example: CHARGE
            status:
              type: string
              enum:
                - CREATED
                - PENDING
                - PROCESSED
                - AUTHORIZED
                - CANCELLED
                - ATTEMPTED
                - FAILED
                - FULLY_REFUNDED
                - PARTIALLY_REFUNDED
              example: PROCESSED
            merchant_id:
              type: string
              example: '111370'
            order_amount:
              type: object
              properties:
                value:
                  type: integer
                  example: 21000
                currency:
                  type: string
                  example: INR
            pre_auth:
              type: boolean
              example: false
            allowed_payment_methods:
              type: array
              items:
                type: string
                enum:
                  - CARD
                  - UPI
                  - NETBANKING
                  - POINTS
                  - WALLET
              example:
                - CARD
                - UPI
                - NETBANKING
                - POINTS
                - WALLET
            notes:
              type: string
              example: order1
            purchase_details:
              type: object
              properties:
                customer:
                  type: object
                  properties:
                    email_id:
                      type: string
                      maxLength: 50
                      example: '[email protected]'
                    first_name:
                      type: string
                      maxLength: 50
                      example: Kevin
                    last_name:
                      type: string
                      maxLength: 50
                      example: Bob
                    customer_id:
                      type: string
                      maxLength: 19
                      example: '192212'
                    country_code:
                      type: string
                      maxLength: 5
                      example: '91'
                    mobile_number:
                      type: string
                      minLength: 10
                      maxLength: 20
                      example: '9876543210'
                    billing_address:
                      $ref: '#/components/schemas/Address'
                    shipping_address:
                      $ref: '#/components/schemas/Address'
                    is_edit_customer_details_allowed:
                      type: boolean
                      example: false
                merchant_metadata:
                  $ref: '#/components/schemas/MerchantMetadata'
                split_info:
                  type: object
                  properties:
                    split_type:
                      type: string
                      example: AMOUNT
                    split_details:
                      type: array
                      items:
                        $ref: '#/components/schemas/SplitSettlementDetail'
            payments:
              type: array
              items:
                $ref: '#/components/schemas/SplitPaymentObject'
            created_at:
              type: string
              format: date-time
              example: '2025-05-13T05:56:32.655Z'
            updated_at:
              type: string
              format: date-time
              example: '2025-05-13T05:58:15.963Z'
            integration_mode:
              type: string
              enum:
                - SEAMLESS
                - REDIRECT
              example: SEAMLESS
            payment_retries_remaining:
              type: integer
              example: 9
    OfferDiscoveryRequest:
      type: object
      description: Request body for discovering offers available on a cart amount or product.
      required:
        - order_amount
      properties:
        order_amount:
          type: object
          description: An object that contains the transaction amount details.
          required:
            - value
            - currency
          properties:
            value:
              type: integer
              description: 'The transaction amount in Paisa. Minimum value: 100 (₹1). Maximum value: 100000000 (₹10 lakh).'
              example: 1200000
            currency:
              type: string
              description: Type of currency.
              example: INR
        product_details:
          type: array
          description: Mandatory for Brand EMI. An object that contains product details.
          items:
            type: object
            required:
              - product_code
            properties:
              product_code:
                type: string
                description: Unique identifier for the product.
                example: xyz
              product_amount:
                type: object
                description: Mandatory Object. An object that contains product amount.
                required:
                  - value
                  - currency
                properties:
                  value:
                    type: integer
                    description: The transaction amount in Paisa.
                    example: 1200000
                  currency:
                    type: string
                    description: Type of currency.
                    example: INR
              product_coupon_discount_amount:
                type: object
                description: An object that contains the product coupon discount amount details.
                required:
                  - value
                  - currency
                properties:
                  value:
                    type: integer
                    description: The transaction amount in Paisa.
                    example: 1200000
                  currency:
                    type: string
                    description: Type of currency.
                    example: INR
        cart_coupon_discount_amount:
          type: object
          description: An object that contains the cart coupon discount amount details.
          required:
            - value
            - currency
          properties:
            value:
              type: integer
              description: The transaction amount in Paisa.
              example: 1200000
            currency:
              type: string
              description: Type of currency.
              example: INR
        issuer:
          type: object
          description: An object that contains the issuer details.
          properties:
            bin:
              type: string
              description: 'Bank Identification Number, First 8 digits of your Card. Has to be 8 digits. Note: Passing the card information will filter the results based on the specific BIN.'
              example: '60100000'
            id:
              type: string
              description: Mandatory for EMI with Downpayment. Unique Identifier of the issuer.
              example: '2'
            name:
              type: string
              description: Mandatory for EMI with Downpayment. Name of the issuer.
              example: ICICI DC
            issuer_type:
              type: string
              description: Mandatory for EMI with Downpayment. The category of the issuer.
              enum:
                - CC_BANK
                - DC_BANK
                - CARDLESS_BANK
                - CC_NBFC
                - DC_NBFC
                - CARDLESS_NBFC
                - NTB
                - NTB_BANK
                - NTB_NBFC
              example: DC_BANK
        downpayment_details:
          type: object
          description: Mandatory for EMI with Downpayment. An object that contains the downpayment amount details.
          properties:
            downpayment_amount:
              type: object
              description: An object that contains the downpayment amount details.
              required:
                - value
                - currency
              properties:
                value:
                  type: integer
                  description: The transaction amount in Paisa.
                  example: 200000
                currency:
                  type: string
                  description: Type of currency.
                  example: INR
        payment_options:
          type: object
          description: An object that contains the details of the payment options. You can use either `card_details` or `card_token_details` as a payment option.
          properties:
            card_details:
              type: object
              description: An object that contains the card details.
              properties:
                card_number:
                  type: string
                  description: 'Card Number. Maximum length: 19 characters. Minimum length: 12 characters.'
                  example: '4000000000000000'
            card_token_details:
              type: object
              description: An object that contains the card token details.
              properties:
                token:
                  type: string
                  description: 'Either `token` or `token_id` is Mandatory. Unique identifier of the card as per the token transaction type. Minimum: 1 character. Maximum: 50 characters.'
                  example: '4000000040001001'
                token_id:
                  type: string
                  description: 'Either `token` or `token_id` is Mandatory. Unique identifier of the token in the Pine Labs database. Maximum length: 50 characters. Note: When `token_id` is included, the `customer_details` object is required.'
                  example: token-v1-250206114014-aa-nqIJoM
        customer_details:
          type: object
          description: An object that contains the customer details.
          properties:
            customer_id:
              type: string
              description: 'Mandatory when `token_id` is included in the `card_token_details` object. Unique identifier of the customer in the Pine Labs Online database. Minimum length: 1 character. Maximum length: 19 characters.'
              example: cust-v1-250709071350-aa-1M9thA
    Tenure:
      type: object
      description: An EMI tenure option.
      properties:
        tenure_id:
          type: string
          description: Tenure id in the Pine Labs Online database.
          example: '1'
        name:
          type: string
          description: The name of the tenure.
          example: 3 Months
        tenure_type:
          type: string
          description: The type of the Tenure.
          enum:
            - MONTH
          example: MONTH
        tenure_value:
          type: integer
          description: The value of the tenure.
          example: 3
        issuer_offer_parameters:
          type: array
          description: Offer parameters for this tenure.
          items:
            type: object
            properties:
              program_type:
                type: string
                description: 'Type of program. Accepted values: BANK_EMI, BRAND_EMI, MERCHANT_BANK_OFFER, MERCHANT_BRAND_OFFER, BRAND_OFFER, MY_EMI'
                example: BANK_EMI
              offer_id:
                type: string
                description: Unique identifier of the offer.
                example: '1563'
              offer_parameter_id:
                type: string
                description: Unique offer parameter identifier.
                example: '63813'
        details:
          type: array
          description: Product details array (populated for Brand EMI and Split EMI).
          items:
            type: object
            properties:
              product_code:
                type: string
                example: redmi_1
              product_display_name:
                type: string
                example: Redmi Note 14 5G
              brand_id:
                type: string
                example: '3'
              brand_name:
                type: string
                example: Xiaomi
              product_offer_parameters:
                type: array
                items:
                  type: object
                  properties:
                    program_type:
                      type: string
                      example: BRAND_OFFER
                    offer_id:
                      type: string
                      example: '309'
                    offer_parameter_id:
                      type: string
                      example: '20'
              product_amount:
                type: object
                properties:
                  currency:
                    type: string
                    example: INR
                  value:
                    type: integer
                    example: 2000000
              product_coupon_discount_amount:
                type: object
                properties:
                  currency:
                    type: string
                    example: INR
                  value:
                    type: integer
                    example: 1000
              subvention:
                type: object
                properties:
                  subvention_type:
                    type: string
                    enum:
                      - INSTANT
                      - POST
                    example: INSTANT
                  offer_type:
                    type: string
                    enum:
                      - LOW_COST
                      - NO_COST
                      - STANDARD
                    example: NO_COST
                  percentage:
                    type: number
                    example: 5
                  amount:
                    type: object
                    properties:
                      currency:
                        type: string
                        example: INR
                      value:
                        type: integer
                        example: 85714
                  breakup:
                    type: object
                    properties:
                      brand:
                        type: object
                        properties:
                          amount:
                            type: object
                            properties:
                              currency:
                                type: string
                                example: INR
                              value:
                                type: integer
                                example: 85714
                  max_amount:
                    type: object
                    properties:
                      currency:
                        type: string
                        example: INR
                      value:
                        type: integer
                  min_amount:
                    type: object
                    properties:
                      currency:
                        type: string
                        example: INR
                      value:
                        type: integer
              discount:
                type: object
                properties:
                  discount_type:
                    type: string
                    enum:
                      - INSTANT
                      - DEFERRED
                    example: INSTANT
                  discount_string:
                    type: string
                  percentage:
                    type: number
                    example: 10
                  amount:
                    type: object
                    properties:
                      currency:
                        type: string
                        example: INR
                      value:
                        type: integer
                        example: 200000
                  max_amount:
                    type: object
                    properties:
                      currency:
                        type: string
                        example: INR
                      value:
                        type: integer
                        example: 200000
                  breakup:
                    type: object
                    properties:
                      merchant:
                        type: object
                        properties:
                          amount:
                            type: object
                            properties:
                              currency:
                                type: string
                                example: INR
                              value:
                                type: integer
                                example: 100000
                      brand:
                        type: object
                        properties:
                          amount:
                            type: object
                            properties:
                              currency:
                                type: string
                                example: INR
                              value:
                                type: integer
                                example: 100000
                  discount_deferred_duration_value:
                    type: integer
                  discount_deferred_duration_type:
                    type: string
                    enum:
                      - DAY
                      - MONTH
              interest_amount:
                type: object
                properties:
                  currency:
                    type: string
                    example: INR
                  value:
                    type: integer
              interest_rate:
                type: number
                example: 16
              cart_coupon_discount_product_share:
                type: object
                properties:
                  currency:
                    type: string
                    example: INR
                  value:
                    type: integer
              downpayment_amount:
                type: object
                properties:
                  currency:
                    type: string
                    example: INR
                  value:
                    type: integer
                    example: 200000
              after_downpayment_reduced_product_amount:
                type: object
                properties:
                  currency:
                    type: string
                    example: INR
                  value:
                    type: integer
                    example: 200000
              bundle_id:
                type: string
                description: Unique identifier of the bundle offer. Returned only for SKUs configured for bundled offers.
                example: BUNDLE_002_OE3
        discount:
          type: object
          description: Tenure-level discount details.
          properties:
            discount_type:
              type: string
              enum:
                - INSTANT
                - DEFERRED
              example: INSTANT
            discount_string:
              type: string
            percentage:
              type: number
              example: 10
            amount:
              type: object
              properties:
                currency:
                  type: string
                  example: INR
                value:
                  type: integer
                  example: 200000
            max_amount:
              type: object
              properties:
                currency:
                  type: string
                  example: INR
                value:
                  type: integer
                  example: 400000
            breakup:
              type: object
              properties:
                merchant:
                  type: object
                  properties:
                    amount:
                      type: object
                      properties:
                        currency:
                          type: string
                          example: INR
                        value:
                          type: integer
                          example: 100000
                brand:
                  type: object
                  properties:
                    amount:
                      type: object
                      properties:
                        currency:
                          type: string
                          example: INR
                        value:
                          type: integer
                          example: 100000
                issuer:
                  type: object
                  properties:
                    amount:
                      type: object
                      properties:
                        currency:
                          type: string
                          example: INR
                        value:
                          type: integer
                dealer:
                  type: object
                  properties:
                    amount:
                      type: object
                      properties:
                        currency:
                          type: string
                          example: INR
                        value:
                          type: integer
            discount_deferred_duration_value:
              type: integer
            discount_deferred_duration_type:
              type: string
              enum:
                - DAY
                - MONTH
        auth_amount:
          type: object
          properties:
            currency:
              type: string
              example: INR
            value:
              type: integer
              example: 1200000
        loan_amount:
          type: object
          properties:
            currency:
              type: string
              example: INR
            value:
              type: integer
              example: 1200000
        total_discount_amount:
          type: object
          properties:
            currency:
              type: string
              example: INR
            value:
              type: integer
              example: 200000
        net_payment_amount:
          type: object
          properties:
            currency:
              type: string
              example: INR
            value:
              type: integer
              example: 1232139
        monthly_emi_amount:
          type: object
          properties:
            currency:
              type: string
              example: INR
            value:
              type: integer
              example: 410713
        total_emi_amount:
          type: object
          properties:
            currency:
              type: string
              example: INR
            value:
              type: integer
              example: 1232139
        interest_amount:
          type: object
          properties:
            currency:
              type: string
              example: INR
            value:
              type: integer
              example: 32139
        total_subvention_amount:
          type: object
          properties:
            currency:
              type: string
              example: INR
            value:
              type: integer
        split_emi_display_name:
          type: string
          description: Name of the split EMI. Returned only if the brand provides a display name.
          example: Apple Live
        split_emi_amount:
          type: object
          properties:
            currency:
              type: string
              example: INR
            value:
              type: integer
              example: 2358490
        split_emi_percentage:
          type: number
          description: Interest rate percentage for the split.
          example: 25
        interest_rate_percentage:
          type: number
          description: Interest rate percentage for the tenure.
          example: 16
        processing_fee_details:
          type: object
          description: Processing fee details.
          properties:
            percentage:
              type: number
              example: 0
            amount:
              type: object
              properties:
                currency:
                  type: string
                  example: INR
                value:
                  type: integer
                  example: 19900
        processing_fee_amount:
          type: object
          properties:
            currency:
              type: string
              example: INR
            value:
              type: integer
              example: 19900
        convenience_fee_breakdown:
          type: object
          description: Convenience fee breakdown details.
          properties:
            fee_calculated_on_amount:
              type: object
              properties:
                currency:
                  type: string
                  example: INR
                value:
                  type: integer
            fee_amount:
              type: object
              properties:
                currency:
                  type: string
                  example: INR
                value:
                  type: integer
                  example: 100
            tax_amount:
              type: object
              properties:
                currency:
                  type: string
                  example: INR
                value:
                  type: integer
                  example: 19
            additional_fee_amount:
              type: object
              properties:
                currency:
                  type: string
                  example: INR
                value:
                  type: integer
                  example: 10
            maximum_fee_amount:
              type: object
              properties:
                currency:
                  type: string
                  example: INR
                value:
                  type: integer
                  example: 99999999
            applicable_fee_amount:
              type: object
              properties:
                currency:
                  type: string
                  example: INR
                value:
                  type: integer
                  example: 129
            subvented_fee_amount:
              type: object
              properties:
                currency:
                  type: string
                  example: INR
                value:
                  type: integer
        cart_coupon_discount_amount:
          type: object
          properties:
            currency:
              type: string
              example: INR
            value:
              type: integer
        total_coupon_discount:
          type: object
          properties:
            currency:
              type: string
              example: INR
            value:
              type: integer
        total_down_payment_amount:
          type: object
          properties:
            currency:
              type: string
              example: INR
            value:
              type: integer
              example: 200000
        downpayment_details:
          type: object
          description: Down payment details within tenure.
          properties:
            downpayment_amount:
              type: object
              properties:
                currency:
                  type: string
                  example: INR
                value:
                  type: integer
                  example: 200000
        emi_type:
          type: string
          description: Type of EMI.
          enum:
            - LOW_COST
            - NO_COST
            - STANDARD
          example: STANDARD
    IssuerOffer:
      type: object
      description: Issuer with available EMI offers.
      properties:
        id:
          type: string
          description: Unique identifier of the issuer id in the Pine Labs Online database.
          example: '23'
        name:
          type: string
          description: Name of the Issuer.
          example: INDUSIND CC
        display_name:
          type: string
          description: Name of the issuer offering the offer.
          example: INDUSIND
        issuer_type:
          type: string
          description: The type of the Issuer offering the offer.
          enum:
            - CC_BANK
            - DC_BANK
            - CARDLESS_BANK
            - CC_NBFC
            - DC_NBFC
            - CARDLESS_NBFC
            - NTB
            - NTB_BANK
            - NTB_NBFC
          example: CC_BANK
        priority:
          type: integer
          description: The priority of the issuer providing the offer.
          example: 1
        tenures:
          type: array
          description: Available EMI tenures for this issuer.
          items:
            $ref: '#/components/schemas/Tenure'
        issuer_data:
          type: object
          description: Issuer-specific data including OTP and consent details.
          properties:
            otp_length:
              type: integer
              description: Length of the OTP.
              example: 5
            otp_time_in_sec:
              type: integer
              description: OTP validity time in seconds.
              example: 180
            otp_retry_count:
              type: integer
              description: Maximum OTP retry count.
              example: 5
            is_consent_page_required:
              type: boolean
              description: Whether consent page is required.
              example: true
            consent_data:
              type: string
              description: Transaction consent data (HTML).
            terms_and_conditions:
              type: string
              description: Transaction terms and conditions.
              example: Sample TNC
            show_key_fact_statement:
              type: boolean
              description: Whether key fact statement needs to be displayed.
              example: true
            auth_type:
              type: string
              description: Authentication type.
              enum:
                - PENNY_DROP
                - OTP
              example: PENNY_DROP
            penny_transaction_amount:
              type: object
              properties:
                currency:
                  type: string
                  example: INR
                value:
                  type: integer
                  example: 100
            is_tokenized_transaction_supported:
              type: boolean
              description: Whether tokenized transactions are supported.
              example: false
            pan_number_last_digit_count:
              type: integer
              description: Last digit count of PAN.
              example: 3
            offer_validation_parameters_required:
              type: string
              description: Parameters required in offer validation API.
    OfferDiscoveryResponse:
      type: object
      description: Response containing discovered offers with EMI details.
      properties:
        issuers:
          type: array
          description: List of issuers with available offers.
          items:
            $ref: '#/components/schemas/IssuerOffer'
    OfferDiscoveryResponseV2:
      type: object
      description: Response containing discovered offers with entity-based structure (V2).
      properties:
        entities:
          type: array
          description: List of Entities offering the Offer.
          items:
            $ref: '#/components/schemas/OfferDiscoveryEntityDetailV2'
    OfferDiscoveryEntityDetailV2:
      type: object
      description: Entity offering the Offer (V2).
      properties:
        entity_id:
          type: string
          description: Entity Id.
          example: '37'
        entity_name:
          type: string
          description: Entity Name.
          example: UPI
        entity_display_name:
          type: string
          description: Display Name of the Entity offering the Offer.
          example: UPI
        entity_type:
          type: string
          description: Type of Entity.
          enum:
            - UPI
            - CC_BANK
            - DC_BANK
            - CARDLESS_BANK
            - CC_NBFC
            - DC_NBFC
            - CARDLESS_NBFC
            - NTB
            - NTB_BANK
            - NTB_NBFC
          example: UPI
        entity_priority:
          type: integer
          description: Priority of the Issuer offering the Offer.
          example: 26
        tenures:
          type: array
          description: List of Tenures available for the Offer.
          items:
            $ref: '#/components/schemas/EntityTenureDetail'
        entity_data:
          $ref: '#/components/schemas/EntityDataV2'
    EntityDataV2:
      type: object
      description: Data related to the Entity (OTP, consent, etc.).
      properties:
        issuer_data:
          $ref: '#/components/schemas/IssuerDataV2'
    IssuerDataV2:
      type: object
      description: Data related to the Issuer (OTP, consent, etc.).
      properties:
        otp_length:
          type: integer
          description: Length of the OTP.
          example: 6
        otp_time_in_sec:
          type: integer
          description: OTP validity time in seconds.
          example: 30
        otp_retry_count:
          type: integer
          description: Maximum retry count for OTP.
          example: 3
        is_consent_page_required:
          type: boolean
          description: Whether consent page is required.
          example: false
        consent_data:
          type: string
          description: Consent data for the transaction.
          example: Sample Consent
        terms_and_conditions:
          type: string
          description: Terms and conditions data for the transaction.
          example: Sample TNC
        show_key_fact_statement:
          type: boolean
          description: Whether the key fact statement should be shown.
          example: false
        auth_type:
          type: string
          description: Authentication type (PENNY_DROP or OTP).
          enum:
            - PENNY_DROP
            - OTP
          example: OTP
        penny_transaction_amount:
          $ref: '#/components/schemas/Amount'
        is_tokenized_transaction_supported:
          type: boolean
          description: Whether tokenized transactions are supported.
          example: false
        pan_number_last_digit_count:
          type: string
          description: Last digit count of PAN.
          example: '3'
        offer_validation_parameters_required:
          type: array
          description: >
            Params required in offer validation API
            (card_details__registered_mobile_number, cardless_details__registered_mobile_number,
            cardless_details__pan_last_digits, card_details__card_number,
            card_token_details__token, card_token_details__token_id).
            __(double underscore) means nested property of parent object.
          items:
            type: string
          example:
            - card_details__registered_mobile_number
            - card_details__card_number
    EntityTenureDetail:
      type: object
      description: Tenure details available for the Offer.
      properties:
        tenure_id:
          type: string
          description: The ID of the Tenure.
          example: '7'
        name:
          type: string
          description: The name of the Tenure.
          example: No EMI Only Cashback
        tenure_type:
          type: string
          description: Type of the tenure.
          example: MONTH
        tenure_value:
          type: integer
          description: The value of the tenure.
          example: 0
        issuer_offer_parameters:
          type: array
          description: List of Offer Schemes for the tenure.
          items:
            $ref: '#/components/schemas/OfferSchemeV2'
        details:
          type: array
          description: Product Offer details for the tenure.
          items:
            $ref: '#/components/schemas/EMIProductDetailV2'
        offers:
          type: array
          description: List of offers given at the particular tenure.
          items:
            $ref: '#/components/schemas/TenureOffer'
        discount:
          $ref: '#/components/schemas/DiscountDetailV2'
        loan_amount:
          $ref: '#/components/schemas/Amount'
        auth_amount:
          $ref: '#/components/schemas/Amount'
        total_discount_amount:
          $ref: '#/components/schemas/Amount'
        net_payment_amount:
          $ref: '#/components/schemas/Amount'
        monthly_emi_amount:
          $ref: '#/components/schemas/Amount'
        total_emi_amount:
          $ref: '#/components/schemas/Amount'
        interest_amount:
          $ref: '#/components/schemas/Amount'
        advance_emi_months:
          type: array
          description: List of months for which EMI is paid in advance.
          items:
            type: integer
        split_emi_display_name:
          type: string
          description: Split EMI display name to be shown in the UI if split EMI is applicable and provided by the brand.
        split_emi_amount:
          $ref: '#/components/schemas/Amount'
        split_emi_percentage:
          type: number
          format: double
          description: Split EMI percentage for the tenure.
        total_subvention_amount:
          $ref: '#/components/schemas/Amount'
        interest_rate_percentage:
          type: number
          format: double
          description: Interest rate percentage for the tenure.
        processing_fee_details:
          $ref: '#/components/schemas/ProcessingFeeDetailsV2'
        total_down_payment_amount:
          $ref: '#/components/schemas/Amount'
        dealer_charges_percentage:
          type: number
          format: double
          description: Dealer charges percentage for NBFC.
        net_dealer_disbursement_amount:
          $ref: '#/components/schemas/Amount'
        convenience_fee_breakdown:
          $ref: '#/components/schemas/ConvenienceFeeBreakdownV2'
        cart_coupon_discount_amount:
          $ref: '#/components/schemas/Amount'
        total_coupon_discount:
          $ref: '#/components/schemas/Amount'
        downpayment_details:
          $ref: '#/components/schemas/DownpaymentAmountDetail'
        emi_type:
          type: string
          description: EMI type for the tenure.
          enum:
            - LOW_COST
            - NO_COST
            - STANDARD
          example: STANDARD
    TenureOffer:
      type: object
      description: Offer details at a particular tenure.
      properties:
        offer_category:
          type: string
          description: Category label for the offer.
        offer_ranking:
          type: integer
          description: Ranking for the offer.
          example: 1
        issuer_offer_parameters:
          type: array
          description: List of Offer Schemes for the tenure.
          items:
            $ref: '#/components/schemas/OfferSchemeV2'
        details:
          type: array
          description: Per-product offer details under this offer.
          items:
            $ref: '#/components/schemas/OfferProductDetailV2'
        discount:
          $ref: '#/components/schemas/DiscountDetailV2'
        cashback:
          $ref: '#/components/schemas/CashbackDetailV2'
        loan_amount:
          $ref: '#/components/schemas/Amount'
        auth_amount:
          $ref: '#/components/schemas/Amount'
        total_discount_amount:
          $ref: '#/components/schemas/Amount'
        total_cashback_amount:
          $ref: '#/components/schemas/Amount'
        net_payment_amount:
          $ref: '#/components/schemas/Amount'
        monthly_emi_amount:
          $ref: '#/components/schemas/Amount'
        total_emi_amount:
          $ref: '#/components/schemas/Amount'
        interest_amount:
          $ref: '#/components/schemas/Amount'
        advance_emi_months:
          type: array
          description: List of months for which EMI is paid in advance.
          items:
            type: integer
        split_emi_display_name:
          type: string
          description: Split EMI display name to be shown in the UI if split EMI is applicable and provided by the brand.
        split_emi_amount:
          $ref: '#/components/schemas/Amount'
        split_emi_percentage:
          type: number
          format: double
          description: Split EMI percentage for the tenure.
        total_subvention_amount:
          $ref: '#/components/schemas/Amount'
        interest_rate_percentage:
          type: number
          format: double
          description: Interest rate percentage for the tenure.
          example: 0.0
        processing_fee_details:
          $ref: '#/components/schemas/ProcessingFeeDetailsV2'
        total_down_payment_amount:
          $ref: '#/components/schemas/Amount'
        dealer_charges_percentage:
          type: number
          format: double
          description: Dealer charges percentage for NBFC.
        net_dealer_disbursement_amount:
          $ref: '#/components/schemas/Amount'
        convenience_fee_breakdown:
          $ref: '#/components/schemas/ConvenienceFeeBreakdownV2'
        cart_coupon_discount_amount:
          $ref: '#/components/schemas/Amount'
        total_coupon_discount:
          $ref: '#/components/schemas/Amount'
        downpayment_details:
          $ref: '#/components/schemas/DownpaymentAmountDetail'
        emi_type:
          type: string
          description: EMI type for the tenure.
          enum:
            - LOW_COST
            - NO_COST
            - STANDARD
          example: STANDARD
        is_mobile_number_required_for_eligibility:
          type: boolean
          description: Mobile number is required for velocity check or not.
          example: false
        is_offer_auto_applied:
          type: boolean
          description: Is this particular offer going to be auto applied at the UI.
          example: true
        offer_eligibility_channel_list:
          type: array
          description: Channels through which offer is supported.
          items:
            type: string
            enum:
              - COLLECT
              - INTENT
    OfferSchemeV2:
      type: object
      description: Offer scheme parameters.
      properties:
        program_type:
          type: string
          description: Type of the program.
          enum:
            - BRAND_EMI
            - BANK_EMI
            - MERCHANT_BRAND_OFFER
            - MERCHANT_BANK_OFFER
            - BRAND_OFFER
            - MY_EMI
          example: MERCHANT_BANK_OFFER
        offer_id:
          type: string
          description: The Offer ID.
          example: '6037'
        offer_parameter_id:
          type: string
          description: The Offer Parameter ID of the Offer.
          example: v1-37-10-7-5-6037-287151
    EMIProductDetailV2:
      type: object
      description: Product Offer details for the tenure.
      properties:
        product_code:
          type: string
          description: Product Id of the Product.
          example: ICB_BOSCH_001
        product_display_name:
          type: string
          description: Product Display name.
        brand_id:
          type: string
          description: Brand ID of the Product.
          example: '7'
        product_offer_parameters:
          type: array
          description: List of Product Offer Scheme for the Product EMI Detail.
          items:
            $ref: '#/components/schemas/OfferSchemeV2'
        product_amount:
          $ref: '#/components/schemas/Amount'
        product_coupon_discount_amount:
          $ref: '#/components/schemas/Amount'
        subvention:
          $ref: '#/components/schemas/SubventionDetailV2'
        discount:
          $ref: '#/components/schemas/DiscountDetailV2'
        brand_name:
          type: string
          description: Name of the brand.
        interest_amount:
          $ref: '#/components/schemas/Amount'
        interest_rate:
          type: number
          format: double
          description: Interest rate applied on the product.
          example: 0.0
        cart_coupon_discount_product_share:
          $ref: '#/components/schemas/Amount'
        downpayment_amount:
          $ref: '#/components/schemas/Amount'
        after_downpayment_reduced_product_amount:
          $ref: '#/components/schemas/Amount'
    OfferProductDetailV2:
      type: object
      description: Per-product offer details under a TenureOffer.
      properties:
        product_code:
          type: string
          description: Product Id of the Product.
          example: ICB_BOSCH_001
        product_display_name:
          type: string
          description: Product Display name.
        brand_id:
          type: string
          description: Brand ID of the Product.
          example: '7'
        product_offer_parameters:
          type: array
          description: List of Product Offer Scheme for the Product Offer Detail.
          items:
            $ref: '#/components/schemas/OfferSchemeV2'
        product_amount:
          $ref: '#/components/schemas/Amount'
        product_coupon_discount_amount:
          $ref: '#/components/schemas/Amount'
        subvention:
          $ref: '#/components/schemas/SubventionDetailV2'
        discount:
          $ref: '#/components/schemas/DiscountDetailV2'
        brand_name:
          type: string
          description: Name of the brand.
        interest_amount:
          $ref: '#/components/schemas/Amount'
        interest_rate:
          type: number
          format: double
          description: Interest rate applied on the product.
          example: 0.0
        cart_coupon_discount_product_share:
          $ref: '#/components/schemas/Amount'
        downpayment_amount:
          $ref: '#/components/schemas/Amount'
        after_downpayment_reduced_product_amount:
          $ref: '#/components/schemas/Amount'
    SubventionDetailV2:
      type: object
      description: Subvention details for the product.
      properties:
        subvention_type:
          type: string
          description: Type of the subvention.
          enum:
            - INSTANT
            - POST
          example: INSTANT
        offer_type:
          type: string
          description: Type of the EMI offer.
          enum:
            - LOW_COST
            - NO_COST
            - STANDARD
          example: NO_COST
        percentage:
          type: number
          format: double
          description: Subvention percentage offered by the offering entity.
        amount:
          $ref: '#/components/schemas/Amount'
        breakup:
          $ref: '#/components/schemas/BreakupV2'
        max_amount:
          $ref: '#/components/schemas/Amount'
        min_amount:
          $ref: '#/components/schemas/Amount'
    DiscountDetailV2:
      type: object
      description: Discount details.
      properties:
        discount_type:
          type: string
          description: Type of discount.
          enum:
            - INSTANT
            - DEFERRED
          example: INSTANT
        discount_string:
          type: string
          description: Discount string offered by the offering Entity.
        percentage:
          type: number
          format: double
          description: Discount percentage offered by the offering entity.
          example: 10.0
        amount:
          $ref: '#/components/schemas/Amount'
        max_amount:
          $ref: '#/components/schemas/Amount'
        min_amount:
          $ref: '#/components/schemas/Amount'
        discount_deferred_duration_value:
          type: integer
          description: The value of the discount deferred duration.
        discount_deferred_duration_type:
          type: string
          description: Type of the tenure for the discount.
          enum:
            - DAY
            - MONTH
        breakup:
          $ref: '#/components/schemas/BreakupV2'
    CashbackDetailV2:
      type: object
      description: Cashback details applicable for the offer.
      properties:
        cashback_type:
          type: string
          description: Type of cashback.
          enum:
            - INSTANT
            - DEFERRED
        percentage:
          type: number
          format: double
          description: Cashback percentage offered by the offering entity.
        amount:
          $ref: '#/components/schemas/Amount'
        max_amount:
          $ref: '#/components/schemas/Amount'
        min_amount:
          $ref: '#/components/schemas/Amount'
        breakup:
          $ref: '#/components/schemas/BreakupV2'
    BreakupV2:
      type: object
      description: Breakup details.
      properties:
        merchant:
          $ref: '#/components/schemas/BreakupDetailV2'
        issuer:
          $ref: '#/components/schemas/BreakupDetailV2'
        brand:
          $ref: '#/components/schemas/BreakupDetailV2'
        dealer:
          $ref: '#/components/schemas/BreakupDetailV2'
    BreakupDetailV2:
      type: object
      description: Breakup detail for an entity.
      properties:
        amount:
          $ref: '#/components/schemas/Amount'
    ProcessingFeeDetailsV2:
      type: object
      description: Processing fee details for the tenure.
      properties:
        percentage:
          type: number
          format: double
          description: Processing fee percentage offered by the offering entity.
        amount:
          $ref: '#/components/schemas/Amount'
    ConvenienceFeeBreakdownV2:
      type: object
      description: Convenience fee breakdown details.
      properties:
        fee_calculated_on_amount:
          $ref: '#/components/schemas/Amount'
        fee_amount:
          $ref: '#/components/schemas/Amount'
        tax_amount:
          $ref: '#/components/schemas/Amount'
        additional_fee_amount:
          $ref: '#/components/schemas/Amount'
        maximum_fee_amount:
          $ref: '#/components/schemas/Amount'
        applicable_fee_amount:
          $ref: '#/components/schemas/Amount'
        subvented_fee_amount:
          $ref: '#/components/schemas/Amount'
    DownpaymentAmountDetail:
      type: object
      description: Down payment amount detail.
      properties:
        downpayment_amount:
          $ref: '#/components/schemas/Amount'
    OfferData:
      type: object
      description: An object that contains details related to the offer. **Required for CREDIT_EMI, DEBIT_EMI, CARDLESS_EMI, and UPI payment methods.**
      properties:
        offer_details:
          type: object
          description: An object that contains details related to the offer entity/issuer.
          properties:
            id:
              type: string
              description: The ID of the Issuer offering the offer. Optional for UPI.
            name:
              type: string
              description: The name of the Issuer offering the offer. Optional for UPI.
            display_name:
              type: string
              description: The display name of the Issuer.
            issuer_type:
              type: string
              description: The type of the Issuer offering the offer.<br><br>Example:<ul><li>`CC_BANK`<li>`DC_BANK`<li>`UPI`
            priority:
              type: string
              description: The priority of the Issuer offering the offer.
            tenure:
              type: object
              description: The EMI tenure details related to the offer.
              properties:
                tenure_id:
                  type: string
                  description: The ID of the Tenure.
                name:
                  type: string
                  description: The name of the Tenure.
                tenure_type:
                  type: string
                  description: Type of the tenure.
                tenure_value:
                  type: integer
                  format: int32
                  description: The value of the tenure.
                offer_ranking:
                  type: integer
                  description: Sort ranking for the offer.
                is_mobile_number_required_for_eligibility:
                  type: boolean
                  description: Mobile number is required for velocity check or not.
                is_offer_auto_applied:
                  type: boolean
                  description: Is this particular offer going to be auto applied at the UI.
                issuer_offer_parameters:
                  type: array
                  description: List of Offer Schemes for the tenure.
                  items:
                    type: object
                    properties:
                      program_type:
                        type: string
                        description: 'Type of program. Accepted values: BANK_EMI, BRAND_EMI, MERCHANT_BANK_OFFER, MERCHANT_BRAND_OFFER, BRAND_OFFER, MY_EMI'
                      offer_id:
                        type: string
                        description: Unique identifier of the offer.
                      offer_parameter_id:
                        type: string
                        description: Unique offer parameter identifier.
                details:
                  type: array
                  description: An array of objects that contains the product details.
                  items:
                    type: object
                    properties:
                      product_code:
                        type: string
                        description: 'Unique Product identifier of the product.<br><b>Example: `redmi_1`'
                      product_display_name:
                        type: string
                        description: 'Name of the Product.<br><br>Example: `Oneplus 13R`'
                      brand_id:
                        type: string
                        description: 'Unique brand identifier of the product.<br><br>Example: `3`'
                      product_offer_parameters:
                        type: array
                        description: An array of objects that contains the product offer schemes for the product EMI details.
                        items:
                          type: object
                          properties:
                            program_type:
                              type: string
                              description: Type of the Program.<br><br>Accepted values:<ul><li>`BRAND_EMI`</li><li>`BANK_EMI`</li><li>`MERCHANT_BRAND_OFFER`</li><li>`MERCHANT_BANK_OFFER`</li><li>`BRAND_OFFER`</li><li>`MY_EMI`</ul></li>
                            offer_id:
                              type: string
                              description: 'Unique identifier of the offer.<br><br>Example: `309`'
                            offer_parameter_id:
                              type: string
                              description: 'Unique offer parameter identifier.<br><br>Example: `20`'
                      product_amount:
                        type: object
                        description: An object that contains the product amount details.
                        required:
                          - currency
                          - value
                        properties:
                          currency:
                            type: string
                            description: 'Type of currency.<br><br>Example: `INR`'
                          value:
                            type: integer
                            format: int32
                            description: The transaction amount in Paisa.
                      product_coupon_discount_amount:
                        type: object
                        description: An object that contains the product coupon discount amount details.
                        required:
                          - currency
                          - value
                        properties:
                          currency:
                            type: string
                          value:
                            type: integer
                            format: int32
                      subvention:
                        type: object
                        description: An object that contains the subvention details.
                        properties:
                          subvention_type:
                            type: string
                          percentage:
                            type: string
                          amount:
                            type: object
                            required:
                              - currency
                              - value
                            properties:
                              currency:
                                type: string
                              value:
                                type: integer
                                format: int32
                          breakup:
                            type: object
                            properties:
                              brand:
                                type: object
                                properties:
                                  amount:
                                    type: object
                                    required:
                                      - currency
                                      - value
                                    properties:
                                      currency:
                                        type: string
                                      value:
                                        type: integer
                                        format: int32
                              merchant:
                                type: object
                                properties:
                                  amount:
                                    type: object
                                    required:
                                      - currency
                                      - value
                                    properties:
                                      currency:
                                        type: string
                                      value:
                                        type: integer
                                        format: int32
                              issuer:
                                type: object
                                properties:
                                  amount:
                                    type: object
                                    required:
                                      - currency
                                      - value
                                    properties:
                                      currency:
                                        type: string
                                      value:
                                        type: integer
                                        format: int32
                              dealer:
                                type: object
                                properties:
                                  amount:
                                    type: object
                                    required:
                                      - currency
                                      - value
                                    properties:
                                      currency:
                                        type: string
                                      value:
                                        type: integer
                                        format: int32
                          max_amount:
                            type: object
                            required:
                              - currency
                              - value
                            properties:
                              currency:
                                type: string
                              value:
                                type: integer
                                format: int32
                          min_amount:
                            type: object
                            required:
                              - currency
                              - value
                            properties:
                              currency:
                                type: string
                              value:
                                type: integer
                                format: int32
                      discount:
                        type: object
                        description: An object that contains the product discount details.
                        properties:
                          discount_type:
                            type: string
                            description: Type of discount.<br><br>Possible values:<ul><li>`INSTANT`</li><li>`DEFERRED`</ul></li>
                          discount_string:
                            type: string
                          percentage:
                            type: number
                            format: double
                          amount:
                            type: string
                          max_amount:
                            type: object
                            required:
                              - currency
                              - value
                            properties:
                              currency:
                                type: string
                              value:
                                type: integer
                                format: int32
                          min_amount:
                            type: object
                            required:
                              - currency
                              - value
                            properties:
                              currency:
                                type: string
                              value:
                                type: integer
                                format: int32
                          discount_deferred_duration_value:
                            type: string
                          discount_deferred_duration_type:
                            type: string
                            description: Possible values:<ul><li>`DAY`</li><li>`MONTH`</ul></li>
                          breakup:
                            type: object
                            properties:
                              brand:
                                type: object
                                properties:
                                  amount:
                                    type: object
                                    required:
                                      - currency
                                      - value
                                    properties:
                                      currency:
                                        type: string
                                      value:
                                        type: integer
                                        format: int32
                              merchant:
                                type: object
                                properties:
                                  amount:
                                    type: object
                                    required:
                                      - currency
                                      - value
                                    properties:
                                      currency:
                                        type: string
                                      value:
                                        type: integer
                                        format: int32
                              issuer:
                                type: object
                                properties:
                                  amount:
                                    type: object
                                    required:
                                      - currency
                                      - value
                                    properties:
                                      currency:
                                        type: string
                                      value:
                                        type: integer
                                        format: int32
                              dealer:
                                type: object
                                properties:
                                  amount:
                                    type: object
                                    required:
                                      - currency
                                      - value
                                    properties:
                                      currency:
                                        type: string
                                      value:
                                        type: integer
                                        format: int32
                      brand_name:
                        type: string
                        description: 'Name of the Brand.<br><br>Example: `Oneplus`'
                      interest_amount:
                        type: object
                        required:
                          - currency
                          - value
                        properties:
                          currency:
                            type: string
                          value:
                            type: integer
                            format: int32
                      downpayment_amount:
                        type: object
                        required:
                          - currency
                          - value
                        properties:
                          currency:
                            type: string
                          value:
                            type: integer
                            format: int32
                      after_downpayment_reduced_product_amount:
                        type: object
                        required:
                          - currency
                          - value
                        properties:
                          currency:
                            type: string
                          value:
                            type: integer
                            format: int32
                      interest_rate:
                        type: string
                        description: 'Rate of interest applied on the product.<br><br>Example: `19`'
                      cart_coupon_discount_product_share:
                        type: object
                        required:
                          - currency
                          - value
                        properties:
                          currency:
                            type: string
                          value:
                            type: integer
                            format: int32
                      bundle_id:
                        type: string
                        description: 'Unique identifier of the bundle offer in Pine Labs Online Database.<br><br>Example: `BUNDLE_002_OE3`'
                discount:
                  type: string
                  description: Discount details applicable for the tenure.
                auth_amount:
                  type: object
                  required:
                    - currency
                    - value
                  properties:
                    currency:
                      type: string
                    value:
                      type: integer
                      format: int32
                loan_amount:
                  type: object
                  required:
                    - currency
                    - value
                  properties:
                    currency:
                      type: string
                    value:
                      type: integer
                      format: int32
                total_discount_amount:
                  type: object
                  required:
                    - currency
                    - value
                  properties:
                    currency:
                      type: string
                    value:
                      type: integer
                      format: int32
                net_payment_amount:
                  type: object
                  required:
                    - currency
                    - value
                  properties:
                    currency:
                      type: string
                    value:
                      type: integer
                      format: int32
                monthly_emi_amount:
                  type: object
                  required:
                    - currency
                    - value
                  properties:
                    currency:
                      type: string
                    value:
                      type: integer
                      format: int32
                total_emi_amount:
                  type: object
                  required:
                    - currency
                    - value
                  properties:
                    currency:
                      type: string
                    value:
                      type: integer
                      format: int32
                intrest_amount:
                  type: object
                  required:
                    - currency
                    - value
                  properties:
                    currency:
                      type: string
                    value:
                      type: integer
                      format: int32
                total_subvention_amount:
                  type: string
                  description: Total subvention amount for the tenure.
                interest_rate_percentage:
                  type: integer
                  format: int32
                processing_fee_details:
                  type: object
                  properties:
                    amount:
                      type: object
                      required:
                        - currency
                        - value
                      properties:
                        currency:
                          type: string
                        value:
                          type: integer
                          format: int32
                processing_fee_amount:
                  type: object
                  required:
                    - currency
                    - value
                  properties:
                    currency:
                      type: string
                    value:
                      type: integer
                      format: int32
                emi_type:
                  type: string
                  description: EMI type for the tenure.<ul><li>`LOW_COST`<li>`NO_COST`<li>`STANDARD`
                split_emi_display_name:
                  type: string
                split_emi_amount:
                  type: object
                  required:
                    - currency
                    - value
                  properties:
                    currency:
                      type: string
                    value:
                      type: integer
                      format: int32
                split_emi_percentage:
                  type: number
                  format: double
                convenience_fee_breakdown:
                  type: object
                  properties:
                    fee_calculated_on_amount:
                      type: object
                      required:
                        - currency
                        - value
                      properties:
                        currency:
                          type: string
                        value:
                          type: integer
                          format: int32
                    fee_amount:
                      type: object
                      required:
                        - currency
                        - value
                      properties:
                        currency:
                          type: string
                        value:
                          type: integer
                          format: int32
                    tax_amount:
                      type: object
                      required:
                        - currency
                        - value
                      properties:
                        currency:
                          type: string
                        value:
                          type: integer
                          format: int32
                    additional_fee_amount:
                      type: object
                      required:
                        - currency
                        - value
                      properties:
                        currency:
                          type: string
                        value:
                          type: integer
                          format: int32
                    maximum_fee_amount:
                      type: object
                      required:
                        - currency
                        - value
                      properties:
                        currency:
                          type: string
                        value:
                          type: integer
                          format: int32
                    applicable_fee_amount:
                      type: object
                      required:
                        - currency
                        - value
                      properties:
                        currency:
                          type: string
                        value:
                          type: integer
                          format: int32
                    subvented_fee_amount:
                      type: object
                      required:
                        - currency
                        - value
                      properties:
                        currency:
                          type: string
                        value:
                          type: integer
                          format: int32
                cart_coupon_discount_amount:
                  type: object
                  required:
                    - currency
                    - value
                  properties:
                    currency:
                      type: string
                    value:
                      type: integer
                      format: int32
                total_coupon_discount:
                  type: object
                  required:
                    - currency
                    - value
                  properties:
                    currency:
                      type: string
                    value:
                      type: integer
                      format: int32
                downpayment_details:
                  type: object
                  description: '**Mandatory for EMI with Downpayment**<br><br>An object that contains the downpayment details.'
                  properties:
                    downpayment_amount:
                      type: object
                      required:
                        - currency
                        - value
                      properties:
                        currency:
                          type: string
                        value:
                          type: integer
                          format: int32
    OfferDiscoveryErrorResponse:
      type: object
      description: Error response for Offer Discovery API.
      properties:
        code:
          type: string
          description: Error code.
          example: INVALID_REQUEST
        message:
          type: string
          description: Error message.
          example: Missing or invalid required parameters
        additional_error_details:
          type: object
          properties:
            source:
              type: string
              example: PLURAL
            step:
              type: string
              example: OFFER_DISCOVERY
            field:
              type: string
              example: order_amount
            reason:
              type: string
              example: order_amount is mandatory
    ProductDetail:
      type: object
      description: Product details for offer discovery and validation.
      properties:
        product_code:
          type: string
          description: Product code or SKU.
          example: SKU-001
        product_amount:
          $ref: '#/components/schemas/Amount'
        product_name:
          type: string
          description: Name of the product.
          example: iPhone 15 Pro
        product_quantity:
          type: integer
          description: Quantity of the product.
          minimum: 1
          example: 1
    OfferDiscoveryCardlessRequest:
      type: object
      description: Request body for discovering cardless offers available on a product.
      required:
        - order_amount
        - payment_option
      properties:
        order_amount:
          $ref: '#/components/schemas/Amount'
        product_details:
          type: array
          description: Mandatory for Brand EMI. Contains product details.
          items:
            $ref: '#/components/schemas/ProductDetail'
        cart_coupon_discount_amount:
          $ref: '#/components/schemas/Amount'
        payment_option:
          type: object
          description: An object that contains details related to the payment option.
          required:
            - cardless_details
          properties:
            cardless_details:
              type: object
              description: An object that contains cardless transaction details.
              required:
                - pan_number
                - registered_mobile_number
              properties:
                pan_number:
                  type: string
                  description: Pan Number.
                  example: 234A123883
                registered_mobile_number:
                  type: string
                  description: 'Card registered mobile number. Maximum length: 20 characters. Minimum length: 9 characters.'
                  minLength: 9
                  maxLength: 20
                  example: '9876543210'
    DownpaymentDetailsRequest:
      type: object
      description: Request body for retrieving applicable down payment and EMI repayment details.
      required:
        - order_amount
      properties:
        order_amount:
          $ref: '#/components/schemas/Amount'
        product_details:
          type: array
          description: Mandatory for Brand EMI. Contains product details.
          items:
            $ref: '#/components/schemas/ProductDetail'
        cart_coupon_discount_amount:
          $ref: '#/components/schemas/Amount'
        issuer:
          type: object
          description: Issuer identification details.
          properties:
            bin:
              type: string
              description: Bank Identification Number (first 6-8 digits of card).
              example: '12345678'
    DownpaymentDetailsResponse:
      type: object
      description: Response containing down payment range and milestone details.
      properties:
        downpayment_details:
          type: object
          description: Down payment calculation details.
          properties:
            amount_range:
              type: object
              description: Allowed down payment range.
              properties:
                min:
                  $ref: '#/components/schemas/Amount'
                max:
                  $ref: '#/components/schemas/Amount'
            amount_milestone_list:
              type: array
              description: Suggested down payment milestones.
              items:
                $ref: '#/components/schemas/Amount'
            allowed_payment_methods:
              type: array
              description: Payment methods allowed for down payment.
              items:
                type: string
                enum:
                  - CARD
                  - UPI
                  - POINTS
                  - NETBANKING
                  - WALLET
              example:
                - UPI
    OfferValidationRequest:
      type: object
      description: Request body for validating applied offers.
      required:
        - payment_method
        - order_amount
        - payment_amount
        - payment_option
        - offer_data
      properties:
        payment_method:
          type: string
          description: Type of payment method you want to use to accept a payment.<br><br>Accepted values:<ul><li>`CREDIT_EMI`</li><li>`DEBIT_EMI`</li><li>`CARDLESS_EMI`</li><li>`UPI`</ul></li>
        order_amount:
          type: object
          description: An object that contains order amount.
          required:
            - value
            - currency
          properties:
            value:
              type: string
              description: 'The transaction amount in Paisa.<br><ul><li>Minimum value: `100` (₹1)</li><li>Maximum value: `100000000` (₹10 lakh)<br><br>Example: `1100`'
            currency:
              type: string
              description: 'Type of currency.<br><br>Example: `INR`'
        payment_amount:
          type: object
          description: 'An object that contains the payment amount details after the offer has been applied.<br><br>**Note**: Ensure you pass the `auth_amount` details. This `auth_amount` detail is returned through our Offer Discovery API response.'
          required:
            - value
            - currency
          properties:
            value:
              type: string
              description: 'The transaction amount in Paisa.<br><ul><li>Minimum value: `100` (₹1)</li><li>Maximum value: `100000000` (₹10 lakh)<br><br>Example: `1100`'
            currency:
              type: string
              description: 'Type of currency.<br><br>Example: `INR`'
        payment_option:
          type: object
          description: An object that contains the details of the payment options.<br><br>You can use either `card_details` or `card_token_details` or `cardless_details` or `upi_details` as a payment option. One object is mandatory to process the request.
          properties:
            card_details:
              type: object
              description: '**Mandatory for Plain Card Transactions**<br><br>An object that contains the card details.'
              required:
                - card_number
              properties:
                card_number:
                  type: string
                  description: 'Card Number.<ul><li>Maximum length: `19` characters.</li><li>Minimum length: `12` characters.</ul></li>Example: `123456789012`<br><br>Supported characters: `0-9`'
                registered_mobile_number:
                  type: string
                  description: '**Mandatory** for `Bank EMI (Debit_EMI)`<br><br>Card registered mobile number.<ul><li>Maximum length: `20` characters.</li><li>Minimum length: `9` characters.</ul></li>Example: `9876543210`<br><br>Supported characters: <ul><li>`0-9`</li><li>`+`</ul></li>'
            cardless_details:
              type: object
              description: '**Mandatory for Cardless Transactions**<br><br>An object that contains the cardless transaction details.'
              required:
                - pan_number
                - registered_mobile_number
              properties:
                pan_number:
                  type: string
                  description: 'Pan last digits<br><br>Example: `234A`<br><br>**Note**: Refer to the parameter `pan_number_last_digit_count` returned by the **Offer Discovery - Cardless API** response, to determine how many digits to include in the `pan_number`. This value may vary based on the acquirer.'
                registered_mobile_number:
                  type: string
                  description: 'Card registered mobile number.<ul><li>Maximum length: `20` characters.</li><li>Minimum length: `9` characters.</ul></li>Example: `9876543210`<br><br>Supported characters: <ul><li>`0-9`</li><li>`+`</ul></li>'
            card_token_details:
              type: object
              description: '**Mandatory for Tokenized Transactions**<br><br>An object that contains the card token details.'
              properties:
                last4_digit:
                  type: string
                  description: 'The last four digits of your card number.<br><br>Has to be 4 digits.<br><br>Example: `1234`<br><br>Supported characters: `0-9`'
                token:
                  type: string
                  description: 'Unique identifier of the card as per the token transaction type.<ul><li>Minimum: `1` characters.</li><li>Maximum: `50` characters.</ul></li>Example: `0342ef1e0342ef1e`'
                token_txn_type:
                  type: string
                  description: The type of token transaction.<br><br>Accepted values:<ul><li>`ALT_TOKEN`</li><li>`NETWORK_TOKEN`</li><li>`ISSUER_TOKEN`</ul></li>
                token_id:
                  type: string
                  description: 'Unique identifier of the token in the Pine Labs Online database.<ul><li>Maximum length: `50` characters.<br><br>Example: `token-v1-0811030624-aa-RBDgpR`'
            upi_details:
              type: object
              description: '**Mandatory for UPI Transactions**<br><br>An object that contains the UPI transaction details.'
              required:
                - payer
              properties:
                txn_mode:
                  type: string
                  description: 'UPI transaction mode.<br><br>Accepted values:<ul><li>`COLLECT`</li><li>`INTENT`</ul></li>'
                  enum:
                    - COLLECT
                    - INTENT
                  example: INTENT
                payer:
                  type: object
                  description: Payer of the transaction.
                  required:
                    - phone_number
                  properties:
                    vpa:
                      type: string
                      description: 'VPA of the payer.<br><br>Example: `customer@upi`'
                    phone_number:
                      type: string
                      description: 'Phone number for the payer.<br><br>Example: `9876543210`'
        offer_data:
          $ref: '#/components/schemas/OfferData'
        customer_details:
          type: object
          description: An object that contains details related to the customer.
          properties:
            customer_id:
              type: string
              description: Details related to the customer ID, required for Pine Labs Online tokenized saved cards.
    OfferValidationResponse:
      type: object
      description: Response containing validated offer result.
      properties:
        code:
          type: string
          example: ELIGIBLE
        message:
          type: string
          example: Offer is Eligible
    OfferValidationErrorResponse:
      type: object
      properties:
        code:
          type: string
          example: INVALID_REQUEST
        message:
          type: string
          example: Missing or invalid required parameters
        additional_error_details:
          type: object
          properties:
            source:
              type: string
              example: PLURAL
            step:
              type: string
              example: OFFER_VALIDATION
            field:
              type: string
              example: cardDetails.cardNumber
            reason:
              type: string
              example: Card number is invalid
    IMEIProduct:
      type: object
      description: Product item for IMEI validation request.
      properties:
        product_code:
          type: string
          description: Unique product identifier.
          example: xyz
        dealer_code:
          type: string
          description: Unique identifier for the dealer.
          example: DLR100
        state_code:
          type: string
          description: State code.
          example: NY
        product_imei:
          type: string
          description: The unique IMEI number of the product.
          example: SN1234567863
    IMEIValidationRequest:
      type: object
      description: Request body for IMEI validation.
      required:
        - merchant_product_imei_reference
        - request_type
        - products
      properties:
        merchant_product_imei_reference:
          type: string
          description: '**Idempotency Key.** Merchant product IMEI reference. Duplicate requests with the same `merchant_product_imei_reference` will return the existing result instead of creating a new one.'
          example: merchant-ref-786
        request_type:
          type: string
          description: IMEI request type.
          enum:
            - BLOCKING
            - UNBLOCKED
          example: BLOCKING
        products:
          type: array
          description: Array of product details for IMEI validation.
          items:
            $ref: '#/components/schemas/IMEIProduct'
    IMEIValidationResponse:
      type: object
      description: Response from IMEI validation (207 Multi-Status).
      properties:
        merchant_product_imei_reference:
          type: string
          description: Merchant product IMEI reference.
          example: merchant-ref-786
        request_type:
          type: string
          description: IMEI request type.
          example: BLOCKING
        products:
          type: array
          description: Array of validated product results.
          items:
            type: object
            properties:
              product_code:
                type: string
                description: Unique product identifier.
                example: xyz
              dealer_code:
                type: string
                description: Unique identifier for the dealer.
                example: DLR100
              state_code:
                type: string
                description: State code.
                example: NY
              product_imei:
                type: string
                description: The unique IMEI number of the product.
                example: SN1234567863
              product_imei_status:
                type: string
                description: Product IMEI status.
                enum:
                  - BLOCKED
                  - UNBLOCKED
                example: BLOCKED
              product_brand_response:
                type: object
                description: Product brand response details.
                properties:
                  code:
                    type: string
                    description: Code returned from brand in case of failure.
                  message:
                    type: string
                    description: Message corresponding to the validation status.
    NetBankingDataRequest:
      type: object
      description: Net banking payment details.
      required:
        - pay_code
      properties:
        pay_code:
          type: string
          description: Bank code in the Pine Labs Online database.
          example: NB1531
        txn_mode:
          type: string
          description: Net banking transaction mode.
          enum:
            - REDIRECT
            - QR
            - INTENT
          default: REDIRECT
          example: REDIRECT
    UPIPayer:
      type: object
      description: UPI payer details. Required for COLLECT flow.
      required:
        - vpa
      properties:
        vpa:
          type: string
          description: Virtual Payment Address (VPA) of the payer.
          example: kevinbob@okaxis
    UPIDetailsRequest:
      type: object
      description: |
        UPI payment details.
        - For COLLECT flow: `txn_mode` = "COLLECT" and `payer.vpa` is required.
        - For INTENT flow (includes QR): `txn_mode` = "INTENT" and no payer needed.
      required:
        - txn_mode
      properties:
        txn_mode:
          type: string
          description: UPI transaction mode.
          enum:
            - COLLECT
            - INTENT
          example: COLLECT
        payer:
          $ref: '#/components/schemas/UPIPayer'
    PaymentRequestItem:
      type: object
      description: |
        A single payment request item. The `payment_method` field acts as a
        discriminator to determine which `payment_option` structure applies.
      required:
        - merchant_payment_reference
        - payment_amount
        - payment_method
      properties:
        merchant_payment_reference:
          type: string
          description: '**Idempotency Key.** Unique payment reference assigned by the merchant. Duplicate requests with the same `merchant_payment_reference` will return the existing payment instead of creating a new one.'
          minLength: 1
          maxLength: 50
          example: pay-ref-001
        payment_amount:
          $ref: '#/components/schemas/Amount'
        payment_method:
          type: string
          description: Type of payment method for this payment.
          enum:
            - CARD
            - UPI
            - NETBANKING
            - WALLET
            - BRAND_WALLET
            - CREDIT_EMI
            - DEBIT_EMI
            - CARDLESS_EMI
            - POINTS
            - BNPL
          example: CARD
        payment_option:
          type: object
          description: |
            **Mandatory object**<br><br>An object that contains the details of the payment options.<br><br>Use `card_details` or `card_token_details` for card payments, `upi_details` for UPI, `netbanking_details` for net banking, `wallet_details` for wallet and brand wallet, `cardless_details` for cardless EMI, `points_card_details` for points, or `bnpl_details` for BNPL. One object is mandatory to process the request.
          properties:
            card_details:
              type: object
              description: An object that contains the card details.
              required:
                - card_number
              properties:
                name:
                  type: string
                  description: 'Name on the card.<ul><li>Maximum length: `100` characters.</li><li>Minimum length: `1` characters.</ul></li>Example: `Kevin`'
                card_number:
                  type: string
                  description: 'Card Number.<ul><li>Maximum length: `19` characters.</li><li>Minimum length: `12` characters.</ul></li>Example: `123456789012`<br><br>Supported characters: `0-9`'
                cvv:
                  type: string
                  description: 'Card Verification Value [cvv] of the card.<ul><li>Maximum length: `4` digits.</li><li>Minimum length: `3` digits.</ul></li>Example: `123`<br><br>Supported characters: `0-9`'
                expiry_month:
                  type: string
                  description: 'Card expiry month as on the card.<br><br>Has to be 2 digits.<br><br>Example: `08`<br><br>Supported characters: `0-9`'
                expiry_year:
                  type: string
                  description: 'Card expiry year as on the card.<br><br>Has to be 4 digits.<br><br>Example: `2024`<br><br>Supported characters: `0-9`'
                registered_mobile_number:
                  type: string
                  description: 'Card registered mobile number.<ul><li>Maximum length: `20` characters.</li><li>Minimum length: `10` characters.</ul></li>Example: `9876543210`<br><br>Supported characters: <ul><li>`0-9`</ul></li>'
            card_token_details:
              type: object
              description: An object that contains the card token details.
              required:
                - token
                - token_txn_type
              properties:
                last4_digit:
                  type: string
                  description: 'The last four digits of your card number.<br><br>Has to be 4 digits.<br><br>Example: `1234`<br><br>Supported characters: `0-9`'
                token:
                  type: string
                  description: 'Unique identifier of the card as per the token transaction type.<ul><li>Minimum: `1` characters.</li><li>Maximum: `50` characters.</ul></li>Example: `0342ef1e0342ef1e`'
                token_txn_type:
                  type: string
                  description: The type of token transaction.<br><br>Accepted values:<ul><li>`ALT_TOKEN`</li><li>`NETWORK_TOKEN`</li><li>`ISSUER_TOKEN`</ul></li>
                expiry_month:
                  type: string
                  description: 'Card token expiry month.<br><br>Has to be 2 digits.<br><br>Example: `08`<br><br>Supported characters: `0-9`'
                expiry_year:
                  type: string
                  description: 'Card token year of expiry.<br><br>Has to be 4 digits.<br><br>Example: `2025`<br><br>Supported characters: `0-9`'
                cvv:
                  type: string
                  description: 'Card Verification Value [cvv] of the card.<ul><li>Maximum length: `4` digits.</li><li>Minimum length: `3` digits.</ul></li>Example: `123`<br><br>Supported characters: `0-9`'
                token_id:
                  type: string
                  description: Unique identifier of the save card transaction.
            cardless_details:
              type: object
              description: An object that contains the user information to process a cardless payment.
              required:
                - pan_number
                - registered_mobile_number
              properties:
                pan_number:
                  type: string
                  description: 'Users PAN.<br><br>Example: `ABCDE1234F`'
                registered_mobile_number:
                  type: string
                  description: 'Registered mobile number of the card.<ul><li>Maximum length: `20` characters.</li><li>Minimum length: `9` characters.</ul></li>Example: `9876543210`<br><br>Supported characters:<ul><li>`0-9`</li><li>`+`</ul></li>'
            points_card_details:
              type: object
              description: '**Mandatory when payment_method is `POINTS`**.<br><br>An object that contains the point card details.'
              required:
                - card_last4
                - card_number
                - registered_mobile_number
              properties:
                card_last4:
                  type: string
                  description: 'The last four digits of your card number.<br><br>Has to be 4 digits.<br><br>Example: `1234`<br><br>Supported characters: `0-9`'
                  minLength: 4
                  maxLength: 4
                card_number:
                  type: string
                  description: 'Card Number.<ul><li>Maximum length: `19` characters.</li><li>Minimum length: `12` characters.</ul></li>Example: `123456789012`<br><br>Supported characters: `0-9`'
                  minLength: 12
                  maxLength: 19
                registered_mobile_number:
                  type: string
                  description: 'Point card registered mobile number.<ul><li>Maximum length: `20` characters.</li><li>Minimum length: `10` characters.</ul></li>Example: `9876543210`<br><br>Supported characters:<ul><li>`0-9`</ul></li>'
                  minLength: 10
                  maxLength: 20
            bnpl_details:
              type: object
              description: An object that contains the buy now pay later details. **Mandatory for BNPL payment method.**
              required:
                - mobile
                - bnpl_pay_code
              properties:
                mobile:
                  type: string
                  description: Customer's 10-digit mobile number without country code.
                  example: '9876543210'
                bnpl_pay_code:
                  type: string
                  description: BNPL service provider code.
                  enum:
                    - LAZYPAY
                  example: LAZYPAY
            netbanking_details:
              $ref: '#/components/schemas/NetBankingDataRequest'
            upi_details:
              $ref: '#/components/schemas/UPIDetailsRequest'
            wallet_details:
              type: object
              description: |
                Wallet payment details. **Mandatory for `WALLET` and `BRAND_WALLET` payment methods.**
                - For `WALLET`: provide `wallet_code` (e.g. PAYTM).
                - For `BRAND_WALLET`: provide `customer_id` of the brand wallet to debit.
                  After payment creation, the payment status becomes `PENDING` and an OTP
                  is automatically sent to the customer. Call Submit OTP to authorize.
              properties:
                wallet_code:
                  type: string
                  description: Wallet provider code. Required for `WALLET` payment method.
                  example: PAYTM
                customer_id:
                  type: string
                  description: Customer ID whose brand wallet to debit. Required for `BRAND_WALLET` payment method.
                  example: cust-bw-001
        additional_payment_details:
          type: object
          description: additional payment details
          properties: 
            is_decoupled_authorization_flow:
              type: boolean
              example: true
              description: flag to enable decoupled authorization flow
        device_info:
          type: object
          description: |
            Device information details.
            **Mandatory for SIMPL and SIMPL3 BNPL providers.**
          properties:
            operating_system:
              type: string
              description: Type of operating system. **Mandatory when the request is made from a mobile platform.**
              enum:
                - ANDROID
                - IOS
                - MACOS
                - WINDOWS
              example: ANDROID
            source_ip_address:
              type: string
              description: The IP address of the user's device initiating the request.
              example: 10.11.19.2
            browser_ip_address:
              type: string
              description: The IP address captured from the user's browser during the transaction.
              example: 203.0.113.42
            browser_user_agent:
              type: string
              description: The user's browser information string.
              example: Chrome
            device_model:
              type: string
              description: The model of the user's device.
              example: Samsung S21 Ultra
            device_manufacturer:
              type: string
              description: The name of the company that manufactured the user's device.
              example: Samsung
        payer_data:
          $ref: '#/components/schemas/PayerData'
        tcs_data:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/TCSData'
          description: TCS computation data from the TCS Compute API. Required only when tcs_applicable is true. If TCS is not applicable, do not send this field.
        offer_data:
          $ref: '#/components/schemas/OfferData'
    CardDetailLookupItem:
      type: object
      description: Individual card detail lookup entry.
      required:
        - payment_identifier
        - payment_reference_type
      properties:
        payment_identifier:
          type: string
          description: |
            Card Number.
            - Minimum length: 12 characters.
            - Maximum length: 19 characters.
            - Supported characters: 0-9
          minLength: 12
          maxLength: 19
          example: '4012001037141112'
        payment_reference_type:
          type: string
          description: Type of payment method you want to use to accept a payment.
          enum:
            - CARD
            - ALT_TOKEN_TXN
            - NETWORK_TOKEN_TXN
            - ISSUER_TOKEN_TXN
          example: CARD
    CardPaymentDetailItem:
      type: object
      description: Card information returned from lookup.
      properties:
        card_network:
          type: string
          description: Card network provider.
          example: VISA
        card_issuer:
          type: string
          description: Card issuing bank or institution.
          example: INTL HDQTRS-CENTER OWNED
        card_type:
          type: string
          description: Type of card.
          example: CREDIT
        card_category:
          type: string
          description: Card category.
          example: NONE
        is_international_card:
          type: boolean
          description: Whether the card is an international card.
          example: false
        is_native_otp_supported:
          type: boolean
          description: Whether the card supports native OTP flow.
          example: true
        country_code:
          type: string
          description: Country code of the card issuer.
          example: IND
        currency:
          type: string
          description: Currency associated with the card.
          example: INR
        is_currency_supported:
          type: boolean
          description: Whether the card's currency is supported for transactions.
          example: true
    CheckPointBalanceRequest:
      type: object
      description: Request body for checking reward points balance on a card.
      required:
        - payment_option
        - order_details
      properties:
        payment_option:
          type: object
          description: Payment option details for the points balance check.
          required:
            - points_card_details
          properties:
            points_card_details:
              type: object
              properties:
                card_last4:
                  type: string
                  description: Last four digits of the card.
                  minLength: 4
                  maxLength: 4
                  example: '1112'
                card_number:
                  type: string
                  description: Card number to check points balance.
                  minLength: 12
                  maxLength: 23
                  example: '4012001037141112'
                registered_mobile_number:
                  type: string
                  description: Registered mobile number on the card.
                  minLength: 9
                  maxLength: 20
                  example: '7827709063'
        order_details:
          type: object
          description: Order details for the points balance check.
          required:
            - order_amount
          properties:
            order_amount:
              type: object
              description: Order amount for the points balance check.
              properties:
                value:
                  type: integer
                  description: Order amount in smallest currency unit (e.g., paisa).
                  example: 5000
                currency:
                  type: string
                  description: Currency code.
                  example: INR
    CheckPointBalanceResponse:
      type: object
      description: Response from the Check Point Balance API.
      properties:
        balance:
          type: object
          description: Card balance details.
          properties:
            value:
              type: integer
              description: Balance available on the card (in paisa).
              example: 23718050
            currency:
              type: string
              example: INR
        redeemable_amount:
          type: object
          description: Redeemable amount details.
          properties:
            value:
              type: integer
              description: Redeemable amount on card (in paisa).
              example: 3500
            currency:
              type: string
              example: INR
        redeemable_points:
          type: integer
          description: Total redeemable points available on the card.
          example: 140
        is_eligible:
          type: boolean
          description: Card eligibility status for pay by points.
          example: true
    ChallanResponse:
      type: object
      description: Response from the Create/Get Challan API.
      properties:
        challan_id:
          type: string
          description: Unique identifier of the challan.
          example: v1-cha-250912053848-aa-xrldQX
        order_id:
          type: string
          description: Unique identifier of the order.
          example: v1-250912053834-aa-a6T94l
        virtual_account_id:
          type: string
          description: Unique customer account identifier.
          example: PINEMFGEPXDRCSOKYO7SUQS8
        account_name:
          type: string
          description: Account holder's name.
          example: Amazon Group
        account_ifsc:
          type: string
          description: IFSC code of the account.
          example: UTIB0005717
        account_bank_name:
          type: string
          description: Name of the bank.
          example: Axis Bank
        account_bank_branch:
          type: string
          description: Branch of the bank.
          example: Axis Bank Branch, CRC Greater Noida West
        challan_pdf_url:
          type: string
          description: URL to download the challan PDF.
          example: https://payins-service-dev.v2.pinepg.in/api/pay/v1/order/v1-250912053834-aa-a6T94l/challan/pdf
        amount_due:
          type: integer
          description: Total amount due against the e-challan (in paisa).
          example: 1001180
        expiry_date:
          type: string
          description: Date when the e-challan expires.
          example: '2025-09-19'
        created_date:
          type: string
          format: date-time
          description: ISO 8601 UTC timestamp when the challan was created.
          example: '2025-09-12T05:38:48.260Z'
    CreateChallanRequest:
      type: object
      description: |
        Request body for creating an e-challan.
        **Mandatory if you want to charge Convenience Fee.**
      properties:
        convenience_fee_breakdown:
          type: object
          description: An object that contains the convenience fee breakdown details.
          properties:
            fee_amount:
              type: object
              description: An object that contains the fee amount details.
              properties:
                value:
                  type: integer
                  description: |
                    The fee amount in Paisa.
                    Minimum value: 100 (₹1). Maximum value: 100000000 (₹10 lakh).
                  minimum: 100
                  maximum: 100000000
                  example: 1000
                currency:
                  type: string
                  description: Type of currency.
                  example: INR
            tax_amount:
              type: object
              description: An object that contains the tax amount details.
              properties:
                value:
                  type: integer
                  description: |
                    The tax amount in Paisa.
                    Minimum value: 100 (₹1). Maximum value: 100000000 (₹10 lakh).
                  minimum: 100
                  maximum: 100000000
                  example: 180
                currency:
                  type: string
                  description: Type of currency.
                  example: INR
            additional_fee_amount:
              type: object
              description: An object that contains the additional fee amount details.
              properties:
                value:
                  type: integer
                  description: |
                    The additional fee amount in Paisa.
                    Minimum value: 100 (₹1). Maximum value: 100000000 (₹10 lakh).
                  minimum: 0
                  maximum: 100000000
                  example: 0
                currency:
                  type: string
                  description: Type of currency.
                  example: INR
            maximum_fee_amount:
              type: object
              description: An object that contains the maximum fee amount details.
              properties:
                value:
                  type: integer
                  description: |
                    The maximum fee amount in Paisa.
                    Minimum value: 100 (₹1). Maximum value: 100000000 (₹10 lakh).
                  minimum: 100
                  maximum: 100000000
                  example: 99999999
                currency:
                  type: string
                  description: Type of currency.
                  example: INR
            applicable_fee_amount:
              type: object
              description: An object that contains the applicable fee amount details.
              properties:
                value:
                  type: integer
                  description: |
                    The applicable fee amount in Paisa.
                    Minimum value: 100 (₹1). Maximum value: 100000000 (₹10 lakh).
                  minimum: 100
                  maximum: 100000000
                  example: 1180
                currency:
                  type: string
                  description: Type of currency.
                  example: INR
    AuthorizePaymentRequest:
      type: object
      description: |
        Request body for authorizing an Apple Pay payment.
        Used when decrypting the Apple Pay payment token on your end using Apple Pay JS SDK.
      properties:
        decrypted_card_details:
          type: object
          description: An object that contains the decrypted card details.
          required:
            - token
            - expiration_month
            - expiration_year
            - cryptogram
          properties:
            token:
              type: string
              description: |
                Unique identifier of the card as per the token transaction type.
                Supported characters: A-Z, a-z, 0-9, . / \\ - _ , ( ) '
              minLength: 1
              maxLength: 50
              example: '4111111111111111'
            expiration_month:
              type: string
              description: Card token expiry month. Must be 2 digits.
              minLength: 2
              maxLength: 2
              example: '12'
            expiration_year:
              type: string
              description: Card token expiry year. Must be 4 digits.
              minLength: 4
              maxLength: 4
              example: '2031'
            cryptogram:
              type: string
              description: Unique encrypted text from the Apple Pay token.
              minLength: 1
              maxLength: 50
              example: AceY+igABPs3jdwNaDg3MAACAAA=
            cavv:
              type: string
              description: |
                Unique encrypted text. **Mandatory for Mastercard.**
              example: AceY+igABPs3jdwNaDg3MAACAAA=
            eci:
              type: string
              description: Indicates the authentication outcome for the transaction.
              example: '05'
            card_meta_data:
              type: object
              description: An object that contains additional card meta details.
              required:
                - card_type
                - network_name
              properties:
                card_type:
                  type: string
                  description: Type of the card.
                  enum:
                    - CREDIT
                    - DEBIT
                    - PREPAID
                  example: DEBIT
                network_name:
                  type: string
                  description: Type of card network.
                  enum:
                    - VISA
                    - MASTERCARD
                    - RUPAY
                    - AMEX
                  example: VISA
    AuthorizePaymentResponse:
      type: object
      description: Response from the Authorize Payment API (Apple Pay).
      properties:
        data:
          type: object
          properties:
            order_id:
              type: string
              example: v1-251012055723-aa-Vhv53a
            merchant_order_reference:
              type: string
              maxLength: 50
              example: 3fb59787-c38b-4986-87da-39be0a585fae
            type:
              type: string
              enum:
                - CHARGE
                - REFUND
              example: CHARGE
            status:
              type: string
              enum:
                - CREATED
                - PENDING
                - PROCESSED
                - AUTHORIZED
                - CANCELLED
                - ATTEMPTED
                - FAILED
                - FULLY_REFUNDED
                - PARTIALLY_REFUNDED
              example: PROCESSED
            callback_url:
              type: string
              example: https://simple-callback.onrender.com/payment/callback
            failure_callback_url:
              type: string
              example: ''
            merchant_id:
              type: string
              example: '106974'
            order_amount:
              type: object
              properties:
                value:
                  type: integer
                  example: 10000
                currency:
                  type: string
                  example: INR
            pre_auth:
              type: boolean
              example: false
            part_payment:
              type: boolean
              description: Whether the transaction is a part payment.
              example: false
            allowed_payment_methods:
              type: array
              items:
                type: string
              example:
                - CARD
                - WALLET
            purchase_details:
              type: object
              properties:
                customer:
                  type: object
                  properties:
                    email_id:
                      type: string
                      maxLength: 50
                    first_name:
                      type: string
                      maxLength: 50
                    last_name:
                      type: string
                      maxLength: 50
                    mobile_number:
                      type: string
                      maxLength: 20
                    country_code:
                      type: string
                      maxLength: 5
                    billing_address:
                      $ref: '#/components/schemas/Address'
                    shipping_address:
                      $ref: '#/components/schemas/Address'
                    is_edit_customer_details_allowed:
                      type: boolean
                merchant_metadata:
                  $ref: '#/components/schemas/MerchantMetadata'
            payments:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    maxLength: 50
                  merchant_payment_reference:
                    type: string
                  status:
                    type: string
                    enum:
                      - PENDING
                      - AUTHORIZED
                      - CANCELLED
                      - PROCESSED
                      - FAILED
                  payment_amount:
                    type: object
                    properties:
                      value:
                        type: integer
                      currency:
                        type: string
                  payment_method:
                    type: string
                    enum:
                      - CARD
                      - UPI
                      - POINTS
                      - NETBANKING
                      - WALLET
                  payment_option:
                    type: object
                    properties:
                      wallet_details:
                        type: object
                        properties:
                          wallet_code:
                            type: string
                            example: APPLE_PAY
                          wallet_card_data:
                            type: object
                            properties:
                              card_type:
                                type: string
                                enum:
                                  - DEBIT
                                  - CREDIT
                              network_name:
                                type: string
                              issuer_name:
                                type: string
                              card_category:
                                type: string
                              country_code:
                                type: string
                              token_txn_type:
                                type: string
                                enum:
                                  - ALT_TOKEN
                                  - NETWORK_TOKEN
                                  - ISSUER_TOKEN
                              save:
                                type: boolean
                              card_holder_name:
                                type: string
                              bin_min:
                                type: string
                              bin_max:
                                type: string
                  acquirer_data:
                    type: object
                    properties:
                      approval_code:
                        type: string
                        maxLength: 50
                      acquirer_reference:
                        type: string
                        maxLength: 50
                      rrn:
                        type: string
                        maxLength: 50
                      is_aggregator:
                        type: boolean
                      acquirer_name:
                        type: string
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
            created_at:
              type: string
              format: date-time
              example: '2025-06-04T11:00:51.067Z'
            updated_at:
              type: string
              format: date-time
              example: '2025-06-04T11:01:26.656Z'
            integration_mode:
              type: string
              enum:
                - SEAMLESS
                - REDIRECT
              example: SEAMLESS
    CurrencyConversionRequest:
      type: object
      description: Request body for the Multi-Currency Conversion API.
      required:
        - bank_code
        - invoice_id
        - source_currency
        - dest_currency
        - transaction_amount
      properties:
        bank_code:
          type: string
          description: Bank code for the conversion.
          example: AXIS
        invoice_id:
          type: string
          description: Unique invoice reference for the conversion request.
          minLength: 1
          example: INV-20250716-001
        source_currency:
          type: string
          description: Numeric ISO 4217 code for the source currency (3 digits).
          minLength: 3
          maxLength: 3
          example: '840'
        dest_currency:
          type: string
          description: Numeric ISO 4217 code for the destination currency (3 digits).
          minLength: 3
          maxLength: 3
          example: '356'
        transaction_amount:
          type: string
          description: The transaction amount to convert.
          example: '100'
    CurrencyConversionResponse:
      type: object
      description: Response from the Currency Conversion API.
      properties:
        source_currency:
          type: string
          description: Numeric ISO 4217 source currency code.
          minLength: 3
          maxLength: 3
          example: '840'
        dest_currency:
          type: string
          description: Numeric ISO 4217 destination currency code.
          minLength: 3
          maxLength: 3
          example: '356'
        invoice_id:
          type: string
          description: Invoice reference from the request.
          example: INV-20250716-001
        conversion_rate:
          type: number
          format: double
          description: Rate used to convert source to destination currency.
          example: 86.74531575294934
        converted_amount:
          type: integer
          description: Final amount after conversion and exponent adjustment.
          example: 8674
        transaction_amount:
          type: string
          description: Original transaction amount.
          example: '100'
        converted_exponent:
          type: integer
          description: Number of decimal places applied during conversion.
          example: 2
    PaymentOptionRequest:
      type: object
      description: Request body for checking payment option eligibility.
      required:
        - payment_option
      properties:
        payment_method:
          type: string
          description: Type of payment method to check eligibility for.
          enum:
            - UPI
            - POINTS
          example: UPI
        payment_option:
          type: object
          description: |
            An object that contains the payment option details.
            Use `upi_details` for UPI or `points_card_details` for points. One is mandatory to process the request.
          properties:
            upi_details:
              type: object
              description: UPI-specific payment option details.
              required:
                - payer
              properties:
                payer:
                  type: object
                  description: Payer details for fetching VPA.
                  required:
                    - fetch_vpa
                    - phone_number
                  properties:
                    fetch_vpa:
                      type: boolean
                      description: Indicates whether VPA should be fetched for the payer.
                      example: true
                    phone_number:
                      type: string
                      description: Payer phone number.
                      example: "9876543210"
            points_card_details:
              type: object
              description: '**Mandatory when payment_method is `POINTS`**. An object that contains the point card details.'
              properties:
                card_last4:
                  type: string
                  description: Last four digits of the card.
                  minLength: 4
                  maxLength: 4
                  example: '1112'
                card_number:
                  type: string
                  description: Card number to check points balance.
                  minLength: 12
                  maxLength: 23
                  example: '4012001037141112'
                registered_mobile_number:
                  type: string
                  description: Registered mobile number on the card.
                  minLength: 9
                  maxLength: 20
                  example: '7827709063'
        order_details:
          type: object
          description: Order details for the points balance check. Required when using points_card_details.
          required:
            - order_amount
          properties:
            order_amount:
              type: object
              description: Order amount for the points balance check.
              properties:
                value:
                  type: integer
                  description: Order amount in smallest currency unit (e.g., paisa).
                  example: 5000
                currency:
                  type: string
                  description: Currency code.
                  example: INR
    PaymentOptionResponse:
      type: object
      description: Response containing payment option eligibility and metadata.
      properties:
        payment_method:
          type: string
          description: The payment method checked.
          enum:
            - UPI
            - POINTS
          example: UPI
        payment_option_metadata:
          type: object
          description: Metadata returned for the payment option.
          properties:
            upi_payment_option_data:
              type: object
              description: UPI-specific metadata.
              properties:
                fetched_vpa:
                  type: string
                  description: VPA fetched for the payer phone number.
                  example: "customer@okaxis"
        balance:
          type: object
          description: Card balance details. Returned for points payment method.
          properties:
            value:
              type: integer
              description: Balance available on the card (in paisa).
              example: 23718050
            currency:
              type: string
              example: INR
        redeemable_amount:
          type: object
          description: Redeemable amount details. Returned for points payment method.
          properties:
            value:
              type: integer
              description: Redeemable amount on card (in paisa).
              example: 3500
            currency:
              type: string
              example: INR
        redeemable_points:
          type: integer
          description: Total redeemable points available on the card.
          example: 140
        is_eligible:
          type: boolean
          description: Card eligibility status for pay by points.
          example: true
    BNPLCheckEligibilityRequest:
      type: object
      description: Request body for checking BNPL eligibility.
      required:
        - mobile
        - pay_code
        - amount
      properties:
        mobile:
          type: string
          description: Customer's 10-digit mobile number without country code.
          example: '9876543210'
        pay_code:
          type: string
          description: BNPL service provider code.
          enum:
            - LAZYPAY
          example: LAZYPAY
        amount:
          $ref: '#/components/schemas/Amount'
        device_info:
          type: object
          description: Device information details.
          properties:
            operating_system:
              type: string
              description: |
                Type of operating system of the device. **Mandatory when the request is made from a mobile platform.**
              enum:
                - ANDROID
                - IOS
                - MACOS
                - WINDOWS
              example: ANDROID
            source_ip_address:
              type: string
              description: The IP address of the user's device initiating the request, used for security validation and fraud detection.
              example: 10.11.19.2
            browser_ip_address:
              type: string
              description: The IP address captured from the user's browser during the transaction.
              example: 203.0.113.42
            browser_user_agent:
              type: string
              description: The user's browser information string, used to identify the browser, device type, and operating system.
              example: Chrome
            device_model:
              type: string
              description: The model of the user's device.
              example: Samsung S21 Ultra
            device_manufacturer:
              type: string
              description: The name of the company that manufactured the user's device.
              example: Samsung
        email:
          type: string
          description: Customer's email address.
          example: john.doe@example.com
    BNPLCheckEligibilityResponse:
      type: object
      description: Response containing BNPL eligibility status.
      properties:
        txn_eligibility:
          type: boolean
          description: Whether the customer is eligible for BNPL.
          example: true
        metadata:
          type: object
          description: Credit limit meta information.
          properties:
            credit_limit_available_in_paise:
              type: string
              description: Running line of credit limit available in paise.
              example: '0'
            installments:
              type: array
              description: Installment breakdown for BNPL.
              items:
                type: object
                properties:
                  serial_no:
                    type: integer
                    description: Installment serial number.
                    example: 1
                  amount_in_paise:
                    type: integer
                    description: Installment amount in paise.
                    example: 1134
                  due_date:
                    type: string
                    format: date
                    description: Installment due date.
                    example: '2025-06-30'
    BNPLSubmitOTPRequest:
      type: object
      description: Request body for submitting OTP for payment verification.
      required:
        - payment_id
        - otp
      properties:
        payment_id:
          type: string
          description: Unique payment identifier from create payment response.
          example: v1-250708064524-aa-Zd1J9Y-bn-a
        otp:
          type: string
          description: OTP received by the customer.
          example: '123456'
    BNPLSubmitOTPResponse:
      type: object
      description: Response after submitting OTP.
      properties:
        status:
          type: string
          description: OTP submission status.
          example: SUCCESS
    SubmitOTPErrorResponse:
      type: object
      description: Error response when OTP submission fails (e.g., incorrect OTP).
      properties:
        code:
          type: string
          description: Error code.
          example: INVALID_REQUEST
        message:
          type: string
          description: Error message.
          example: The code entered was incorrect. Please try again.
        next:
          type: array
          description: List of next possible actions.
          items:
            type: string
          example:
            - SUBMIT_OTP
            - RESEND_OTP
        meta_data:
          type: object
          description: Metadata about retry options.
          properties:
            resend_after:
              type: string
              description: Time in seconds after which OTP can be resent again.
              example: '180'
    BNPLResendOTPRequest:
      type: object
      description: Request body for resending OTP for payment verification.
      required:
        - payment_id
      properties:
        payment_id:
          type: string
          description: Unique payment identifier from create payment response.
          example: v1-250708064524-aa-Zd1J9Y-bn-a
    BNPLResendOTPResponse:
      type: object
      description: Response after resending OTP.
      properties:
        status:
          type: string
          description: OTP resend status.
          example: SUCCESS
        next:
          type: array
          description: List of next possible actions after OTP resend.
          items:
            type: string
          example:
            - SUBMIT_OTP
            - RESEND_OTP
        meta_data:
          type: object
          description: Metadata about the OTP resend.
          properties:
            resend_after:
              type: string
              description: Time in seconds after which OTP can be resent again.
              example: '180'
    ResendOTPErrorResponse:
      type: object
      description: Error response when OTP resend limit is reached.
      properties:
        code:
          type: string
          description: Error code.
          example: INVALID_REQUEST
        message:
          type: string
          description: Error message.
          example: OTP resend limit reached
        next:
          type: array
          description: List of next possible actions.
          items:
            type: string
          example:
            - SUBMIT_OTP
    CalculateConvenienceFeeRequest:
      type: object
      description: Request body for calculating convenience fee.
      required:
        - amount
        - payment_method
      properties:
        amount:
          $ref: '#/components/schemas/Amount'
        payment_method:
          type: string
          description: Payment method for fee calculation.
          example: CARD
        network_type:
          type: string
          description: Card network type for more specific fee calculation.
          example: VISA
    CalculateConvenienceFeeResponse:
      type: object
      description: Response containing convenience fee breakdown.
      properties:
        data:
          type: array
          description: Array of convenience fee results per payment method/network combination.
          items:
            type: object
            properties:
              payment_method:
                type: string
                description: Payment method.
                example: CARD
              fee_type:
                type: string
                description: Type of fee calculation.
                example: PERCENTAGE
              amount:
                $ref: '#/components/schemas/Amount'
              convenience_fee_breakdown:
                type: object
                description: Breakdown of the convenience fee.
                properties:
                  fee_amount:
                    $ref: '#/components/schemas/Amount'
                  tax_amount:
                    $ref: '#/components/schemas/Amount'
                  additional_fee_amount:
                    $ref: '#/components/schemas/Amount'
                  maximum_fee_amount:
                    $ref: '#/components/schemas/Amount'
                  applicable_fee_amount:
                    $ref: '#/components/schemas/Amount'
              payable_amount:
                $ref: '#/components/schemas/Amount'
              payment_method_metadata:
                type: object
                description: Metadata about the payment method.
                properties:
                  network_type:
                    type: string
                    description: Card network type.
                    example: VISA
                  card_type:
                    type: string
                    description: Type of card.
                    example: CREDIT
    CheckoutCustomer:
      type: object
      description: Customer details for checkout.
      properties:
        email_id:
          type: string
          description: Customer's email address.
          example: john@example.com
        first_name:
          type: string
          description: Customer's first name.
          example: Kevin
        last_name:
          type: string
          description: Customer's last name.
          example: Bob
        customer_id:
          type: string
          description: Unique identifier of the customer.
          maxLength: 19
          example: '123456'
        mobile_number:
          type: string
          description: Customer's mobile number.
          example: '9876543210'
        country_code:
          type: string
          description: Country code of the mobile number.
          example: '91'
        billing_address:
          $ref: '#/components/schemas/Address'
        shipping_address:
          $ref: '#/components/schemas/Address'
    CheckoutProduct:
      type: object
      description: Product details for checkout order.
      properties:
        product_code:
          type: string
          description: Unique product identifier.
          example: redmi_10
        product_amount:
          $ref: '#/components/schemas/Amount'
    CheckoutPurchaseDetails:
      type: object
      description: Object that contains the details of customer information and product details.
      properties:
        customer:
          $ref: '#/components/schemas/CheckoutCustomer'
        product:
          type: array
          description: Mandatory for EMI Order. An array of objects that contains the list of product details.
          items:
            $ref: '#/components/schemas/CheckoutProduct'
    PaymentLinkAddress:
      type: object
      description: Address details for payment link.
      properties:
        address1:
          type: string
          description: Address line 1.
          maxLength: 100
          example: 10 Downing Street Westminster London
        address2:
          type: string
          description: Address line 2.
          maxLength: 100
          example: Oxford Street Westminster London
        address3:
          type: string
          description: Address line 3.
          maxLength: 100
          example: Baker Street Westminster London
        pincode:
          type: string
          description: Pincode of the address.
          minLength: 6
          maxLength: 10
          pattern: ^[0-9]+$
          example: '51524036'
        city:
          type: string
          description: City of the address.
          maxLength: 50
          example: Westminster
        state:
          type: string
          description: State of the address.
          maxLength: 50
          example: Westminster
        country:
          type: string
          description: Country of the address.
          maxLength: 50
          example: London
    PaymentLinkCustomer:
      type: object
      description: Customer information for payment link.
      properties:
        email_id:
          type: string
          description: Customer's email address.
          minLength: 1
          maxLength: 50
          example: kevin.bob@example.com
        first_name:
          type: string
          description: Customer's first name.
          minLength: 1
          maxLength: 50
          example: Kevin
        last_name:
          type: string
          description: Customer's last name.
          minLength: 1
          maxLength: 50
          example: Bob
        customer_id:
          type: string
          description: Unique identifier of the customer in the Pine Labs Online database.
          minLength: 1
          maxLength: 19
          example: '123456'
        mobile_number:
          type: string
          description: Customer's mobile number.
          minLength: 10
          maxLength: 20
          pattern: ^[0-9]+$
          example: '9876543210'
        country_code:
          type: string
          description: Country code of the mobile number.
          example: '91'
        billing_address:
          $ref: '#/components/schemas/PaymentLinkAddress'
        shipping_address:
          $ref: '#/components/schemas/PaymentLinkAddress'
        merchant_customer_reference:
          type: string
          description: Unique identifier of the customer for the request.
          minLength: 1
          maxLength: 50
          example: customer_reference
        gstin:
          type: string
          description: Customer's GSTIN.
          example: 27AAEPM1234C1Z5
    PaymentLinkProductDetail:
      type: object
      description: Product details associated with the payment link.
      properties:
        product_code:
          type: string
          description: Unique product identifier.
          example: redmi_10
        product_amount:
          $ref: '#/components/schemas/Amount'
        product_coupon_discount_amount:
          $ref: '#/components/schemas/Amount'
    PaymentLinkSplitDetail:
      type: object
      description: Individual split detail entry.
      properties:
        split_merchant_id:
          type: string
          description: Unique identifier of your partner merchant in the Pine Labs Online database.
          example: '111302'
        merchant_settlement_reference:
          type: string
          description: Unique identifier entered while creating an order in split.
          maxLength: 50
          example: 5206071124-aa-mpLhF3-cc-l
        split_settlement_id:
          type: string
          description: Unique identifier of the split settlement in the Pine Labs Online database.
          maxLength: 50
          example: 71124-aa-mpLhF3-cc-l
        amount:
          $ref: '#/components/schemas/Amount'
        on_hold:
          type: boolean
          description: |
            Indicate whether the settlement is on hold for future release.
            true: The settlement is placed on hold.
            false: The settlement is processed immediately.
          example: true
        status:
          type: string
          description: Split Settlement status.
          enum:
            - RELEASED
            - HOLD
        updated_at:
          type: string
          format: date-time
          description: ISO 8601 UTC Timestamp when the split order was created.
          example: '2024-07-09T07:57:08.022Z'
    PaymentLinkSplitInfo:
      type: object
      description: Split settlement information.
      properties:
        split_type:
          type: string
          description: Type of split.
          example: AMOUNT
        split_details:
          type: array
          description: An array of objects that contains the split details.
          items:
            $ref: '#/components/schemas/PaymentLinkSplitDetail'
    PaymentLinkBankDetails:
      type: object
      description: Bank details for the customer.
      properties:
        account_number:
          type: string
          description: Customer's bank account number.
          example: '500000004545'
        ifsc_code:
          type: string
          description: Customer's bank IFSC code.
          example: BANK0000123
        bank_name:
          type: string
          description: Customer's account holding bank name.
          example: Example Bank
    PaymentLinkAccountDetails:
      type: object
      description: Customer's bank account details.
      properties:
        bank_details:
          $ref: '#/components/schemas/PaymentLinkBankDetails'
    PaymentLinkCartItem:
      type: object
      description: Individual cart item.
      properties:
        product_code:
          type: string
          description: Unique product identifier.
          example: xyz
        product_amount:
          $ref: '#/components/schemas/Amount'
    PaymentLinkCartDetails:
      type: object
      description: Cart details. If provided, cart information will be displayed during checkout.
      properties:
        items:
          type: array
          description: Array of cart items.
          items:
            $ref: '#/components/schemas/PaymentLinkCartItem'
    TokenPaymentOption:
      type: object
      description: An object that contains the payment option details.
      properties:
        encrypted_card_details:
          type: string
          description: Encrypted card details.
          minLength: 1
          maxLength: 50
          example: akdsdsdsh12k12h1k21h2khakshakhakshkh121h2k1hak
    TokenPayment:
      type: object
      description: An object that contains the payment details.
      properties:
        acquirer_data:
          type: object
          description: An object that contains the acquirer details.
          properties:
            approval_code:
              type: string
              description: Authorization code returned from acquirer against the payment.
              example: '030376'
            acquirer_reference:
              type: string
              description: Unique reference returned from acquirer for the payment.
              example: '202455840588334'
            rrn:
              type: string
              description: Retrieval reference number returned from acquirer for the payment.
              example: '419335023601'
            auth_reference:
              type: string
              description: '**Mandatory** for rupay transaction. A unique identifier linking the authorization request to the transaction.'
              example: AUTH12345678
    TokenStatus:
      type: string
      description: |
        Current status of the token.
        - INITIATED: Token creation is initiated.
        - ACTIVE: Token is active and can be used for transactions.
        - SUSPENDED: Token is temporarily suspended.
        - FAILED: Token creation failed.
        - DEACTIVATED: Token has been deactivated.
      enum:
        - INITIATED
        - ACTIVE
        - SUSPENDED
        - FAILED
        - DEACTIVATED
      example: ACTIVE
    TokenCardData:
      type: object
      description: Card data associated with a token.
      properties:
        last4_digit:
          type: string
          description: Last 4 digits of the card number.
          minLength: 4
          maxLength: 4
          example: '1112'
        card_type:
          type: string
          description: Type of card.
          enum:
            - CREDIT
            - DEBIT
          example: CREDIT
        network_name:
          type: string
          description: Card network name.
          example: Visa
        issuer_name:
          type: string
          description: Card issuer name.
          example: HDFC Bank
        card_category:
          type: string
          description: Category of the card.
          example: CONSUMER
        country_code:
          type: string
          description: Country code of the card issuer.
          example: IN
        international:
          type: boolean
          description: Whether the card is an international card.
          example: false
        emi:
          type: boolean
          description: Whether the card is eligible for EMI.
          example: true
        cvv_required:
          type: boolean
          description: Whether CVV is required for transactions with this token.
          example: true
    TokenTransactionalData:
      type: object
      description: Cryptogram and transactional data for a tokenized transaction.
      properties:
        cryptogram:
          type: string
          description: The generated cryptogram value for the transaction.
          example: AQBBBBBBBBFIkbMHAAdRAAAAAAA=
        token_reference:
          type: string
          description: Token reference number.
          example: '4895370012003478'
        payment_account_reference:
          type: string
          description: Payment account reference for the card.
          example: Q1HJZ28RKA1EBL470G9XYG90R5SFN
        token_expiry_month:
          type: string
          description: Token expiry month (2 digits).
          example: '12'
        token_expiry_year:
          type: string
          description: Token expiry year (4 digits).
          example: '2025'
    PayoutAmount:
      type: object
      description: Payout monetary amount with currency. For payout creation, minimum ₹1 (100 paisa), maximum ₹10 lakh (100000000 paisa).
      required:
        - value
        - currency
      properties:
        value:
          type: integer
          description: Amount in the smallest currency unit (paisa for INR). Minimum ₹1 (100), maximum ₹10 lakh (100000000).
          minimum: 100
          maximum: 100000000
          example: 4900
        currency:
          type: string
          description: Three-letter ISO 4217 currency code.
          default: INR
          example: INR
    CreatePayoutRequest:
      type: object
      description: Request body for creating a single payout.
      required:
        - clientReferenceId
        - payeeName
        - amount
        - mode
        - remarks
      properties:
        clientReferenceId:
          type: string
          x-idempotency-key: true
          description: |
            Unique identifier to track the payout. Must not contain spaces. **Acts as the idempotency key** — duplicate requests with the same `clientReferenceId` will not create a new payout.
          minLength: 1
          maxLength: 40
          example: 430582f3-6e83-4cec-a3ab-72847fb9680f
        payeeName:
          type: string
          description: Name of the beneficiary's bank account holder. Alphabets and spaces only.
          minLength: 1
          maxLength: 40
          example: Kevin Bob
        email:
          type: string
          format: email
          description: Email address of the beneficiary.
          example: kevin.bob@example.com
        phone:
          type: string
          description: Mobile number of the beneficiary (10 numeric digits).
          pattern: ^[0-9]{10}$
          example: '9876543210'
        accountNumber:
          type: string
          description: Beneficiary's bank account number. Mandatory for IMPS, NEFT, and RTGS.
          minLength: 9
          maxLength: 18
          example: '500012121313141415'
        branchCode:
          type: string
          description: |
            Beneficiary's bank IFSC code. Mandatory for IMPS, NEFT, and RTGS.
            First 4 characters alphabets, 5th character must be 0, remaining alphanumeric.
          maxLength: 11
          example: SBIN0011123
        amount:
          $ref: '#/components/schemas/PayoutAmount'
        mode:
          type: string
          description: Mode of payment for the payout.
          enum:
            - UPI
            - IMPS
            - NEFT
            - RTGS
          example: IMPS
        remarks:
          type: string
          description: Description or reference text for the transaction. Supported characters A-Z, a-z, 0-9, hyphen, space.
          minLength: 1
          maxLength: 50
          example: Refund payment
    PayoutLink:
      type: object
      description: HATEOAS link for navigating payout resources.
      properties:
        rel:
          type: string
          description: Relation type of the link.
          example: status
        href:
          type: string
          description: URL of the related resource.
          example: /payouts/v3/payments?paymentReferenceId=txn-b03ee63e412a4ecf88b6bdb08a6632c3
    CreatePayoutResponse:
      type: object
      description: Response returned after creating a payout.
      properties:
        clientReferenceId:
          type: string
          description: Unique identifier to track the payout.
          example: 0171c4c0-f50a-4151-b39b-63c87a3c0cd6
        requestReferenceId:
          type: string
          description: Unique identifier of the request in Pine Labs database.
          example: req-ba50808e45ce4d19a86988e7d90df3ad
        paymentReferenceId:
          type: string
          description: Unique identifier of the payment in Pine Labs database.
          example: txn-b03ee63e412a4ecf88b6bdb08a6632c3
        payeeName:
          type: string
          description: Name of the beneficiary.
          example: Kevin Bob
        accountNumber:
          type: string
          description: Masked account number of the beneficiary.
          example: '*******1415'
        branchCode:
          type: string
          description: IFSC code of the beneficiary's bank.
          example: SBIN0011123
        amount:
          $ref: '#/components/schemas/PayoutAmount'
        mode:
          type: string
          description: Payment mode used for the payout.
          enum:
            - UPI
            - IMPS
            - NEFT
            - RTGS
          example: IMPS
        status:
          type: string
          description: |
            Current payout status.
            - SCHEDULED: Request successfully received.
            - PENDING: Funding account has insufficient balance.
            - PROCESSING: Sent to bank, not yet processed.
            - PROCESSED: Bank processed, confirmation pending.
            - SUCCESS: Amount debited and credited successfully.
            - FAILED: Transaction failed.
          enum:
            - SCHEDULED
            - PENDING
            - PROCESSING
            - PROCESSED
            - SUCCESS
            - FAILED
          example: SCHEDULED
        message:
          type: string
          description: Message corresponding to the payout status.
          example: Payment instruction scheduled for execution
        scheduledAt:
          type: string
          format: date-time
          description: Scheduled execution time in UTC.
          example: '2025-07-16T10:26:06Z'
        remarks:
          type: string
          description: Description or reference text for the transaction.
          example: REFUND
        _links:
          type: array
          description: HATEOAS navigation links.
          items:
            $ref: '#/components/schemas/PayoutLink'
    SimpleAmount:
      type: object
      description: Monetary amount with currency (no min/max constraints). Used for fees, tax, and balance values.
      required:
        - value
        - currency
      properties:
        value:
          type: integer
          description: Amount in the smallest currency unit (paisa for INR).
          example: 0
        currency:
          type: string
          description: Three-letter ISO 4217 currency code.
          default: INR
          example: INR
    GetPayoutsPaymentItem:
      type: object
      description: Individual payout record returned in the Get Payouts list response.
      properties:
        clientReferenceId:
          type: string
          description: Unique identifier to track the payout.
          example: 0171c4c0-f50a-4151-b39b-63c87a3c0cd6
        paymentReferenceId:
          type: string
          description: Unique identifier of the payment in Pine Labs database.
          example: txn-b03ee63e412a4ecf88b6bdb08a6632c3
        bankTransactionReferenceId:
          type: string
          description: Unique Transaction Reference (UTR) from the bank.
          example: '664816162868'
        mode:
          type: string
          description: Payment mode used for the payout.
          enum:
            - UPI
            - IMPS
            - NEFT
            - RTGS
          example: IMPS
        amount:
          $ref: '#/components/schemas/PayoutAmount'
        accountNumber:
          type: string
          description: Beneficiary's bank account number (may be masked).
          example: '*******9300'
        payeeName:
          type: string
          description: Name of the beneficiary.
          example: Kevin Bob
        fees:
          $ref: '#/components/schemas/SimpleAmount'
        tax:
          $ref: '#/components/schemas/SimpleAmount'
        remarks:
          type: string
          description: Description or reference text for the transaction.
          example: REFUND
        status:
          type: string
          description: Current payout status.
          enum:
            - SCHEDULED
            - PENDING
            - PROCESSING
            - PROCESSED
            - SUCCESS
            - FAILED
          example: SUCCESS
        message:
          type: string
          description: Message corresponding to the payout status.
          example: Payment instruction successfully executed with bank
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the payout request was received (ISO 8601 UTC).
          example: '2025-07-16T10:26:06Z'
        updatedAt:
          type: string
          format: date-time
          description: Timestamp when the payout record was last updated (ISO 8601 UTC).
          example: '2025-07-16T10:28:06Z'
        scheduledAt:
          type: string
          format: date-time
          description: Scheduled execution time in UTC.
          example: '2025-07-16T10:26:06Z'
    GetPayoutsResponse:
      type: object
      description: Response returned when listing payouts.
      properties:
        payments:
          type: array
          description: List of payout records matching the query.
          items:
            $ref: '#/components/schemas/GetPayoutsPaymentItem'
        totalRecords:
          type: integer
          description: Total number of records matching the query.
          example: 1
        nextPage:
          type: integer
          description: Next page number in the result set.
          example: 1
        totalPages:
          type: integer
          description: Total number of pages in the result set.
          example: 1
        _links:
          type: array
          description: HATEOAS pagination links.
          items:
            $ref: '#/components/schemas/PayoutLink'
    GetAccountBalanceResponse:
      type: object
      description: Response returned for the funding account balance inquiry.
      properties:
        accountNumber:
          type: string
          description: Funding account number.
          example: '0995300992429'
        branchCode:
          type: string
          description: IFSC code of the funding account bank.
          example: UTIB0001111
        balance:
          $ref: '#/components/schemas/SimpleAmount'
    CreateBulkPayoutResponse:
      type: object
      description: Response returned after creating a bulk payout via file upload.
      properties:
        requestReferenceId:
          type: string
          description: Unique identifier of the bulk request in Pine Labs database.
          example: req-1b980dd2c75b456782bc1a3acff481a0
        status:
          type: string
          description: Bulk payout processing status.
          enum:
            - SCHEDULED
            - PENDING
            - PROCESSING
            - PROCESSED
            - SUCCESS
            - FAILED
          example: PROCESSED
        message:
          type: string
          description: Message corresponding to the bulk payout status.
          example: ''
        _links:
          type: array
          description: HATEOAS navigation links.
          items:
            $ref: '#/components/schemas/PayoutLink'
    UpdateScheduledPayoutRequest:
      type: object
      description: Request body for updating a scheduled payout.
      properties:
        scheduleAt:
          type: string
          format: date-time
          description: New scheduled time for executing the payout (ISO 8601 UTC).
          example: '2025-07-05T16:05:00Z'
    PayoutDetail:
      type: object
      description: Full payout detail returned in update/cancel and get-by-reference responses.
      properties:
        clientReferenceId:
          type: string
          description: Unique identifier to track the payout.
          example: test4feb0-10
        requestReferenceId:
          type: string
          description: Unique identifier of the request in Pine Labs database.
          example: req-7c85bda19bf141c981b94e750c6041b6
        paymentReferenceId:
          type: string
          description: Unique identifier of the payment in Pine Labs database.
          example: txn-f9e00a80a357418d908a67bd30cdbc37
        payeeName:
          type: string
          description: Name of the beneficiary.
          example: Kevin Bob
        accountNumber:
          type: string
          description: Beneficiary's bank account number (may be masked).
          example: '919000664016'
        branchCode:
          type: string
          description: IFSC code of the beneficiary's bank.
          example: PYTM0123456
        vpa:
          type: string
          description: VPA handle of the beneficiary (for UPI payouts).
          example: 9876543210@examplebank
        email:
          type: string
          format: email
          description: Email address of the beneficiary.
          example: s.john@g.com
        phone:
          type: string
          description: Mobile number of the beneficiary.
          example: '9000664016'
        amount:
          $ref: '#/components/schemas/PayoutAmount'
        mode:
          type: string
          description: Payment mode used for the payout.
          enum:
            - UPI
            - IMPS
            - NEFT
            - RTGS
          example: IMPS
        status:
          type: string
          description: |
            Current payout status.
            - SCHEDULED: Request successfully received.
            - PENDING: Funding account has insufficient balance.
            - PROCESSING: Sent to bank, not yet processed.
            - PROCESSED: Bank processed, confirmation pending.
            - SUCCESS: Amount debited and credited successfully.
            - FAILED: Transaction failed.
          enum:
            - SCHEDULED
            - PENDING
            - PROCESSING
            - PROCESSED
            - SUCCESS
            - FAILED
          example: SCHEDULED
        message:
          type: string
          description: Message corresponding to the payout status.
          example: Payment instruction pending to be executed
        scheduledAt:
          type: string
          format: date-time
          description: Scheduled execution time in UTC. Empty string when cancelled.
          example: '2025-07-05T16:05:00Z'
        remarks:
          type: string
          description: Description or reference text for the transaction.
          example: Test transaction
        _links:
          type: array
          description: HATEOAS navigation links.
          items:
            $ref: '#/components/schemas/PayoutLink'
    PaginationLinks:
      type: object
      description: Pagination links for navigation.
      properties:
        first:
          type:
            - object
            - 'null'
          properties:
            href:
              type: string
              description: URL of the first page.
              example: https://api.pluralpay.in/api/v1/public/{resource}/?size=10&page=0&sort=id,asc
        self:
          type:
            - object
            - 'null'
          properties:
            href:
              type: string
              description: URL of the current page.
              example: https://api.pluralpay.in/api/v1/public/{resource}/?size=10&page=0&sort=id,asc
        next:
          type:
            - object
            - 'null'
          properties:
            href:
              type: string
              description: URL of the next page.
              example: https://api.pluralpay.in/api/v1/public/{resource}/?size=10&page=0&sort=id,asc
        last:
          type:
            - object
            - 'null'
          properties:
            href:
              type: string
              description: URL of the last page.
              example: https://api.pluralpay.in/api/v1/public/{resource}/?size=10&page=0&sort=id,asc
    PageInfo:
      type: object
      description: Page information for paginated responses.
      properties:
        size:
          type: integer
          description: Number of items per page.
          example: 10
        total_elements:
          type: integer
          description: Total number of elements.
          example: 50
        total_pages:
          type: integer
          description: Total number of pages.
          example: 5
        number:
          type: integer
          description: Page number.
          example: 1
    SubscriptionAmount:
      type: object
      description: This is the recurring mandate amount, that would be charged for each frequency. For instance 200 every month. This field is not needed if the mandate frequency is AS
      required:
        - value
        - currency
      properties:
        value:
          type: integer
          description: Amount in the smallest currency unit (paisa for INR). Minimum ₹1 (100), maximum ₹10 lakh (100000000).
          minimum: 100
          maximum: 100000000
          example: 1000
        currency:
          type: string
          description: Three-letter ISO 4217 currency code.
          default: INR
          example: INR
    MaxLimitAmount:
      type: object
      description: This is maximum amount of mandate for which a subscription is created for. There could be instances where maximum amount of mandate is created with a buffer. For instance with AS frequency you are taking mandate for SIP, first month SIP is 100, second month 200 etc. In such cases you will create a mandate with higher max_limit_amount
      required:
        - value
        - currency
      properties:
        value:
          type: integer
          description: Amount in the smallest currency unit (paisa for INR). Minimum ₹1 (100), maximum ₹10 lakh (100000000).
          minimum: 100
          maximum: 100000000
          example: 1000
        currency:
          type: string
          description: Three-letter ISO 4217 currency code.
          default: INR
          example: INR
    InitialDebitAmount:
      type: object
      description: This is initial debit amount on top of your recurring mandate amount. This is an optional field. For instance you want to create monthly 200 rupee mandate, but want to charge 20 rupees one time registration fee initially. You will utilize this field in such cases
      required:
        - value
        - currency
      properties:
        value:
          type: integer
          description: Amount in the smallest currency unit (paisa for INR). Minimum ₹1 (100), maximum ₹10 lakh (100000000).
          minimum: 100
          maximum: 100000000
          example: 1000
        currency:
          type: string
          description: Three-letter ISO 4217 currency code.
          default: INR
          example: INR
    PlanResponse:
      type: object
      description: Plan object returned in create, get, and update responses.
      properties:
        plan_id:
          type: string
          description: Unique identifier for the subscription plan in the Pine Labs database.
          example: v1-plan-4405071524-aa-qlAtAf
        status:
          type: string
          description: |
            Status of the plan.
            - ACTIVE: Plan creation completed and start time has passed.
            - INACTIVE: Plan is disabled or has exceeded its validity period.
            - CREATED: Plan creation completed but start time is in the future.
          enum:
            - ACTIVE
            - INACTIVE
            - CREATED
          example: ACTIVE
        plan_name:
          type: string
          description: Subscription plan name.
          example: Monthly Plan
        plan_description:
          type: string
          description: Corresponding description for a plan.
          example: Diwali dhammaka plan intended to attract customers on diwali time
        frequency:
          type: string
          description: Frequency of recurring transactions for this particular plan.
          enum:
            - Day
            - Week
            - Month
            - Year
            - Bi-Monthly
            - Quarterly
            - Half-Yearly
            - AS
            - OT
            - Not Applicable
          example: Day
        amount:
          $ref: '#/components/schemas/SubscriptionAmount'
        max_limit_amount:
          $ref: '#/components/schemas/SubscriptionAmount'
        trial_period_in_days:
          type: integer
          description: Duration of the trial period in days.
          example: 1
        start_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the subscription plan is active.
          example: '2022-02-01T17:32:28Z'
        end_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the subscription plan expires.
          example: '2022-10-21T17:32:28Z'
        merchant_metadata:
          type: object
          description: Key-value pairs for additional information. Max 10 pairs, 256 chars each.
          additionalProperties:
            type: string
            maxLength: 256
          maxProperties: 10
          example:
            key1: DD
            key2: XOF
        merchant_plan_reference:
          type: string
          description: Unique identifier of the merchant plan reference.
          minLength: 1
          maxLength: 50
          example: '1234567890'
        created_at:
          type:
            - string
            - 'null'
          format: date-time
          description: ISO 8601 UTC Timestamp when the create plan request was received.
          example: '2022-10-21T17:32:28Z'
        modified_at:
          type:
            - string
            - 'null'
          format: date-time
          description: ISO 8601 UTC Timestamp when the plan was last updated.
          example: '2022-10-21T17:32:28Z'
        initial_debit_amount:
          $ref: '#/components/schemas/SubscriptionAmount'
        auto_debit_ot:
          type: string
          description: Indicates whether auto-debit is enabled for one-time payments.
          example: 'false'
    ListPlansResponse:
      type: object
      description: Response returned when listing all plans.
      properties:
        links:
          $ref: '#/components/schemas/PaginationLinks'
        page:
          $ref: '#/components/schemas/PageInfo'
        plans:
          type: array
          description: List of plan records.
          items:
            $ref: '#/components/schemas/PlanResponse'
    CreatePlanRequest:
      type: object
      description: Request body for creating a subscription plan.
      required:
        - plan_name
        - frequency
        - amount
        - max_limit_amount
        - end_date
        - merchant_plan_reference
      properties:
        plan_name:
          type: string
          description: Subscription plan name.
          example: Monthly Plan
        plan_description:
          type: string
          description: Corresponding description for a plan.
          example: Diwali dhammaka plan intended to attract customers on diwali time
        frequency:
          type: string
          description: |
            Frequency of recurring transactions for this particular plan.
          enum:
            - Day
            - Week
            - Month
            - Year
            - Bi-Monthly
            - Quarterly
            - Half-Yearly
            - AS
            - OT
            - Not Applicable
          example: Month
        amount:
          $ref: '#/components/schemas/SubscriptionAmount'
        max_limit_amount:
          $ref: '#/components/schemas/MaxLimitAmount'
        initial_debit_amount:
          $ref: '#/components/schemas/InitialDebitAmount'
        trial_period_in_days:
          type: integer
          description: Duration of the trial period in days.
          example: 0
        start_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the subscription plan is active and available for use.
          example: '2022-02-01T17:32:28Z'
        end_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the subscription plan expires.
          example: '2026-10-21T12:02:28Z'
        merchant_metadata:
          type: object
          description: Key-value pairs for additional information. Max 10 pairs, 256 chars each.
          additionalProperties:
            type: string
            maxLength: 256
          maxProperties: 10
          example:
            key1: DD
        merchant_plan_reference:
          type: string
          description: '**Idempotency Key.** Unique identifier of the merchant plan reference. Duplicate requests with the same `merchant_plan_reference` will return the existing plan instead of creating a new one.'
          minLength: 1
          maxLength: 50
          example: '1234567890'
        auto_debit_ot:
          type: string
          description: Indicates whether auto-debit is enabled for one-time payments under the subscription plan.
          example: 'false'
    UpdatePlanRequest:
      type: object
      description: Request body for updating a subscription plan.
      properties:
        plan_name:
          type: string
          description: Subscription plan name.
          example: Monthly Plan Updated
        plan_description:
          type: string
          description: Corresponding description for a plan.
          example: Updated plan description
        amount:
          $ref: '#/components/schemas/SubscriptionAmount'
        max_limit_amount:
          $ref: '#/components/schemas/SubscriptionAmount'
        trial_period_in_days:
          type: integer
          description: Duration of the trial period in days.
          example: 1
        end_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the subscription plan expires.
          example: '2026-10-21T12:02:28Z'
        merchant_metadata:
          type: object
          description: Key-value pairs for additional information. Max 10 pairs, 256 chars each.
          additionalProperties:
            type: string
            maxLength: 256
          maxProperties: 10
          example:
            key1: DD
    BankAccount:
      type: object
      description: Bank account details for Third-Party Validation (TPV).
      properties:
        account_number:
          type:
            - string
            - 'null'
          description: Bank account number.
          minLength: 1
          maxLength: 50
          example: '12345678912345'
        name:
          type:
            - string
            - 'null'
          description: Name of Customer.
          example: Kevin Bob
        ifsc:
          type:
            - string
            - 'null'
          description: IFSC code of the bank account.
          minLength: 11
          maxLength: 11
          example: HDFC0001234
    SubscriptionDetail:
      type: object
      description: Subscription detail returned in get, pause, resume, update, and cancel responses.
      properties:
        order_id:
          type: string
          description: Unique identifier of the order in the Pine Labs Online database.
          example: v1-4405071524-aa-qlAtAf
        subscription_id:
          type: string
          description: Unique identifier for the subscription.
          maxLength: 50
          example: v1-sub-4405071524-aa-qlAtAf
        merchant_subscription_reference:
          type: string
          description: Unique identifier of the merchant subscription reference.
          minLength: 1
          maxLength: 50
          example: '1234567890'
        enable_notification:
          type: boolean
          description: Indicates if notifications are enabled.
          example: true
        plan_details:
          $ref: '#/components/schemas/PlanResponse'
        quantity:
          type: integer
          description: The quantity of the subscription for the selected plan.
          example: 1
        start_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the subscription starts.
          example: '2022-07-21T17:32:28Z'
        end_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the subscription expires.
          example: '2022-09-21T17:32:28Z'
        customer_id:
          type: string
          description: Unique identifier of the customer.
          minLength: 1
          maxLength: 19
          example: '123456'
        payment_mode:
          type: string
          description: Payment methods allowed for subscription.
          enum:
            - CARD
            - UPI
          example: UPI
        allowed_payment_methods:
          type: array
          description: The type of payment methods offered to customers.
          items:
            type: string
            enum:
              - CARD
              - UPI
              - POINTS
              - NETBANKING
              - WALLET
          example:
            - UPI
        integration_mode:
          type: string
          description: Type of integration.
          enum:
            - SEAMLESS
            - REDIRECT
          example: SEAMLESS
        merchant_metadata:
          type: object
          description: Key-value pairs for additional information.
          additionalProperties:
            type: string
            maxLength: 256
          maxProperties: 10
          example:
            key1: DD
            key2: XOF
        status:
          type: string
          description: Status of the Subscription.
          enum:
            - CREATED
            - TRIAL
            - ACTIVE
            - PAUSED
            - RESUMING
            - RESUMED
            - DEBIT_FAILED
            - UPDATING
            - COMPLETED
            - EXPIRED
            - CANCELLED
            - CANCELLING
            - HALTED
            - INACTIVE
          example: ACTIVE
        is_tpv_enabled:
          type: boolean
          description: Indicates if Third-Party Validation (TPV) is enabled.
          example: true
        bank_account:
          $ref: '#/components/schemas/BankAccount'
        created_at:
          type: string
          format: date-time
          description: ISO 8601 UTC Timestamp when the subscription was created.
          example: '2022-10-21T17:32:28Z'
        modified_at:
          type: string
          format: date-time
          description: ISO 8601 UTC Timestamp when the subscription was last updated.
          example: '2022-10-21T17:32:28Z'
        order_amount:
          $ref: '#/components/schemas/SubscriptionAmount'
    ListSubscriptionsResponse:
      type: object
      description: Response returned when listing all subscriptions.
      properties:
        links:
          $ref: '#/components/schemas/PaginationLinks'
        page:
          $ref: '#/components/schemas/PageInfo'
        subscriptions:
          type: array
          description: List of subscription records.
          items:
            $ref: '#/components/schemas/SubscriptionDetail'
    CreateSubscriptionRequest:
      type: object
      description: Request body for creating a subscription.
      required:
        - merchant_subscription_reference
        - plan_id
        - start_date
        - end_date
        - customer_id
        - integration_mode
      properties:
        merchant_subscription_reference:
          type: string
          description: '**Idempotency Key.** Unique identifier of the merchant subscription reference. Duplicate requests with the same `merchant_subscription_reference` will return the existing subscription instead of creating a new one.'
          minLength: 1
          maxLength: 50
          example: f5d77ef9-fa11-4f58-a9f4-543e4a7022c5
        plan_id:
          type: string
          description: Unique identifier for the subscription plan.
          example: v1-pla-250612061639-aa-666Zge
        enable_notification:
          type: boolean
          description: Indicates if notifications are enabled.
          example: true
        start_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the subscription starts.
          example: '2025-06-12T06:22:21Z'
        end_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the subscription expires.
          example: '2025-06-21T17:32:28Z'
        customer_id:
          type: string
          description: Unique identifier of the customer in the Pine Labs Online database.
          minLength: 1
          maxLength: 50
          example: cust-v1-250519171901-aa-dPF6mg
        allowed_payment_methods:
          type: array
          description: The type of payment methods you want to offer customers.
          items:
            type: string
            enum:
              - CARD
              - UPI
              - POINTS
              - NETBANKING
              - WALLET
          example:
            - UPI
        integration_mode:
          type: string
          description: Type of integration.
          enum:
            - SEAMLESS
            - REDIRECT
          example: REDIRECT
        merchant_metadata:
          type: object
          description: Key-value pairs for additional information. Max 10 pairs, 256 chars each.
          additionalProperties:
            type: string
            maxLength: 256
          maxProperties: 10
          example:
            key1: DD
            key2: XOF
        is_tpv_enabled:
          type: boolean
          description: Indicates if Third-Party Validation (TPV) is enabled.
          example: false
        bank_account:
          $ref: '#/components/schemas/BankAccount'
        callback_url:
          type: string
          description: URL to redirect customers to specific success or failure pages.
          example: www.google.com
        failure_callback_url:
          type: string
          description: URL specifically used to redirect customers to a failure page.
          example: www.example.com/failure
    CreateSubscriptionResponse:
      type: object
      description: Response returned after creating a subscription.
      properties:
        callback_url:
          type: string
          description: URL to redirect customers after payment.
          example: www.google.com
        failure_callback_url:
          type: string
          description: URL for failed transaction redirection.
          example: www.example.com/failure
        redirect_url:
          type: string
          description: URL for redirection after checkout.
          example: https://api.pluralonline.com/api/v3/checkout-bff/redirect/checkout?token=...&subscription_id=v1-sub-4405071524-aa-qlAtAf
        order_id:
          type: string
          description: Unique identifier of the order in the Pine Labs Online database.
          example: v1-250612062122-aa-UZyPbu
        subscription_id:
          type: string
          description: Unique identifier for the subscription in the Pine Labs Online database.
          maxLength: 50
          example: v1-sub-250612062122-aa-3HLXL5
        merchant_subscription_reference:
          type: string
          description: Unique identifier of the merchant subscription reference.
          minLength: 1
          maxLength: 50
          example: f5d77ef9-fa11-4f58-a9f4-543e4a7022c5
        enable_notification:
          type: boolean
          description: Indicates if notifications are enabled.
          example: true
        plan_details:
          $ref: '#/components/schemas/PlanResponse'
        quantity:
          type: integer
          description: The quantity of the subscription for the selected plan.
          example: 1
        start_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the subscription starts.
          example: '2025-06-12T06:22:21Z'
        end_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the subscription expires.
          example: '2025-06-21T17:32:28Z'
        customer_id:
          type: string
          description: Unique identifier of the customer.
          minLength: 1
          maxLength: 50
          example: cust-v1-250519171901-aa-dPF6mg
        payment_mode:
          type:
            - string
            - 'null'
          description: Payment methods allowed for subscription.
          enum:
            - CARD
            - UPI
            - null
          example: null
        allowed_payment_methods:
          type: array
          description: The type of payment methods offered to customers.
          items:
            type: string
            enum:
              - CARD
              - UPI
              - POINTS
              - NETBANKING
              - WALLET
          example:
            - UPI
        integration_mode:
          type: string
          description: Type of integration.
          enum:
            - SEAMLESS
            - REDIRECT
          example: REDIRECT
        merchant_metadata:
          type: object
          description: Key-value pairs for additional information.
          additionalProperties:
            type: string
            maxLength: 256
          maxProperties: 10
          example:
            key1: DD
            key2: XOF
        status:
          type: string
          description: |
            Status of the Subscription.
            - CREATED: Subscription created but not yet active.
            - TRIAL: In trial period before regular billing starts.
            - ACTIVE: Currently active and payments being processed.
            - PAUSED: Temporarily paused.
            - RESUMING: Transitioning from PAUSED/HALTED to RESUMED.
            - RESUMED: Resumed after being paused or halted.
            - DEBIT_FAILED: Scheduled payment failed.
            - UPDATING: Details are currently being modified.
            - COMPLETED: Successfully completed billing cycle.
            - EXPIRED: Reached end date and expired.
            - CANCELLED: Canceled and no longer active.
            - CANCELLING: Cancellation in progress.
            - HALTED: Stopped due to an issue or external intervention.
            - INACTIVE: Created but not yet activated.
          enum:
            - CREATED
            - TRIAL
            - ACTIVE
            - PAUSED
            - RESUMING
            - RESUMED
            - DEBIT_FAILED
            - UPDATING
            - COMPLETED
            - EXPIRED
            - CANCELLED
            - CANCELLING
            - HALTED
            - INACTIVE
          example: CREATED
        is_tpv_enabled:
          type: boolean
          description: Indicates if Third-Party Validation (TPV) is enabled.
          example: false
        bank_account:
          $ref: '#/components/schemas/BankAccount'
        created_at:
          type: string
          format: date-time
          description: ISO 8601 UTC Timestamp when the subscription was created.
          example: '2025-06-12T06:21:22.242344Z'
        modified_at:
          type: string
          format: date-time
          description: ISO 8601 UTC Timestamp when the subscription was last updated.
          example: '2025-06-12T06:21:22.267111Z'
        order_amount:
          $ref: '#/components/schemas/SubscriptionAmount'
    UpdateSubscriptionRequest:
      type: object
      description: Request body for updating a subscription.
      required:
        - reason
      properties:
        new_plan_id:
          type: string
          description: New plan ID to switch the subscription to.
          example: v1-plan-4405071524-aa-newPlan
        new_end_date:
          type: string
          format: date-time
          description: New end date in ISO 8601 UTC.
          example: '2025-12-31T23:59:59Z'
        reason:
          type: string
          description: Reason for the update.
          example: Switching to annual plan
    PresentationDetail:
      type: object
      description: Presentation detail returned in get responses.
      properties:
        subscription_id:
          type: string
          description: Unique identifier for the subscription.
          maxLength: 50
          example: v1-sub-250911093342-aa-v9YH7S
        presentation_id:
          type: string
          description: Unique identifier for the presentation.
          maxLength: 50
          example: v1-bil-250911093822-aa-i37gSm
        due_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the payment is due.
          example: '2025-09-12T18:00:00Z'
        amount:
          $ref: '#/components/schemas/SubscriptionAmount'
        merchant_presentation_reference:
          type: string
          description: Unique identifier of the merchant presentation reference.
          minLength: 1
          maxLength: 50
          example: z1B3pu003
        pdn_status:
          type: string
          description: |
            Pre-debit notification status.
            - CREATED: Pine Labs received the pre-debit notification request.
            - INITIATED: Pre-debit notification request sent to the Bank.
            - NOTIFIED: Notification delivered successfully.
            - FAILED: Notification delivery attempt unsuccessful.
            - CANCELLED: Notification stopped before completion.
            - PAUSED: Notification temporarily halted.
            - PDN_FAILED: Pre-debit notification failed after all retry attempts.
          enum:
            - CREATED
            - INITIATED
            - NOTIFIED
            - FAILED
            - CANCELLED
            - PAUSED
            - PDN_FAILED
          example: NOTIFIED
        status:
          type: string
          description: |
            Presentation status.
            - CREATED: Customer Debit request received.
            - PENDING: Debit request sent to Bank, awaiting response.
            - COMPLETED: Debit successfully received.
            - FAILED: Debit request unsuccessful.
            - CANCELLED: Cancel Subscription request received.
            - PAUSED: Pause subscription request received.
            - PARTIALLY_REFUNDED: Partial refund successful.
            - REFUNDED: Full refund successful.
            - INITIATED: Debit request initiated.
          enum:
            - CREATED
            - PENDING
            - COMPLETED
            - FAILED
            - CANCELLED
            - PAUSED
            - PARTIALLY_REFUNDED
            - REFUNDED
            - INITIATED
          example: PENDING
        failure_count:
          type: integer
          description: The number of times the requests to execute mandates at banks have failed.
          example: 0
        order_id:
          type: string
          description: Unique identifier of the order created for this presentation.
          example: v1-260210121553-aa-8Y4x1I
    ListPresentationsResponse:
      type: object
      description: Response returned when listing presentations by subscription ID.
      properties:
        links:
          $ref: '#/components/schemas/PaginationLinks'
        page:
          $ref: '#/components/schemas/PageInfo'
        presentations:
          type: array
          description: List of presentation records.
          items:
            $ref: '#/components/schemas/PresentationDetail'
    CreatePresentationRequest:
      type: object
      description: Request body for creating a presentation (mandate debit request).
      properties:
        subscription_id:
          type: string
          description: Unique identifier for the subscription.
          example: v1-sub-250612062122-aa-3HLXL5
        due_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the payment is due.
          example: '2025-06-05T06:14:21Z'
        amount:
          $ref: '#/components/schemas/SubscriptionAmount'
        merchant_presentation_reference:
          type: string
          description: Unique identifier of the merchant presentation reference.
          minLength: 1
          maxLength: 50
          example: 9caa061f-0e50-494b-aa13-8e902b0bef03
    CreateReservePayDebitRequest:
      type: object
      description: Request body for creating a presentation (mandate debit request).
      properties:
        subscription_id:
          type: string
          description: Unique identifier for the subscription.
          example: v1-sub-250612062122-aa-3HLXL5
        amount:
          $ref: '#/components/schemas/SubscriptionAmount'
        merchant_presentation_reference:
          type: string
          description: Unique identifier of the merchant presentation reference.
          minLength: 1
          maxLength: 50
          example: 9caa061f-0e50-494b-aa13-8e902b0bef03


    CreatePresentationResponse:
      type: object
      description: Response returned after creating a presentation.
      properties:
        subscription_id:
          type: string
          description: Unique identifier for the subscription.
          maxLength: 50
          example: v1-sub-250612062122-aa-3HLXL5
        presentation_id:
          type: string
          description: Unique identifier for the presentation.
          maxLength: 50
          example: v1-bil-250612063111-aa-FJIBcB
        due_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the payment is due.
          example: '2025-06-05T06:14:21.72036Z'
        amount:
          $ref: '#/components/schemas/SubscriptionAmount'
        status:
          type: string
          description: |
            Presentation status.
            - CREATED: Presentation request created successfully.
            - PENDING: Request sent to bank, awaiting response.
            - COMPLETED: Successfully processed.
            - FAILED: Request failed at bank's end.
            - CANCELLED: Presentation request cancelled.
            - PAUSED: Subscription is currently paused.
            - PARTIALLY_REFUNDED: Partial refund issued.
            - REFUNDED: Full refund issued.
          enum:
            - CREATED
            - PENDING
            - COMPLETED
            - FAILED
            - CANCELLED
            - PAUSED
            - PARTIALLY_REFUNDED
            - REFUNDED
          example: CREATED
        merchant_presentation_reference:
          type: string
          description: Unique identifier of the merchant presentation reference.
          minLength: 1
          maxLength: 50
          example: 9caa061f-0e50-494b-aa13-8e902b0bef03
    SubscriptionNotificationRequest:
      type: object
      description: Request body for sending subscription notification (pre-debit notification).
      required:
        - subscription_id
        - due_date
        - amount
        - merchant_presentation_reference
      properties:
        subscription_id:
          type: string
          description: Unique identifier for the subscription.
          example: v1-sub-4405071524-aa-qlAtAf
        due_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the payment is due.
          example: '2024-03-15T10:30:00Z'
        amount:
          $ref: '#/components/schemas/SubscriptionAmount'
        merchant_presentation_reference:
          type: string
          description: '**Idempotency Key.** Unique identifier of the merchant presentation reference. Duplicate requests with the same `merchant_presentation_reference` will return the existing presentation instead of creating a new one.'
          minLength: 1
          maxLength: 50
          example: '1234567890'
        is_merchant_retry:
          type: boolean
          description: Indicates whether the merchant controls the retry process.
          example: false
    SubscriptionNotificationResponse:
      type: object
      description: Response returned after sending a subscription notification.
      properties:
        subscription_id:
          type: string
          description: Unique identifier for the subscription.
          maxLength: 50
          example: v1-sub-4405071524-aa-qlAtAf
        due_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp of the date & time at which the payment is due.
          example: '2022-09-21T17:32:28Z'
        presentation_id:
          type: string
          description: Unique identifier for the presentation.
          maxLength: 50
          example: v1-pre-4405071524-aa-qlAtAf
        amount:
          $ref: '#/components/schemas/SubscriptionAmount'
        merchant_presentation_reference:
          type: string
          description: Unique identifier of the merchant presentation reference.
          minLength: 1
          maxLength: 50
          example: '1234567890'
        pdn_status:
          type: string
          description: Pre-debit notification status.
          enum:
            - CREATED
            - INITIATED
            - NOTIFIED
            - FAILED
            - CANCELLED
            - PAUSED
            - PDN_FAILED
          example: CREATED
        status:
          type: string
          description: |
            Subscription presentation status.
          enum:
            - WAITING_FOR_EXECUTION
            - CREATED
            - INITIATED
            - NOTIFIED
            - FAILED
            - CANCELLED
            - PAUSED
            - PDN_FAILED
          example: WAITING_FOR_EXECUTION
    CreateDebitRequest:
      type: object
      description: Request body for creating a debit (executing mandate).
      properties:
        presentation_id:
          type: string
          description: Presentation ID from Pine Labs.
          example: v1-pre-4405071524-aa-qlAtAf
        merchant_presentation_reference:
          type: string
          description: Merchant presentation reference.
          minLength: 1
          maxLength: 50
          example: '1234567890'
        is_merchant_retry:
          type: string
          description: Set to true to control retry process yourself.
          example: 'false'
    CreateDebitResponse:
      type: object
      description: Response returned after creating a debit.
      properties:
        subscription_id:
          type: string
          description: Unique identifier for the subscription.
          maxLength: 50
          example: v1-sub-4405071524-aa-qlAtAf
        presentation_id:
          type: string
          description: Unique identifier for the presentation.
          maxLength: 50
          example: v1-pre-4405071524-aa-qlAtAf
        due_date:
          type: string
          format: date-time
          description: The ISO 8601 UTC Timestamp when the payment is due.
          example: '2024-03-15T10:30:00Z'
        amount:
          $ref: '#/components/schemas/SubscriptionAmount'
        merchant_presentation_reference:
          type: string
          description: Unique identifier of the merchant presentation reference.
          minLength: 1
          maxLength: 50
          example: '1234567890'
        status:
          type: string
          description: |
            Debit status.
            - CREATED: Presentation request successfully received.
            - PENDING: Pre-debit notification initiated.
            - PAUSED: Subscription is paused.
            - CANCELLED: Subscription is cancelled.
            - FAILED: Pre-debit notification or customer debit fails (up to 3 retries).
            - COMPLETED: Debit is successful.
          enum:
            - CREATED
            - PENDING
            - PAUSED
            - CANCELLED
            - FAILED
            - COMPLETED
          example: CREATED
    MerchantRetryRequest:
      type: object
      description: Request body for retrying a mandate execution.
      properties:
        presentation_id:
          type: string
          description: Presentation ID from Pine Labs.
          example: v1-pre-4405071524-aa-qlAtAf
        merchant_presentation_reference:
          type: string
          description: Merchant presentation reference.
          minLength: 1
          maxLength: 50
          example: '1234567890'
  
  # ─── Decoupled Authorization ──────────────────
    DecoupledAuthorizePaymentRequest:
      type: object
      description: |
        Request body for decoupled authorization.
      properties:
        decrypted_card_details:
          type: object
          description: An object that contains the decrypted card details.
          required:
            - expiration_month
            - expiration_year
          properties:
            pan:
              type: string
              description: |
                Plain Card number 
              minLength: 1
              maxLength: 50
              example: '4111111111111111'
            cvv:
              type: string
              description: |
                CVV of the card. 
              minLength: 1
              maxLength: 5
              example: '321'
            card_holder_name:
              type: string
              description: |
                Name of the card holder. 
              minLength: 1
              maxLength: 100
              example: 'Adrien'
            token:
              type: string
              description: |
                Unique identifier of the card as per the token transaction type.
              minLength: 1
              maxLength: 50
              example: '4111111111111111'
            expiration_month:
              type: string
              description: Card token expiry month. Must be 2 digits.
              minLength: 2
              maxLength: 2
              example: '12'
            expiration_year:
              type: string
              description: Card token expiry year. Must be 4 digits.
              minLength: 4
              maxLength: 4
              example: '2031'
            cryptogram:
              type: string
              description: Unique encrypted text.
              example: AceY+igABPs3jdwNaDg3MAACAAA=
            cavv:
              type: string
              description: |
                Unique encrypted text.
              example: AceY+igABPs3jdwNaDg3MAACAAA=
            eci:
              type: string
              description: Indicates the authentication outcome for the transaction.
              example: '05'
        acquirer_payment_details:
          type: object
          description: An object that contains acquirer related details 
          properties:
            directory_server_transaction_id:
              type: string
              description: Transaction ID generated by Directory Server
            acs_transaction_id:
              type: string
              description: Transaction ID generated by Access Control Server
            three_ds_server_transaction_id:
              type: string
              description: Transaction ID generated by 3ds server
            three_ds_version:
              type: string
              description: 3ds version
              example: 2.2.0
        authentication_type: 
            type: string
            description: Authentication mechanism used
            enum: 
              - 3ds
              - passkey
    
    DecoupledAuthorizePaymentResponse:
      type: object
      description: Response from the Authorize Payment API (Apple Pay).
      properties:
        data:
          type: object
          properties:
            order_id:
              type: string
              example: v1-251012055723-aa-Vhv53a
            merchant_order_reference:
              type: string
              maxLength: 50
              example: 3fb59787-c38b-4986-87da-39be0a585fae
            type:
              type: string
              enum:
                - CHARGE
                - REFUND
              example: CHARGE
            status:
              type: string
              enum:
                - CREATED
                - PENDING
                - PROCESSED
                - AUTHORIZED
                - CANCELLED
                - ATTEMPTED
                - FAILED
                - FULLY_REFUNDED
                - PARTIALLY_REFUNDED
              example: PROCESSED
            callback_url:
              type: string
              example: https://simple-callback.onrender.com/payment/callback
            failure_callback_url:
              type: string
              example: ''
            merchant_id:
              type: string
              example: '106974'
            order_amount:
              type: object
              properties:
                value:
                  type: integer
                  example: 10000
                currency:
                  type: string
                  example: INR
            pre_auth:
              type: boolean
              example: false
            part_payment:
              type: boolean
              description: Whether the transaction is a part payment.
              example: false
            allowed_payment_methods:
              type: array
              items:
                type: string
              example:
                - CARD
                - WALLET
            purchase_details:
              type: object
              properties:
                customer:
                  type: object
                  properties:
                    email_id:
                      type: string
                      maxLength: 50
                    first_name:
                      type: string
                      maxLength: 50
                    last_name:
                      type: string
                      maxLength: 50
                    mobile_number:
                      type: string
                      maxLength: 20
                    country_code:
                      type: string
                      maxLength: 5
                    billing_address:
                      $ref: '#/components/schemas/Address'
                    shipping_address:
                      $ref: '#/components/schemas/Address'
                    is_edit_customer_details_allowed:
                      type: boolean
                merchant_metadata:
                  $ref: '#/components/schemas/MerchantMetadata'
            payments:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    maxLength: 50
                  merchant_payment_reference:
                    type: string
                  status:
                    type: string
                    enum:
                      - PENDING
                      - AUTHORIZED
                      - CANCELLED
                      - PROCESSED
                      - FAILED
                  payment_amount:
                    type: object
                    properties:
                      value:
                        type: integer
                      currency:
                        type: string
                  payment_method:
                    type: string
                    enum:
                      - CARD
                      - UPI
                      - POINTS
                      - NETBANKING
                      - WALLET
                  payment_option:
                    type: object
                    description: Payment option details. Structure varies based on payment_method.
                    properties:
                      card_data:
                        $ref: '#/components/schemas/CardData'
                      wallet_details:
                        type: object
                        properties:
                          wallet_code:
                            type: string
                            example: APPLE_PAY
                          wallet_card_data:
                            type: object
                            properties:
                              card_type:
                                type: string
                                enum:
                                  - DEBIT
                                  - CREDIT
                              network_name:
                                type: string
                              issuer_name:
                                type: string
                              card_category:
                                type: string
                              country_code:
                                type: string
                              token_txn_type:
                                type: string
                                enum:
                                  - ALT_TOKEN
                                  - NETWORK_TOKEN
                                  - ISSUER_TOKEN
                              save:
                                type: boolean
                              card_holder_name:
                                type: string
                              bin_min:
                                type: string
                              bin_max:
                                type: string
                  acquirer_data:
                    type: object
                    properties:
                      approval_code:
                        type: string
                        maxLength: 50
                      acquirer_reference:
                        type: string
                        maxLength: 50
                      rrn:
                        type: string
                        maxLength: 50
                      is_aggregator:
                        type: boolean
                      acquirer_name:
                        type: string
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
            created_at:
              type: string
              format: date-time
              example: '2025-06-04T11:00:51.067Z'
            updated_at:
              type: string
              format: date-time
              example: '2025-06-04T11:01:26.656Z'
            integration_mode:
              type: string
              enum:
                - SEAMLESS
                - REDIRECT
              example: SEAMLESS

  
  
  parameters:
    RequestTimestamp:
      name: Request-Timestamp
      in: header
      required: false
      schema:
        type: string
        format: date-time
      description: ISO 8601 UTC timestamp of the request. Used for idempotency and audit.
      example: '2024-10-01T10:30:00Z'
    RequestID:
      name: Request-ID
      in: header
      required: false
      schema:
        type: string
        minLength: 1
        maxLength: 50
      description: Use a global unique identifier [GUID] for the request.
      example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
  responses:
    InternalServerError:
      description: An unexpected error occurred on the server.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            serverError:
              summary: Server Error
              value:
                code: INTERNAL_ERROR
                message: Internal server error. The request cannot be processed at this time
                additional_error_details:
                  source: INTERNAL
                  step: request_processing
                  reason: unexpected_error
    Unauthorized:
      description: Authentication failed — missing, expired, or invalid Bearer token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            tokenExpired:
              summary: Token Expired
              value:
                code: USER_AUTHENTICATION_FAILED
                message: User Authentication Failed, Please try again with valid parameters.
                additional_error_details:
                  source: INTERNAL
                  step: authentication
                  reason: invalid_or_expired_token
    NotFound:
      description: The requested resource does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            resourceNotFound:
              summary: Resource Not Found
              value:
                code: ORDER_NOT_FOUND
                message: Order not found
                additional_error_details:
                  source: INTERNAL
                  step: resource_lookup
                  reason: resource_does_not_exist
    BadRequest:
      description: The request was malformed or missing required fields.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            validationError:
              summary: Validation Error
              value:
                code: INVALID_REQUEST
                message: The request does not meet the expected contract and cannot be processed. This may be due to malformed request, invalid or missing parameters
                additional_error_details:
                  source: INTERNAL
                  step: request_validation
                  reason: missing_required_fields
    Forbidden:
      description: The authenticated client does not have permission for this operation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            insufficientPermissions:
              summary: Insufficient Permissions
              value:
                code: UNAUTHORIZED
                message: The client is not authorized to perform this operation
                additional_error_details:
                  source: INTERNAL
                  step: authorization
                  reason: insufficient_permissions
    Conflict:
      description: The request conflicts with the current state of the resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            duplicateReference:
              summary: Duplicate Reference
              value:
                code: DUPLICATE_REQUEST
                message: The request has already been processed
                additional_error_details:
                  source: INTERNAL
                  step: request_validation
                  reason: duplicate_reference
  examples:
    CreateRefundRequestExample:
      summary: Create Refund Request
      value:
        merchant_order_reference: e436fefa-f0e9-4b36-ac01-3d158c31726c
        order_amount:
          value: 400
          currency: INR
        merchant_metadata:
          key1: XX
          key2: DOF
    RefundResponseExample:
      summary: Refund Processed
      value:
        data:
          order_id: v1-241010071949-aa-vcqtJY
          parent_order_id: v1-241010055924-aa-AHbN0s
          merchant_order_reference: e436fefa-f0e9-4b36-ac01-3d158c31726c
          type: REFUND
          status: PROCESSED
          merchant_id: '108272'
          order_amount:
            value: 400
            currency: INR
          purchase_details:
            customer:
              email_id: '[email protected]'
              first_name: Kevin
              last_name: Bob
              customer_id: '123456'
              mobile_number: '9876543210'
              country_code: '91'
            merchant_metadata:
              key1: XX
              key2: DOF
          payments:
            - id: v1-241010071949-aa-vcqtJY-cc-b
              status: PROCESSED
              payment_amount:
                value: 400
                currency: INR
              payment_method: CARD
              acquirer_data:
                approval_code: ''
                acquirer_reference: '7285447904236780703954'
                rrn: ''
                is_aggregator: true
              created_at: '2024-10-10T07:19:49.423Z'
              updated_at: '2024-10-10T07:19:51.205Z'
          created_at: '2024-10-10T07:19:49.424Z'
          updated_at: '2024-10-10T07:19:51.205Z'
    SplitRefundResponseExample:
      summary: Split Refund Processed
      value:
        data:
          order_id: v1-250226115026-aa-JO3YTv
          parent_order_id: v1-250226114507-aa-tDpkuP
          merchant_order_reference: merchant-reference-r4y
          type: REFUND
          status: PROCESSED
          merchant_id: '122743'
          order_amount:
            value: 21000
            currency: INR
          purchase_details:
            customer:
              country_code: '91'
            merchant_metadata:
              key1: value1
              key2: value2
            split_info:
              split_type: AMOUNT
              split_details:
                - parent_order_split_settlement_id: v1-250513063000-aa-UBAnaE-ss-g
                  split_merchant_id: '117230'
                  split_settlement_id: v1-5312042524-aa-0YO29z-ss-a
                  merchant_settlement_reference: ref1
                  amount:
                    value: 21000
                    currency: INR
                  status: DO_NOT_RECOVER
          payments:
            - id: v1-250226115026-aa-JO3YTv-cc-a
              status: PROCESSED
              payment_amount:
                value: 21000
                currency: INR
              payment_method: CARD
              acquirer_data:
                approval_code: ''
                acquirer_reference: '7405706270796283203814'
                rrn: ''
                is_aggregator: true
                acquirer_name: Cyber_Source_AXIS
              created_at: '2025-02-26T11:50:26.351Z'
              updated_at: '2025-02-26T11:50:27.718Z'
          created_at: '2025-02-26T11:50:26.352Z'
          updated_at: '2025-02-26T11:50:27.718Z'
          integration_mode: SEAMLESS
          payment_retries_remaining: 10
    ListSettlementsResponseExample:
      summary: List All Settlements
      value:
        data:
          - total_amount: 0.96
            actual_transaction_amount: 2
            total_deduction_amount: 0.08
            total_transactions_count: 2
            last_processed_date: '2024-10-09T07:00:00'
            settled_date: '2024-10-09T10:59:46'
            utr_number: '410092786849'
            programs:
              - UPI
            system: PG
            bank_name: HDFC Bank Ltd
            bank_acc_number: '04992990009595'
          - total_amount: 0.98
            actual_transaction_amount: 1
            total_deduction_amount: 0.04
            total_transactions_count: 1
            last_processed_date: '2024-10-08T07:00:00'
            settled_date: '2024-10-08T11:16:40'
            utr_number: '410080488411'
            programs:
              - UPI
            system: PG
            bank_name: HDFC Bank Ltd
            bank_acc_number: '04992990009595'
          - total_amount: 0.96
            actual_transaction_amount: 2
            total_deduction_amount: 0.08
            total_transactions_count: 2
            last_processed_date: '2024-10-07T07:00:00'
            settled_date: '2024-10-07T11:36:44'
            utr_number: '410077587729'
            programs:
              - UPI
            system: PG
            bank_name: HDFC Bank Ltd
            bank_acc_number: '04992990009595'
          - total_amount: 3.92
            actual_transaction_amount: 4
            total_deduction_amount: 0.16
            total_transactions_count: 4
            last_processed_date: '2024-10-06T07:00:00'
            settled_date: '2024-10-07T10:48:02'
            utr_number: '410077424703'
            programs:
              - UPI
            system: PG
            bank_name: HDFC Bank Ltd
            bank_acc_number: '04992990009595'
          - total_amount: 0.98
            actual_transaction_amount: 1
            total_deduction_amount: 0.04
            total_transactions_count: 1
            last_processed_date: '2024-10-05T07:00:00'
            settled_date: '2024-10-05T10:58:12'
            utr_number: '410055402704'
            programs:
              - UPI
            system: PG
            bank_name: HDFC Bank Ltd
            bank_acc_number: '04992990009595'
          - total_amount: 1.94
            actual_transaction_amount: 3
            total_deduction_amount: 0.12
            total_transactions_count: 3
            last_processed_date: '2024-10-04T06:32:13'
            settled_date: '2024-10-04T11:14:39'
            utr_number: '410041942381'
            programs:
              - UPI
            system: PG
            bank_name: HDFC Bank Ltd
            bank_acc_number: '04992990009595'
          - total_amount: 0.98
            actual_transaction_amount: 1
            total_deduction_amount: 0.04
            total_transactions_count: 1
            last_processed_date: '2024-10-03T06:35:20'
            settled_date: '2024-10-03T10:58:43'
            utr_number: '410039900271'
            programs:
              - UPI
            system: PG
            bank_name: HDFC Bank Ltd
            bank_acc_number: '04992990009595'
        total_settlement_count: 7
        total_transactions_count: 14
        total_settlement_amount: 10.72
    SettlementByUTRResponseExample:
      summary: Settlement by UTR
      value:
        utr_number: '410092786849'
        bank_name: HDFC Bank Ltd
        bank_acc_number: '04992990009595'
        programs:
          - UPI
        total_transaction_count: 2
        total_transaction_amount: 2
        actual_transaction_amount: 2
        total_refund: 0
        total_chargeback_recovery_amount: 0
        total_loan_recovery_amount: 0
        total_mdr_amount: 0.04
        total_gst_amount: 0
        total_late_settlement_fee: 0
        total_settled_amount: 0.96
        total_mar_amount: 0
        split_fund_amount: 0
        total_platform_fee: 0
        other_deductions: 0
        additional_mdr_amount: 0
        total_convenience_fee: 0
        total_gst_on_c_c_f: 0
        total_cashback_amount: 0
        total_merchant_cashback: 0
        total_merchant_convenience_fee: 0
        transactions:
          - transaction_id: v1-241008182747-aa-8JwMy9-up-k
            system: PG
            processed_date: '2024-10-09T07:00:00'
            transaction_date: '2024-10-08T00:00:00'
            transaction_amount: 1
            actual_transaction_amount: 1
            total_deduction_amount: 0.02
            settled_amount: 0
            store_address: sec 62 noida
            acquirer_name: UPI_HDFC
            tid: HDFC000028502654
            is_emi: false
            utr_number: '410092786849'
            program: UPI
            payout_status: Success
          - transaction_id: v1-241008182412-aa-rnfH9Q-up-F
            system: PG
            processed_date: '2024-10-09T07:00:00'
            transaction_date: '2024-10-08T00:00:00'
            transaction_amount: 1
            actual_transaction_amount: 1
            total_deduction_amount: 0.02
            settled_amount: 0.96
            store_address: sec 62 noida
            acquirer_name: UPI_HDFC
            tid: HDFC000028502654
            is_emi: false
            utr_number: '410092786849'
            program: UPI
            payout_status: Success
        pagination:
          total_pages: 2
          current_page: '1'
    ReleaseSettlementRequestExample:
      summary: Release Settlement
      value:
        release_amount:
          value: 10000
          currency: INR
    SplitSettlementResponseExample:
      summary: Release Settlement Response
      value:
        data:
          order_id: v1-250513055632-aa-rjIIWX
          merchant_order_reference: bc2ddc75-eebb-452c-a034-ba9a836ddf17
          type: CHARGE
          status: PROCESSED
          merchant_id: '111370'
          order_amount:
            value: 21000
            currency: INR
          pre_auth: false
          allowed_payment_methods:
            - CARD
            - UPI
            - NETBANKING
            - POINTS
            - WALLET
          notes: order1
          purchase_details:
            customer:
              email_id: '[email protected]'
              first_name: Kevin
              last_name: Bob
              customer_id: '192212'
              country_code: '91'
              mobile_number: '9876543210'
              is_edit_customer_details_allowed: false
            merchant_metadata:
              key1: DD
              key2: XOF
            split_info:
              split_type: AMOUNT
              split_details:
                - split_merchant_id: '111370'
                  split_settlement_id: v1-250513055632-aa-rjIIWX-ss-f
                  amount:
                    value: 10000
                    currency: INR
                  on_hold: false
                  status: RELEASED
                  updated_at: '2025-05-13T05:58:15.960Z'
                  release_amount:
                    value: 10000
                    currency: INR
                - split_merchant_id: '111370'
                  split_settlement_id: v1-250513055632-aa-rjIIWX-ss-g
                  amount:
                    value: 2000
                    currency: INR
                  on_hold: true
                  status: HOLD
                  updated_at: '2025-05-13T05:56:32.655Z'
          payments:
            - id: v1-250513055632-aa-rjIIWX-cc-a
              merchant_payment_reference: d1ec1a52-45fb-47be-bd7a-0e0d930f26b8
              status: PROCESSED
              payment_amount:
                value: 21000
                currency: INR
              payment_method: CARD
              payment_option:
                card_details:
                  card_type: CREDIT
                  network_name: VISA
                  issuer_name: HDFC
                  card_category: ''
                  country_code: IND
                  token_txn_type: ALT_TOKEN
                  last4_digit: '1091'
                  save: false
                  is_native_otp_eligible: true
              acquirer_data:
                approval_code: '831000'
                acquirer_reference: '7471158294616880303814'
                rrn: '513205569234'
                is_aggregator: true
              created_at: '2025-05-13T05:56:56.703Z'
              updated_at: '2025-05-13T05:57:10.422Z'
          created_at: '2025-05-13T05:56:32.655Z'
          updated_at: '2025-05-13T05:58:15.963Z'
          integration_mode: SEAMLESS
          payment_retries_remaining: 9
    BankEMIResponse:
      summary: 200 - Bank EMI
      value:
        issuers:
          - id: '23'
            name: INDUSIND CC
            display_name: INDUSIND
            issuer_type: CC_BANK
            priority: 1
            tenures:
              - tenure_id: '1'
                name: 3 Months
                tenure_type: MONTH
                tenure_value: 3
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '1563'
                    offer_parameter_id: '63813'
                details: []
                auth_amount:
                  currency: INR
                  value: 1200000
                loan_amount:
                  currency: INR
                  value: 1200000
                net_payment_amount:
                  currency: INR
                  value: 1232139
                monthly_emi_amount:
                  currency: INR
                  value: 410713
                total_emi_amount:
                  currency: INR
                  value: 1232139
                interest_amount:
                  currency: INR
                  value: 32139
                interest_rate_percentage: 16
                processing_fee_details:
                  amount:
                    currency: INR
                    value: 19900
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 19900
                emi_type: STANDARD
              - tenure_id: '2'
                name: 6 Months
                tenure_type: MONTH
                tenure_value: 6
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '1563'
                    offer_parameter_id: '63813'
                details: []
                auth_amount:
                  currency: INR
                  value: 1200000
                loan_amount:
                  currency: INR
                  value: 1200000
                net_payment_amount:
                  currency: INR
                  value: 1256616
                monthly_emi_amount:
                  currency: INR
                  value: 209436
                total_emi_amount:
                  currency: INR
                  value: 1256616
                interest_amount:
                  currency: INR
                  value: 56616
                interest_rate_percentage: 16
                processing_fee_details:
                  amount:
                    currency: INR
                    value: 19900
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 19900
                emi_type: STANDARD
              - tenure_id: '3'
                name: 9 Months
                tenure_type: MONTH
                tenure_value: 9
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '1563'
                    offer_parameter_id: '63813'
                details: []
                auth_amount:
                  currency: INR
                  value: 1200000
                loan_amount:
                  currency: INR
                  value: 1200000
                net_payment_amount:
                  currency: INR
                  value: 1281411
                monthly_emi_amount:
                  currency: INR
                  value: 142379
                total_emi_amount:
                  currency: INR
                  value: 1281411
                interest_amount:
                  currency: INR
                  value: 81411
                interest_rate_percentage: 16
                processing_fee_details:
                  amount:
                    currency: INR
                    value: 19900
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 19900
                emi_type: STANDARD
              - tenure_id: '4'
                name: 12 Months
                tenure_type: MONTH
                tenure_value: 12
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '1563'
                    offer_parameter_id: '63813'
                details: []
                auth_amount:
                  currency: INR
                  value: 1200000
                loan_amount:
                  currency: INR
                  value: 1200000
                net_payment_amount:
                  currency: INR
                  value: 1306524
                monthly_emi_amount:
                  currency: INR
                  value: 108877
                total_emi_amount:
                  currency: INR
                  value: 1306524
                interest_amount:
                  currency: INR
                  value: 106524
                interest_rate_percentage: 16
                processing_fee_details:
                  amount:
                    currency: INR
                    value: 19900
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 19900
                emi_type: STANDARD
              - tenure_id: '5'
                name: 18 Months
                tenure_type: MONTH
                tenure_value: 18
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '1563'
                    offer_parameter_id: '63813'
                details: []
                auth_amount:
                  currency: INR
                  value: 1200000
                loan_amount:
                  currency: INR
                  value: 1200000
                net_payment_amount:
                  currency: INR
                  value: 1357686
                monthly_emi_amount:
                  currency: INR
                  value: 75427
                total_emi_amount:
                  currency: INR
                  value: 1357686
                interest_amount:
                  currency: INR
                  value: 157686
                interest_rate_percentage: 16
                processing_fee_details:
                  amount:
                    currency: INR
                    value: 19900
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 19900
                emi_type: STANDARD
              - tenure_id: '6'
                name: 24 Months
                tenure_type: MONTH
                tenure_value: 24
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '1563'
                    offer_parameter_id: '63813'
                details: []
                auth_amount:
                  currency: INR
                  value: 1200000
                loan_amount:
                  currency: INR
                  value: 1200000
                net_payment_amount:
                  currency: INR
                  value: 1410120
                monthly_emi_amount:
                  currency: INR
                  value: 58755
                total_emi_amount:
                  currency: INR
                  value: 1410120
                interest_amount:
                  currency: INR
                  value: 210120
                interest_rate_percentage: 16
                processing_fee_details:
                  amount:
                    currency: INR
                    value: 19900
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 19900
                emi_type: STANDARD
            issuer_data:
              otp_length: 5
              otp_time_in_sec: 180
              otp_retry_count: 5
              is_consent_page_required: true
              consent_data: <div classname=concent-container><div classname=concentTitle>Consent Clause :</div></div>
              terms_and_conditions: Sample TNC
              show_key_fact_statement: true
              auth_type: PENNY_DROP
              penny_transaction_amount:
                currency: INR
                value: 100
              is_tokenized_transaction_supported: false
    BrandEMIResponse:
      summary: 200 - Brand EMI
      value:
        issuers:
          - id: '25'
            name: PNB CC
            display_name: PUNJAB NATIONAL BANK
            issuer_type: CC_BANK
            priority: 1
            tenures:
              - tenure_id: '1'
                name: 3 Months
                tenure_type: MONTH
                tenure_value: 3
                issuer_offer_parameters:
                  - program_type: BRAND_EMI
                    offer_id: '309'
                    offer_parameter_id: '20'
                details:
                  - product_code: redmi_1
                    brand_id: '3'
                    product_offer_parameters:
                      - program_type: BRAND_OFFER
                        offer_id: '309'
                        offer_parameter_id: '20'
                    product_amount:
                      currency: INR
                      value: 2000000
                    subvention:
                      subvention_type: INSTANT
                      offer_type: NO_COST
                      percentage: 5
                      amount:
                        currency: INR
                        value: 85714
                      breakup:
                        brand:
                          amount:
                            currency: INR
                            value: 85714
                    discount:
                      discount_type: INSTANT
                      percentage: 10
                      amount:
                        currency: INR
                        value: 200000
                      breakup:
                        merchant:
                          amount:
                            currency: INR
                            value: 100000
                        brand:
                          amount:
                            currency: INR
                            value: 100000
                    downpayment_amount:
                      currency: INR
                      value: 200000
                    after_downpayment_reduced_product_amount:
                      currency: INR
                      value: 200000
                    bundle_id: BUNDLE_002_OE3
                discount:
                  discount_type: INSTANT
                  percentage: 10
                  amount:
                    currency: INR
                    value: 200000
                  breakup:
                    merchant:
                      amount:
                        currency: INR
                        value: 100000
                    brand:
                      amount:
                        currency: INR
                        value: 100000
                auth_amount:
                  currency: INR
                  value: 1714286
                loan_amount:
                  currency: INR
                  value: 1714286
                total_discount_amount:
                  currency: INR
                  value: 200000
                net_payment_amount:
                  currency: INR
                  value: 1760202
                monthly_emi_amount:
                  currency: INR
                  value: 586734
                total_emi_amount:
                  currency: INR
                  value: 1760202
                interest_amount:
                  currency: INR
                  value: 45916
                total_subvention_amount:
                  currency: INR
                  value: 85714
                interest_rate_percentage: 16
                processing_fee_details:
                  amount:
                    currency: INR
                    value: 19900
                split_emi_display_name: Apple Live
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 19900
                emi_type: NO_COST
              - tenure_id: '12'
                name: 36 Months
                tenure_type: MONTH
                tenure_value: 36
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '1562'
                    offer_parameter_id: '63812'
                details: []
                auth_amount:
                  currency: INR
                  value: 2000000
                loan_amount:
                  currency: INR
                  value: 2000000
                net_payment_amount:
                  currency: INR
                  value: 2531304
                monthly_emi_amount:
                  currency: INR
                  value: 70314
                total_emi_amount:
                  currency: INR
                  value: 2531304
                interest_amount:
                  currency: INR
                  value: 531304
                interest_rate_percentage: 16
                processing_fee_details:
                  amount:
                    currency: INR
                    value: 19900
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 19900
                emi_type: STANDARD
              - tenure_id: '2'
                name: 6 Months
                tenure_type: MONTH
                tenure_value: 6
                issuer_offer_parameters:
                  - program_type: BRAND_EMI
                    offer_id: '309'
                    offer_parameter_id: '20'
                details:
                  - product_code: redmi_1
                    brand_id: '3'
                    product_offer_parameters:
                      - program_type: BRAND_OFFER
                        offer_id: '309'
                        offer_parameter_id: '20'
                    product_amount:
                      currency: INR
                      value: 2000000
                    subvention:
                      subvention_type: POST
                      offer_type: NO_COST
                      percentage: 5
                      amount:
                        currency: INR
                        value: 90000
                      breakup:
                        brand:
                          amount:
                            currency: INR
                            value: 90000
                    discount:
                      discount_type: INSTANT
                      percentage: 10
                      amount:
                        currency: INR
                        value: 200000
                      breakup:
                        merchant:
                          amount:
                            currency: INR
                            value: 100000
                        brand:
                          amount:
                            currency: INR
                            value: 100000
                    downpayment_amount:
                      currency: INR
                      value: 200000
                    after_downpayment_reduced_product_amount:
                      currency: INR
                      value: 200000
                    bundle_id: BUNDLE_002_OE3
                discount:
                  discount_type: INSTANT
                  percentage: 10
                  amount:
                    currency: INR
                    value: 200000
                  breakup:
                    merchant:
                      amount:
                        currency: INR
                        value: 100000
                    brand:
                      amount:
                        currency: INR
                        value: 100000
                auth_amount:
                  currency: INR
                  value: 1800000
                loan_amount:
                  currency: INR
                  value: 1800000
                total_discount_amount:
                  currency: INR
                  value: 200000
                net_payment_amount:
                  currency: INR
                  value: 1884924
                monthly_emi_amount:
                  currency: INR
                  value: 314154
                total_emi_amount:
                  currency: INR
                  value: 1884924
                interest_amount:
                  currency: INR
                  value: 84924
                total_subvention_amount:
                  currency: INR
                  value: 90000
                interest_rate_percentage: 16
                processing_fee_details:
                  amount:
                    currency: INR
                    value: 19900
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 19900
                emi_type: NO_COST
              - tenure_id: '3'
                name: 9 Months
                tenure_type: MONTH
                tenure_value: 9
                issuer_offer_parameters:
                  - program_type: BRAND_EMI
                    offer_id: '309'
                    offer_parameter_id: '20'
                details:
                  - product_code: redmi_1
                    brand_id: '3'
                    product_offer_parameters:
                      - program_type: BRAND_OFFER
                        offer_id: '309'
                        offer_parameter_id: '20'
                    product_amount:
                      currency: INR
                      value: 2000000
                    subvention:
                      subvention_type: POST
                      offer_type: NO_COST
                      percentage: 5
                      amount:
                        currency: INR
                        value: 90000
                      breakup:
                        brand:
                          amount:
                            currency: INR
                            value: 90000
                    discount:
                      discount_type: INSTANT
                      percentage: 10
                      amount:
                        currency: INR
                        value: 200000
                      breakup:
                        merchant:
                          amount:
                            currency: INR
                            value: 100000
                        brand:
                          amount:
                            currency: INR
                            value: 100000
                    downpayment_amount:
                      currency: INR
                      value: 200000
                    after_downpayment_reduced_product_amount:
                      currency: INR
                      value: 200000
                    bundle_id: BUNDLE_002_OE3
                discount:
                  discount_type: INSTANT
                  percentage: 10
                  amount:
                    currency: INR
                    value: 200000
                  breakup:
                    merchant:
                      amount:
                        currency: INR
                        value: 100000
                    brand:
                      amount:
                        currency: INR
                        value: 100000
                auth_amount:
                  currency: INR
                  value: 1800000
                loan_amount:
                  currency: INR
                  value: 1800000
                total_discount_amount:
                  currency: INR
                  value: 200000
                net_payment_amount:
                  currency: INR
                  value: 1922112
                monthly_emi_amount:
                  currency: INR
                  value: 213568
                total_emi_amount:
                  currency: INR
                  value: 1922112
                interest_amount:
                  currency: INR
                  value: 122112
                total_subvention_amount:
                  currency: INR
                  value: 90000
                interest_rate_percentage: 16
                processing_fee_details:
                  amount:
                    currency: INR
                    value: 29900
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 19900
                emi_type: LOW_COST
              - tenure_id: '4'
                name: 12 Months
                tenure_type: MONTH
                tenure_value: 12
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '1563'
                    offer_parameter_id: '63813'
                details: []
                auth_amount:
                  currency: INR
                  value: 2000000
                loan_amount:
                  currency: INR
                  value: 2000000
                net_payment_amount:
                  currency: INR
                  value: 2177532
                monthly_emi_amount:
                  currency: INR
                  value: 181461
                total_emi_amount:
                  currency: INR
                  value: 2177532
                interest_amount:
                  currency: INR
                  value: 177532
                interest_rate_percentage: 16
                processing_fee_details:
                  amount:
                    currency: INR
                    value: 19900
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 19900
                emi_type: STANDARD
              - tenure_id: '5'
                name: 18 Months
                tenure_type: MONTH
                tenure_value: 18
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '1595'
                    offer_parameter_id: '63850'
                details: []
                auth_amount:
                  currency: INR
                  value: 2000000
                loan_amount:
                  currency: INR
                  value: 2000000
                net_payment_amount:
                  currency: INR
                  value: 2262816
                monthly_emi_amount:
                  currency: INR
                  value: 125712
                total_emi_amount:
                  currency: INR
                  value: 2262816
                interest_amount:
                  currency: INR
                  value: 262816
                interest_rate_percentage: 16
                processing_fee_details:
                  amount:
                    currency: INR
                    value: 19900
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 19900
                emi_type: STANDARD
              - tenure_id: '6'
                name: 24 Months
                tenure_type: MONTH
                tenure_value: 24
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '1563'
                    offer_parameter_id: '63813'
                details: []
                auth_amount:
                  currency: INR
                  value: 2000000
                loan_amount:
                  currency: INR
                  value: 2000000
                net_payment_amount:
                  currency: INR
                  value: 2350224
                monthly_emi_amount:
                  currency: INR
                  value: 97926
                total_emi_amount:
                  currency: INR
                  value: 2350224
                interest_amount:
                  currency: INR
                  value: 350224
                interest_rate_percentage: 16
                processing_fee_details:
                  amount:
                    currency: INR
                    value: 19900
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 19900
                emi_type: STANDARD
            issuer_data:
              otp_length: 5
              otp_time_in_sec: 180
              otp_retry_count: 5
              is_consent_page_required: true
              consent_data: <div classname=concent-container><div classname=concentTitle>Consent Clause :</div></div>
              terms_and_conditions: Sample TNC
              show_key_fact_statement: true
              auth_type: PENNY_DROP
              penny_transaction_amount:
                currency: INR
                value: 100
              is_tokenized_transaction_supported: false
    DownpaymentBankEMIResponse:
      summary: 200 - Downpayment Bank EMI
      value:
        issuers:
          - id: '2'
            name: ICICI DC
            display_name: ICICI BANK
            issuer_type: DC_BANK
            priority: 1
            tenures:
              - tenure_id: '4'
                name: 12 Months
                tenure_type: MONTH
                tenure_value: 12
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '4473'
                    offer_parameter_id: '221784'
                  - program_type: MERCHANT_BANK_OFFER
                    offer_id: '4468'
                    offer_parameter_id: '221674'
                details: []
                discount:
                  discount_type: INSTANT
                  percentage: 20
                  amount:
                    currency: INR
                    value: 200000
                  max_amount:
                    currency: INR
                    value: 400000
                loan_amount:
                  currency: INR
                  value: 800000
                auth_amount:
                  currency: INR
                  value: 800000
                total_discount_amount:
                  currency: INR
                  value: 200000
                net_payment_amount:
                  currency: INR
                  value: 871020
                monthly_emi_amount:
                  currency: INR
                  value: 72585
                total_emi_amount:
                  currency: INR
                  value: 871020
                interest_amount:
                  currency: INR
                  value: 71020
                interest_rate_percentage: 16
                processing_fee_details:
                  percentage: 0
                  amount:
                    currency: INR
                    value: 19900
                total_down_payment_amount:
                  currency: INR
                  value: 200000
                emi_type: STANDARD
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 200000
              - tenure_id: '3'
                name: 9 Months
                tenure_type: MONTH
                tenure_value: 9
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '4473'
                    offer_parameter_id: '221784'
                  - program_type: MERCHANT_BANK_OFFER
                    offer_id: '4468'
                    offer_parameter_id: '221674'
                details: []
                discount:
                  discount_type: INSTANT
                  percentage: 20
                  amount:
                    currency: INR
                    value: 200000
                  max_amount:
                    currency: INR
                    value: 400000
                loan_amount:
                  currency: INR
                  value: 800000
                auth_amount:
                  currency: INR
                  value: 800000
                total_discount_amount:
                  currency: INR
                  value: 200000
                net_payment_amount:
                  currency: INR
                  value: 854271
                monthly_emi_amount:
                  currency: INR
                  value: 94919
                total_emi_amount:
                  currency: INR
                  value: 854271
                interest_amount:
                  currency: INR
                  value: 54271
                interest_rate_percentage: 16
                processing_fee_details:
                  percentage: 0
                  amount:
                    currency: INR
                    value: 19900
                total_down_payment_amount:
                  currency: INR
                  value: 200000
                emi_type: STANDARD
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 200000
              - tenure_id: '6'
                name: 24 Months
                tenure_type: MONTH
                tenure_value: 24
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '4473'
                    offer_parameter_id: '221784'
                  - program_type: MERCHANT_BANK_OFFER
                    offer_id: '4468'
                    offer_parameter_id: '221674'
                details: []
                discount:
                  discount_type: INSTANT
                  percentage: 20
                  amount:
                    currency: INR
                    value: 200000
                  max_amount:
                    currency: INR
                    value: 400000
                loan_amount:
                  currency: INR
                  value: 800000
                auth_amount:
                  currency: INR
                  value: 800000
                total_discount_amount:
                  currency: INR
                  value: 200000
                net_payment_amount:
                  currency: INR
                  value: 940080
                monthly_emi_amount:
                  currency: INR
                  value: 39170
                total_emi_amount:
                  currency: INR
                  value: 940080
                interest_amount:
                  currency: INR
                  value: 140080
                interest_rate_percentage: 16
                processing_fee_details:
                  percentage: 0
                  amount:
                    currency: INR
                    value: 19900
                total_down_payment_amount:
                  currency: INR
                  value: 200000
                emi_type: STANDARD
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 200000
              - tenure_id: '12'
                name: 36 Months
                tenure_type: MONTH
                tenure_value: 36
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '4473'
                    offer_parameter_id: '221784'
                  - program_type: MERCHANT_BANK_OFFER
                    offer_id: '4468'
                    offer_parameter_id: '221674'
                details: []
                discount:
                  discount_type: INSTANT
                  percentage: 20
                  amount:
                    currency: INR
                    value: 200000
                  max_amount:
                    currency: INR
                    value: 400000
                loan_amount:
                  currency: INR
                  value: 800000
                auth_amount:
                  currency: INR
                  value: 800000
                total_discount_amount:
                  currency: INR
                  value: 200000
                net_payment_amount:
                  currency: INR
                  value: 1012536
                monthly_emi_amount:
                  currency: INR
                  value: 28126
                total_emi_amount:
                  currency: INR
                  value: 1012536
                interest_amount:
                  currency: INR
                  value: 212536
                interest_rate_percentage: 16
                processing_fee_details:
                  percentage: 0
                  amount:
                    currency: INR
                    value: 19900
                total_down_payment_amount:
                  currency: INR
                  value: 200000
                emi_type: STANDARD
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 200000
              - tenure_id: '1'
                name: 3 Months
                tenure_type: MONTH
                tenure_value: 3
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '4473'
                    offer_parameter_id: '221784'
                  - program_type: MERCHANT_BANK_OFFER
                    offer_id: '4468'
                    offer_parameter_id: '221674'
                details: []
                discount:
                  discount_type: INSTANT
                  percentage: 20
                  amount:
                    currency: INR
                    value: 200000
                  max_amount:
                    currency: INR
                    value: 400000
                loan_amount:
                  currency: INR
                  value: 800000
                auth_amount:
                  currency: INR
                  value: 800000
                total_discount_amount:
                  currency: INR
                  value: 200000
                net_payment_amount:
                  currency: INR
                  value: 821427
                monthly_emi_amount:
                  currency: INR
                  value: 273809
                total_emi_amount:
                  currency: INR
                  value: 821427
                interest_amount:
                  currency: INR
                  value: 21427
                interest_rate_percentage: 16
                processing_fee_details:
                  percentage: 0
                  amount:
                    currency: INR
                    value: 19900
                total_down_payment_amount:
                  currency: INR
                  value: 200000
                emi_type: STANDARD
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 200000
              - tenure_id: '2'
                name: 6 Months
                tenure_type: MONTH
                tenure_value: 6
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '4473'
                    offer_parameter_id: '221784'
                  - program_type: MERCHANT_BANK_OFFER
                    offer_id: '4468'
                    offer_parameter_id: '221674'
                details: []
                discount:
                  discount_type: INSTANT
                  percentage: 20
                  amount:
                    currency: INR
                    value: 200000
                  max_amount:
                    currency: INR
                    value: 400000
                loan_amount:
                  currency: INR
                  value: 800000
                auth_amount:
                  currency: INR
                  value: 800000
                total_discount_amount:
                  currency: INR
                  value: 200000
                net_payment_amount:
                  currency: INR
                  value: 837744
                monthly_emi_amount:
                  currency: INR
                  value: 139624
                total_emi_amount:
                  currency: INR
                  value: 837744
                interest_amount:
                  currency: INR
                  value: 37744
                interest_rate_percentage: 16
                processing_fee_details:
                  percentage: 0
                  amount:
                    currency: INR
                    value: 19900
                total_down_payment_amount:
                  currency: INR
                  value: 200000
                emi_type: STANDARD
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 200000
              - tenure_id: '5'
                name: 18 Months
                tenure_type: MONTH
                tenure_value: 18
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '4473'
                    offer_parameter_id: '221784'
                  - program_type: MERCHANT_BANK_OFFER
                    offer_id: '4468'
                    offer_parameter_id: '221674'
                details: []
                discount:
                  discount_type: INSTANT
                  percentage: 20
                  amount:
                    currency: INR
                    value: 200000
                  max_amount:
                    currency: INR
                    value: 400000
                loan_amount:
                  currency: INR
                  value: 800000
                auth_amount:
                  currency: INR
                  value: 800000
                total_discount_amount:
                  currency: INR
                  value: 200000
                net_payment_amount:
                  currency: INR
                  value: 905130
                monthly_emi_amount:
                  currency: INR
                  value: 50285
                total_emi_amount:
                  currency: INR
                  value: 905130
                interest_amount:
                  currency: INR
                  value: 105130
                interest_rate_percentage: 16
                processing_fee_details:
                  percentage: 0
                  amount:
                    currency: INR
                    value: 19900
                total_down_payment_amount:
                  currency: INR
                  value: 200000
                emi_type: STANDARD
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 200000
            issuer_data:
              is_consent_page_required: true
              consent_data: <div className='concent-container'><div className='concentTitle'>1. Consent for Disclosure of Information</div></div>
              terms_and_conditions: Sample TNC
              show_key_fact_statement: true
              auth_type: PENNY_DROP
              penny_transaction_amount:
                currency: INR
                value: 100
              is_tokenized_transaction_supported: false
    DownpaymentBrandEMIResponse:
      summary: 200 - Downpayment Brand EMI
      value:
        issuers:
          - id: '1'
            name: ICICI CC
            display_name: ICICI BANK
            issuer_type: CC_BANK
            priority: 1
            tenures:
              - tenure_id: '12'
                name: 36 Months
                tenure_type: MONTH
                tenure_value: 36
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '4473'
                    offer_parameter_id: '221784'
                  - program_type: MERCHANT_BANK_OFFER
                    offer_id: '4468'
                    offer_parameter_id: '221674'
                details:
                  - product_code: xyz
                    product_display_name: Redmi Note 13 5G
                    brand_id: '3'
                    brand_name: Xiaomi
                    product_amount:
                      currency: INR
                      value: 1200000
                    product_coupon_discount_amount:
                      currency: INR
                      value: 12000
                    interest_amount:
                      currency: INR
                      value: 51
                    interest_rate: 15.99
                    cart_coupon_discount_product_share:
                      currency: INR
                      value: 1200000
                    bundle_id: BUNDLE_002_OE3
                loan_amount:
                  currency: INR
                  value: 129
                auth_amount:
                  currency: INR
                  value: 129
                net_payment_amount:
                  currency: INR
                  value: 180
                monthly_emi_amount:
                  currency: INR
                  value: 5
                total_emi_amount:
                  currency: INR
                  value: 180
                interest_amount:
                  currency: INR
                  value: 51
                interest_rate_percentage: 15.99
                processing_fee_details:
                  percentage: 0
                  amount:
                    currency: INR
                    value: 19900
                total_down_payment_amount:
                  currency: INR
                  value: 20000
                convenience_fee_breakdown:
                  fee_calculated_on_amount:
                    currency: INR
                    value: 0
                  fee_amount:
                    currency: INR
                    value: 100
                  tax_amount:
                    currency: INR
                    value: 19
                  additional_fee_amount:
                    currency: INR
                    value: 10
                  maximum_fee_amount:
                    currency: INR
                    value: 99999999
                  applicable_fee_amount:
                    currency: INR
                    value: 129
                cart_coupon_discount_amount:
                  currency: INR
                  value: 1200000
                emi_type: STANDARD
                total_coupon_discount:
                  currency: INR
                  value: 1212000
                downpayment_details:
                  downpayment_amount:
                    currency: INR
                    value: 20000
            issuer_data:
              otp_length: 6
              otp_time_in_sec: 30
              otp_retry_count: 3
              is_consent_page_required: true
              consent_data: <div classname=concent-container><div classname=concentTitle>Consent Clause :</div></div>
              terms_and_conditions: Sample TNC
              show_key_fact_statement: false
              auth_type: OTP
              is_tokenized_transaction_supported: true
              pan_number_last_digit_count: 3
    SplitEMIOfferResponse:
      summary: 200 - Split EMI
      value:
        issuers:
          - id: '2'
            name: ICICI DC
            display_name: ICICI BANK
            issuer_type: DC_BANK
            priority: 22
            tenures:
              - tenure_id: '5'
                name: 18 Months
                tenure_type: MONTH
                tenure_value: 18
                issuer_offer_parameters:
                  - program_type: BANK_EMI
                    offer_id: '6036'
                    offer_parameter_id: v1-2-2-5-4-6036-287150
                details:
                  - product_code: SPLIT_APPLE-1
                    product_display_name: ''
                    brand_name: ''
                    product_amount:
                      currency: INR
                      value: 10000000
                    product_coupon_discount_amount:
                      currency: INR
                      value: 1000
                    interest_amount:
                      currency: INR
                      value: 1313902
                    interest_rate: 16
                    cart_coupon_discount_product_share:
                      currency: INR
                      value: 1000
                loan_amount:
                  currency: INR
                  value: 9998000
                auth_amount:
                  currency: INR
                  value: 9998000
                net_payment_amount:
                  currency: INR
                  value: 11311902
                monthly_emi_amount:
                  currency: INR
                  value: 628439
                total_emi_amount:
                  currency: INR
                  value: 11311902
                interest_amount:
                  currency: INR
                  value: 1313902
                split_emi_display_name: iPhone for Life
                split_emi_amount:
                  currency: INR
                  value: 2358490
                split_emi_percentage: 25
                interest_rate_percentage: 16
                processing_fee_details:
                  percentage: 0
                  amount:
                    currency: INR
                    value: 19900
                processing_fee_amount:
                  currency: INR
                  value: 19900
                emi_type: STANDARD
                cart_coupon_discount_amount:
                  currency: INR
                  value: 1000
                total_coupon_discount:
                  currency: INR
                  value: 2000
            issuer_data:
              is_consent_page_required: true
              consent_data: <div className='concent-container'><div className='concentTitle'>1. Consent for Disclosure of Information</div></div>
              terms_and_conditions: Sample TNC
              show_key_fact_statement: true
              auth_type: PENNY_DROP
              penny_transaction_amount:
                currency: INR
                value: 100
              is_tokenized_transaction_supported: false
    OfferValidationRequest:
      summary: Offer Validation
      value:
        payment_method: CREDIT_EMI
        order_amount:
          value: 219900
          currency: INR
        payment_amount:
          value: 219900
          currency: INR
        payment_option:
          card_details:
            card_number: '4000000040001000'
            registered_mobile_number: '9914152866'
        offer_data:
          offer_details:
            id: '6'
            name: HDFC CC
            display_name: HDFC BANK
            issuer_type: CC_BANK
            priority: 1
            tenure:
              tenure_id: '6'
              name: 24 Months
              tenure_type: MONTH
              tenure_value: 24
              issuer_offer_parameters:
                - program_type: BANK_EMI
                  offer_id: '3498'
                  offer_parameter_id: '199796'
                - program_type: MERCHANT_BANK_OFFER
                  offer_id: '3678'
                  offer_parameter_id: '203706'
              details:
                - product_code: xyz
                  product_display_name: Redmi Note 13 5G
                  brand_name: Xiaomi
                  product_amount:
                    currency: INR
                    value: 219900
                  interest_amount:
                    currency: INR
                    value: 38508
                  interest_rate: 16
                  downpayment_amount:
                    currency: INR
                    value: 200000
                  after_downpayment_reduced_product_amount:
                    currency: INR
                    value: 200000
                  bundle_id: BUNDLE_002_OE3
              auth_amount:
                currency: INR
                value: 219900
              loan_amount:
                currency: INR
                value: 219900
              net_payment_amount:
                currency: INR
                value: 258408
              monthly_emi_amount:
                currency: INR
                value: 10767
              total_emi_amount:
                currency: INR
                value: 258408
              interest_amount:
                currency: INR
                value: 38508
              interest_rate_percentage: 16
              split_emi_display_name: Apple Live
              downpayment_details:
                downpayment_amount:
                  currency: INR
                  value: 200000
              emi_type: STANDARD
    OfferValidationCardlessEMIRequest:
      summary: Offer Validation for Cardless EMI
      value:
        payment_method: CARDLESS_EMI
        order_amount:
          value: 150000
          currency: INR
        payment_amount:
          value: 150000
          currency: INR
        payment_option:
          cardless_details:
            pan_number: '1234'
            registered_mobile_number: '7973058466'
        offer_data:
          offer_details:
            id: '3'
            name: ICICI CARDLESS
            display_name: ICICI CARDLESS
            issuer_type: CARDLESS_BANK
            priority: 1
            tenure:
              tenure_id: '3'
              name: 9 Months
              tenure_type: MONTH
              tenure_value: 9
              issuer_offer_parameters:
                - program_type: BANK_EMI
                  offer_id: '308'
                  offer_parameter_id: '19'
              details:
                - product_code: Apple_test_1
                  product_display_name: 17 Pro Max 256GB
                  brand_name: Apple
                  product_amount:
                    currency: INR
                    value: 150000
                  interest_amount:
                    currency: INR
                    value: 5358
                  interest_rate: 8.5
              auth_amount:
                currency: INR
                value: 150000
              loan_amount:
                currency: INR
                value: 150000
              net_payment_amount:
                currency: INR
                value: 155358
              monthly_emi_amount:
                currency: INR
                value: 17262
              total_emi_amount:
                currency: INR
                value: 155358
              interest_amount:
                currency: INR
                value: 5358
              interest_rate_percentage: 8.5
              processing_fee_details:
                percentage: 0
                amount:
                  currency: INR
                  value: 19900
              emi_type: STANDARD
    OfferValidationSplitEMIRequest:
      summary: Offer Validation for Split EMI
      value:
        payment_method: CREDIT_EMI
        order_amount:
          value: 10000000
          currency: INR
        payment_amount:
          value: 9444392
          currency: INR
        payment_option:
          card_details:
            card_number: '3769300000000000'
        offer_data:
          offer_details:
            id: '1'
            name: ICICI CC
            display_name: ICICI BANK
            issuer_type: CC_BANK
            priority: 3
            tenure:
              tenure_id: '5'
              name: 18 Months
              tenure_type: MONTH
              tenure_value: 18
              issuer_offer_parameters:
                - program_type: BRAND_EMI
                  offer_id: '6118'
                  offer_parameter_id: '288517'
              details:
                - product_code: SPLIT_APPLE-1
                  product_display_name: 16 Pro Max 64GB
                  brand_id: '1'
                  brand_name: Apple
                  product_offer_parameters:
                    - program_type: BRAND_OFFER
                      offer_id: '6118'
                      offer_parameter_id: '288517'
                  product_amount:
                    currency: INR
                    value: 10000000
                  interest_amount:
                    currency: INR
                    value: 1240336
                  interest_rate: 15.99
                  subvention:
                    subvention_type: INSTANT
                    offer_type: LOW_COST
                    percentage: 6
                    amount:
                      currency: INR
                      value: 566038
              loan_amount:
                currency: INR
                value: 7083294
              auth_amount:
                currency: INR
                value: 9444392
              net_payment_amount:
                currency: INR
                value: 10684728
              monthly_emi_amount:
                currency: INR
                value: 462423
              total_emi_amount:
                currency: INR
                value: 8323630
              interest_amount:
                currency: INR
                value: 1240336
              split_emi_display_name: iPhone for Life
              split_emi_amount:
                currency: INR
                value: 2361098
              split_emi_percentage: 25
              total_subvention_amount:
                currency: INR
                value: 566038
              interest_rate_percentage: 15.99
              processing_fee_details:
                percentage: 0
                amount:
                  currency: INR
                  value: 19900
              processing_fee_amount:
                currency: INR
                value: 19900
              emi_type: LOW_COST
              convenience_fee_breakdown:
                fee_calculated_on_amount:
                  currency: INR
                  value: 7072864
                fee_amount:
                  currency: INR
                  value: 8839
                tax_amount:
                  currency: INR
                  value: 1591
                maximum_fee_amount:
                  currency: INR
                  value: 99999999
                applicable_fee_amount:
                  currency: INR
                  value: 10430
    OfferValidationICBOnUPIRequest:
      summary: ICB on UPI
      value:
        merchant_payment_reference: 6dc93180-91d4-448e-b2a3-c859d2f1cac9
        payment_method: UPI
        order_amount:
          value: 500
          currency: INR
        payment_amount:
          value: 450
          currency: INR
        payment_option:
          upi_details:
            txn_mode: INTENT
            payer:
              phone_number: '9868608104'
              vpa: nikhiljha122-1@okhdfcbank
        offer_data:
          offer_details:
            tenure:
              offer_ranking: 1
              issuer_offer_parameters:
                - program_type: MERCHANT_BANK_OFFER
                  offer_id: '6037'
                  offer_parameter_id: v1-37-10-7-5-6037-287151
              details:
                - product_code: ICB_BOSCH_001
                  brand_id: '7'
                  product_amount:
                    currency: INR
                    value: 500
                  interest_rate: 0.0
                  discount:
                    discount_type: INSTANT
                    percentage: 10.0
                    amount:
                      currency: INR
                      value: 50
                    max_amount:
                      currency: INR
                      value: 50000
                    breakup:
                      merchant:
                        amount:
                          currency: INR
                          value: 50
              discount:
                discount_type: INSTANT
                percentage: 10.0
                amount:
                  currency: INR
                  value: 50
                max_amount:
                  currency: INR
                  value: 50000
                breakup:
                  merchant:
                    amount:
                      currency: INR
                      value: 50
              loan_amount:
                currency: INR
                value: 450
              auth_amount:
                currency: INR
                value: 450
              total_discount_amount:
                currency: INR
                value: 50
              net_payment_amount:
                currency: INR
                value: 500
              interest_rate_percentage: 0.0
              emi_type: STANDARD
              is_mobile_number_required_for_eligibility: false
              is_offer_auto_applied: true
    CreditEMIRequest:
      summary: CREDIT EMI
      value:
        payments:
          - merchant_payment_reference: 6dc93180-91d4-448e-b2a3-c859d2f1cac9
            payment_method: CREDIT_EMI
            payment_amount:
              value: 219900
              currency: INR
            payment_option:
              card_details:
                name: Kevin Bob
                card_number: '4000000000000000'
                cvv: '065'
                expiry_month: '12'
                expiry_year: '2025'
                registered_mobile_number: '9876543210'
            offer_data:
              offer_details:
                id: '6'
                name: HDFC CC
                display_name: HDFC BANK
                issuer_type: CC_BANK
                priority: 1
                tenure:
                  tenure_id: '6'
                  name: 24 Months
                  tenure_type: MONTH
                  tenure_value: 24
                  issuer_offer_parameters:
                    - program_type: BANK_EMI
                      offer_id: '3498'
                      offer_parameter_id: '199796'
                    - program_type: MERCHANT_BANK_OFFER
                      offer_id: '3678'
                      offer_parameter_id: '203706'
                  details:
                    - product_code: xyz
                      product_display_name: Redmi Note 13 5G
                      brand_name: Xiaomi
                      product_amount:
                        currency: INR
                        value: 219900
                      interest_amount:
                        currency: INR
                        value: 38508
                      interest_rate: 16
                      downpayment_amount:
                        currency: INR
                        value: 200000
                      after_downpayment_reduced_product_amount:
                        currency: INR
                        value: 200000
                      bundle_id: BUNDLE_002_OE3
                  auth_amount:
                    currency: INR
                    value: 219900
                  loan_amount:
                    currency: INR
                    value: 219900
                  net_payment_amount:
                    currency: INR
                    value: 258408
                  monthly_emi_amount:
                    currency: INR
                    value: 10767
                  total_emi_amount:
                    currency: INR
                    value: 258408
                  interest_amount:
                    currency: INR
                    value: 38508
                  interest_rate_percentage: 16
                  emi_type: STANDARD
                  downpayment_details:
                    downpayment_amount:
                      currency: INR
                      value: 200000
                  split_emi_display_name: Apple Live
    DebitEMIRequest:
      summary: DEBIT EMI
      value:
        payments:
          - merchant_payment_reference: '5419190411211587'
            payment_method: DEBIT_EMI
            payment_amount:
              value: 219900
              currency: INR
            payment_option:
              card_details:
                name: John Doe
                card_number: '5419190411211587'
                registered_mobile_number: '9582223917'
            offer_data:
              offer_details:
                id: '7'
                name: HDFC DC
                display_name: HDFC BANK
                issuer_type: DC_BANK
                priority: 1
                tenure:
                  tenure_id: '6'
                  name: 24 Months
                  tenure_type: MONTH
                  tenure_value: 24
                  issuer_offer_parameters:
                    - program_type: BANK_EMI
                      offer_id: '3498'
                      offer_parameter_id: '199796'
                    - program_type: MERCHANT_BANK_OFFER
                      offer_id: '3678'
                      offer_parameter_id: '203706'
                  details:
                    - product_code: xyz
                      product_display_name: Redmi Note 13 5G
                      brand_name: Xiaomi
                      product_amount:
                        currency: INR
                        value: 219900
                      interest_amount:
                        currency: INR
                        value: 38508
                      interest_rate: 16
                      downpayment_amount:
                        currency: INR
                        value: 200000
                      after_downpayment_reduced_product_amount:
                        currency: INR
                        value: 200000
                      bundle_id: BUNDLE_002_OE3
                  auth_amount:
                    currency: INR
                    value: 219900
                  loan_amount:
                    currency: INR
                    value: 219900
                  net_payment_amount:
                    currency: INR
                    value: 258408
                  monthly_emi_amount:
                    currency: INR
                    value: 10767
                  total_emi_amount:
                    currency: INR
                    value: 258408
                  interest_amount:
                    currency: INR
                    value: 38508
                  interest_rate_percentage: 16
                  emi_type: STANDARD
                  downpayment_details:
                    downpayment_amount:
                      currency: INR
                      value: 200000
                  split_emi_display_name: Apple Live
    TokenizedEMIRequest:
      summary: Tokenized EMI Payment
      value:
        payments:
          - merchant_payment_reference: 90ebdd5d-a2f7-4402-9226-0f3ccd47cd24
            payment_method: CREDIT_EMI
            payment_amount:
              value: 219900
              currency: INR
            payment_option:
              card_token_details:
                name: Kevin Bob
                last4_digit: '4123'
                cvv: '123'
                expiry_month: '03'
                expiry_year: '2030'
                token: '4000000000001091'
                cryptogram: AgAAAGQkm6LsADcaAAA5gz4AAAA=
                token_txn_type: ALT_TOKEN
            offer_data:
              offer_details:
                id: '6'
                name: HDFC CC
                display_name: HDFC BANK
                issuer_type: CC_BANK
                priority: 1
                tenure:
                  tenure_id: '6'
                  name: 24 Months
                  tenure_type: MONTH
                  tenure_value: 24
                  issuer_offer_parameters:
                    - program_type: BANK_EMI
                      offer_id: '3498'
                      offer_parameter_id: '199796'
                    - program_type: MERCHANT_BANK_OFFER
                      offer_id: '3678'
                      offer_parameter_id: '203706'
                  details:
                    - product_code: xyz
                      product_display_name: Redmi Note 13 5G
                      brand_name: Xiaomi
                      product_amount:
                        currency: INR
                        value: 219900
                      interest_amount:
                        currency: INR
                        value: 38508
                      interest_rate: 16
                      downpayment_amount:
                        currency: INR
                        value: 200000
                      after_downpayment_reduced_product_amount:
                        currency: INR
                        value: 200000
                      bundle_id: BUNDLE_002_OE3
                  auth_amount:
                    currency: INR
                    value: 219900
                  loan_amount:
                    currency: INR
                    value: 219900
                  net_payment_amount:
                    currency: INR
                    value: 258408
                  monthly_emi_amount:
                    currency: INR
                    value: 10767
                  total_emi_amount:
                    currency: INR
                    value: 258408
                  interest_amount:
                    currency: INR
                    value: 38508
                  interest_rate_percentage: 16
                  downpayment_details:
                    downpayment_amount:
                      currency: INR
                      value: 200000
                  emi_type: STANDARD
    CardlessEMIRequest:
      summary: Cardless EMI
      value:
        payments:
          - merchant_payment_reference: 6dc93180-91d4-448e-b2a3-c859d2f1cac9
            payment_method: CARDLESS_EMI
            payment_amount:
              value: 1100
              currency: INR
            payment_option:
              cardless_details:
                registered_mobile_number: '7973058466'
                pan_number: ABCDE1234F
    SplitEMIRequest:
      summary: Split EMI
      value:
        payments:
          - merchant_payment_reference: '3769300000000000'
            payment_method: CREDIT_EMI
            payment_amount:
              value: 9444392
              currency: INR
            payment_option:
              card_details:
                name: niyati gulati
                registered_mobile_number: '7973058466'
                card_number: '3769300000000000'
                last4_digit: '9106'
                cvv: '101'
                expiry_month: '10'
                expiry_year: '2032'
            offer_data:
              offer_details:
                id: '1'
                name: ICICI CC
                display_name: ICICI BANK
                issuer_type: CC_BANK
                priority: 3
                tenure:
                  tenure_id: '5'
                  name: 18 Months
                  tenure_type: MONTH
                  tenure_value: 18
                  issuer_offer_parameters:
                    - program_type: BRAND_EMI
                      offer_id: '6118'
                      offer_parameter_id: '288517'
                  details:
                    - product_code: SPLIT_APPLE-1
                      product_display_name: 16 Pro Max 64GB
                      brand_id: '1'
                      brand_name: Apple
                      product_offer_parameters:
                        - program_type: BRAND_OFFER
                          offer_id: '6118'
                          offer_parameter_id: '288517'
                      product_amount:
                        currency: INR
                        value: 10000000
                      interest_amount:
                        currency: INR
                        value: 1240336
                      interest_rate: 15.99
                      subvention:
                        subvention_type: INSTANT
                        offer_type: LOW_COST
                        percentage: 6
                        amount:
                          currency: INR
                          value: 566038
                  loan_amount:
                    currency: INR
                    value: 7083294
                  auth_amount:
                    currency: INR
                    value: 9444392
                  net_payment_amount:
                    currency: INR
                    value: 10684728
                  monthly_emi_amount:
                    currency: INR
                    value: 462423
                  total_emi_amount:
                    currency: INR
                    value: 8323630
                  interest_amount:
                    currency: INR
                    value: 1240336
                  split_emi_display_name: iPhone for Life
                  split_emi_amount:
                    currency: INR
                    value: 2361098
                  split_emi_percentage: 25
                  total_subvention_amount:
                    currency: INR
                    value: 566038
                  interest_rate_percentage: 15.99
                  processing_fee_details:
                    percentage: 0
                    amount:
                      currency: INR
                      value: 19900
                  processing_fee_amount:
                    currency: INR
                    value: 19900
                  emi_type: LOW_COST
                  convenience_fee_breakdown:
                    fee_calculated_on_amount:
                      currency: INR
                      value: 7072864
                    fee_amount:
                      currency: INR
                      value: 8839
                    tax_amount:
                      currency: INR
                      value: 1591
                    maximum_fee_amount:
                      currency: INR
                      value: 99999999
                    applicable_fee_amount:
                      currency: INR
                      value: 10430
    CreditEMIResponse:
      summary: Credit EMI
      value:
        data:
          order_id: v1-250319142620-aa-jbIX17
          merchant_order_reference: 093297a7-fdd4-4d51-9136-bfc68d014852
          type: CHARGE
          status: PENDING
          challenge_url: https://d1xlb36glwfkxz.cloudfront.net/debit-acs/?args=GcS6MMsuhGjGCoa5BQsRl6DUlcH81OtWUDpG7KWDkNQ%3D
          merchant_id: '111163'
          order_amount:
            value: 219900
            currency: INR
          pre_auth: false
          allowed_payment_methods:
            - CARD
            - NETBANKING
            - CREDIT_EMI
            - UPI
            - WALLET
            - DEBIT_EMI
            - CARDLESS_EMI
            - POINTS
          purchase_details:
            customer:
              email_id: anoop.pandey@qfixinfo.com
              first_name: Anoop
              last_name: Pandey
              customer_id: cust-v1-250218121918-aa-uAaCdZ
              mobile_number: '7973058466'
              country_code: '91'
              billing_address:
                address1: 10 Downing Street Westminster London
                address2: Oxford Street Westminster London
                address3: Baker Street Westminster London
                pincode: '51524036'
                city: Westminster
                state: Westminster
                country: London
                full_name: Kevin Bob
                adddress_type: Home
                address_category: billing
              shipping_address:
                address1: 10 Downing Street Westminster London
                address2: Oxford Street Westminster London
                address3: Baker Street Westminster London
                pincode: '51524036'
                city: Westminster
                state: Westminster
                country: London
                full_name: Kevin Bob
                adddress_type: Home
                address_category: shipping
              is_edit_customer_details_allowed: false
              status: ACTIVE
              created_at: '2025-02-18T12:19:18.240371Z'
              updated_at: '2025-02-18T12:19:18.240382Z'
          payments:
            - id: v1-250319142620-aa-jbIX17-cle-a
              merchant_payment_reference: 1bc6e6d1-908e-4ee9-bedc-5b8d5d3943f7
              status: PENDING
              payment_amount:
                value: 219900
                currency: INR
              payment_method: CREDIT_EMI
              acquirer_data:
                approval_code: ''
                acquirer_reference: ''
                rrn: ''
                is_aggregator: false
              offer_data:
                offer_details:
                  id: '6'
                  name: HDFC CC
                  display_name: HDFC BANK
                  issuer_type: CC_BANK
                  priority: 1
                  tenure:
                    tenure_id: '6'
                    name: 24 Months
                    tenure_type: MONTH
                    tenure_value: 24
                    issuer_offer_parameters:
                      - program_type: BANK_EMI
                        offer_id: '3498'
                        offer_parameter_id: '199796'
                      - program_type: MERCHANT_BANK_OFFER
                        offer_id: '3678'
                        offer_parameter_id: '203706'
                    details:
                      - product_code: xyz
                        product_display_name: Redmi Note 13 5G
                        brand_name: Xiaomi
                        product_amount:
                          currency: INR
                          value: 219900
                        interest_amount:
                          currency: INR
                          value: 38508
                        interest_rate: 16
                        downpayment_amount:
                          currency: INR
                          value: 200000
                        after_downpayment_reduced_product_amount:
                          currency: INR
                          value: 200000
                    auth_amount:
                      currency: INR
                      value: 219900
                    loan_amount:
                      currency: INR
                      value: 219900
                    net_payment_amount:
                      currency: INR
                      value: 258408
                    monthly_emi_amount:
                      currency: INR
                      value: 10767
                    total_emi_amount:
                      currency: INR
                      value: 258408
                    interest_amount:
                      currency: INR
                      value: 38508
                    interest_rate_percentage: 16
                    emi_type: STANDARD
                    split_emi_display_name: Apple Live
                    downpayment_details:
                      downpayment_amount:
                        currency: INR
                        value: 200000
              created_at: '2025-03-19T14:26:36.680Z'
              updated_at: '2025-03-19T14:26:41.193Z'
          created_at: '2025-03-19T14:26:20.064Z'
          updated_at: '2025-03-19T14:26:41.193Z'
          integration_mode: SEAMLESS
          payment_retries_remaining: 9
    TokenizedEMIResponse:
      summary: Tokenized EMI
      value:
        data:
          order_id: v1-250319142620-aa-jbIX17
          merchant_order_reference: 093297a7-fdd4-4d51-9136-bfc68d014852
          type: CHARGE
          status: PENDING
          challenge_url: https://d1xlb36glwfkxz.cloudfront.net/debit-acs/?args=GcS6MMsuhGjGCoa5BQsRl6DUlcH81OtWUDpG7KWDkNQ%3D
          merchant_id: '111163'
          order_amount:
            value: 219900
            currency: INR
          pre_auth: false
          allowed_payment_methods:
            - CARD
            - NETBANKING
            - CREDIT_EMI
            - UPI
            - WALLET
            - DEBIT_EMI
            - CARDLESS_EMI
            - POINTS
          purchase_details:
            customer:
              email_id: anoop.pandey@qfixinfo.com
              first_name: Anoop
              last_name: Pandey
              customer_id: cust-v1-250218121918-aa-uAaCdZ
              mobile_number: '7973058466'
              country_code: '91'
              billing_address:
                address1: 10 Downing Street Westminster London
                address2: Oxford Street Westminster London
                address3: Baker Street Westminster London
                pincode: '51524036'
                city: Westminster
                state: Westminster
                country: London
                full_name: Kevin Bob
                adddress_type: Home
                address_category: billing
              shipping_address:
                address1: 10 Downing Street Westminster London
                address2: Oxford Street Westminster London
                address3: Baker Street Westminster London
                pincode: '51524036'
                city: Westminster
                state: Westminster
                country: London
                full_name: Kevin Bob
                adddress_type: Home
                address_category: shipping
              is_edit_customer_details_allowed: false
              status: ACTIVE
              created_at: '2025-02-18T12:19:18.240371Z'
              updated_at: '2025-02-18T12:19:18.240382Z'
          payments:
            - id: v1-250319142620-aa-jbIX17-cle-a
              merchant_payment_reference: 1bc6e6d1-908e-4ee9-bedc-5b8d5d3943f7
              status: PENDING
              payment_amount:
                value: 219900
                currency: INR
              payment_method: CREDIT_EMI
              acquirer_data:
                approval_code: ''
                acquirer_reference: ''
                rrn: ''
                is_aggregator: false
              offer_data:
                offer_details:
                  id: '6'
                  name: HDFC CC
                  display_name: HDFC BANK
                  issuer_type: CC_BANK
                  priority: 1
                  tenure:
                    tenure_id: '6'
                    name: 24 Months
                    tenure_type: MONTH
                    tenure_value: 24
                    issuer_offer_parameters:
                      - program_type: BANK_EMI
                        offer_id: '3498'
                        offer_parameter_id: '199796'
                      - program_type: MERCHANT_BANK_OFFER
                        offer_id: '3678'
                        offer_parameter_id: '203706'
                    details:
                      - product_code: xyz
                        product_display_name: Redmi Note 13 5G
                        brand_name: Xiaomi
                        product_amount:
                          currency: INR
                          value: 219900
                        interest_amount:
                          currency: INR
                          value: 38508
                        interest_rate: 16
                        downpayment_amount:
                          currency: INR
                          value: 200000
                        after_downpayment_reduced_product_amount:
                          currency: INR
                          value: 200000
                    auth_amount:
                      currency: INR
                      value: 219900
                    loan_amount:
                      currency: INR
                      value: 219900
                    net_payment_amount:
                      currency: INR
                      value: 258408
                    monthly_emi_amount:
                      currency: INR
                      value: 10767
                    total_emi_amount:
                      currency: INR
                      value: 258408
                    interest_amount:
                      currency: INR
                      value: 38508
                    interest_rate_percentage: 16
                    emi_type: STANDARD
                    downpayment_details:
                      downpayment_amount:
                        currency: INR
                        value: 200000
              created_at: '2025-03-19T14:26:36.680Z'
              updated_at: '2025-03-19T14:26:41.193Z'
          created_at: '2025-03-19T14:26:20.064Z'
          updated_at: '2025-03-19T14:26:41.193Z'
          integration_mode: SEAMLESS
          payment_retries_remaining: 9
    CardlessEMIResponse:
      summary: Cardless EMI
      value:
        data:
          order_id: v1-250502082203-aa-BZMaYf
          merchant_order_reference: fd976e3e-8f56-4253-8f04-dee54df2eb3a
          type: CHARGE
          status: PENDING
          challenge_url: https://d1xlb36glwfkxz.cloudfront.net/debit-acs/?args=C9s4yc9Q9vS%2BblPrADKTjo5eC5QaE2G8N7xyuXXPjkU%3D
          callback_url: mobileapp/index
          merchant_id: '111643'
          order_amount:
            value: 1100
            currency: INR
          pre_auth: false
          allowed_payment_methods:
            - CARD
            - NETBANKING
            - CREDIT_EMI
            - UPI
            - DEBIT_EMI
            - CARDLESS_EMI
          purchase_details:
            customer:
              email_id: anoop.pandey@qfixinfo.com
              first_name: Anoop
              last_name: Pandey
              mobile_number: '7973058466'
              country_code: '91'
              billing_address:
                address1: H.No 15, Sector 17
                pincode: '61232112'
                city: CHANDIGARH
                state: PUNJAB
                country: INDIA
              shipping_address:
                address1: H.No 15, Sector 17
                pincode: '160036'
                city: CHANDIGARH
                state: PUNJAB
                country: INDIA
              is_edit_customer_details_allowed: false
            products:
              - product_code: Apple_test_1
                product_amount:
                  value: 1100
                  currency: INR
          payments:
            - id: v1-250502082203-aa-BZMaYf-cle-a
              merchant_payment_reference: c16238d1-c350-4173-9376-3297a6067956
              status: PENDING
              payment_amount:
                value: 1100
                currency: INR
              payment_method: CARDLESS_EMI
              acquirer_data:
                approval_code: ''
                acquirer_reference: ''
                rrn: ''
                is_aggregator: true
              created_at: '2025-05-02T08:24:29.150Z'
              updated_at: '2025-05-02T08:24:33.459Z'
          created_at: '2025-05-02T08:22:03.232Z'
          updated_at: '2025-05-02T08:24:33.459Z'
          integration_mode: SEAMLESS
          payment_retries_remaining: 9
    SplitEMIResponse:
      summary: Split EMI
      value:
        data:
          order_id: v1-260316101246-aa-AIfoLK
          merchant_order_reference: 6ac6e0e6-7e3e-4c1c-9ec7-d83e44142ceb
          type: CHARGE
          status: PENDING
          challenge_url: https://pluraluat.v2.pinepg.in/web/auth/landing/?token=S50N868zJ5gOC4n2D9Nsb3B9KZ5i013ZX759VhuGxo70v5EuStlUcwLZrA3zQ66J6h8
          merchant_id: '111643'
          order_amount:
            value: 10000000
            currency: INR
          pre_auth: false
          part_payment: false
          allowed_payment_methods:
            - CARD
            - NETBANKING
            - CREDIT_EMI
            - UPI
            - DEBIT_EMI
            - BNPL
            - CARDLESS_EMI
          purchase_details:
            customer:
              email_id: cashlesstechnologies@gmail.com
              first_name: Sourabh
              customer_id: '6233'
              mobile_number: '9044988837'
              country_code: '91'
              shipping_address:
                address1: Andheri
                pincode: '400072'
                city: Mumbai
                state: Maharashtra
                country: India
              is_edit_customer_details_allowed: false
          payments:
            - id: v1-260316101246-aa-AIfoLK-ce-a
              merchant_payment_reference: 25b79d45-cc4a-436a-afbc-efee5e5c8970
              status: PENDING
              payment_amount:
                value: 9444392
                currency: INR
              challenge_url: https://pluraluat.v2.pinepg.in/web/auth/landing/?token=S50N868zJ5gOC4n2D9Nsb3B9KZ5i013ZX759VhuGxo70v5EuStlUcwLZrA3zQ66J6h8
              payment_method: CREDIT_EMI
              payment_option:
                card_data:
                  card_type: CREDIT
                  network_name: VISA
                  issuer_name: ICICI Bank Limited
                  card_category: ''
                  country_code: IND
                  token_txn_type: ALT_TOKEN
                  last4_digit: '0000'
                  save: false
                  is_native_otp_eligible: true
                  card_holder_name: niyati gulati
              acquirer_data:
                approval_code: ''
                acquirer_reference: ''
                rrn: ''
                is_aggregator: true
                acquirer_name: Cyber_Source_AXIS
              offer_data:
                offer_details:
                  id: '1'
                  name: ICICI CC
                  issuer_type: CC_BANK
                  priority: 3
                  tenure:
                    tenure_id: '5'
                    name: 18 Months
                    tenure_type: MONTH
                    tenure_value: 18
                    issuer_offer_parameters:
                      - program_type: BRAND_EMI
                        offer_id: '6118'
                        offer_parameter_id: '288517'
                    details:
                      - product_code: SPLIT_APPLE-1
                        product_display_name: 16 Pro Max 64GB
                        brand_id: '1'
                        brand_name: Apple
                        product_offer_parameters:
                          - program_type: BRAND_OFFER
                            offer_id: '6118'
                            offer_parameter_id: '288517'
                        product_amount:
                          currency: INR
                          value: 10000000
                        interest_amount:
                          currency: INR
                          value: 1240336
                        interest_rate: 15.99
                        subvention:
                          subvention_type: INSTANT
                          offer_type: LOW_COST
                          percentage: 6
                          amount:
                            currency: INR
                            value: 566038
                          breakup:
                            merchant: {}
                            issuer: {}
                            brand:
                              amount:
                                currency: INR
                                value: 566038
                            dealer: {}
                    loan_amount:
                      currency: INR
                      value: 7083294
                    auth_amount:
                      currency: INR
                      value: 9444392
                    net_payment_amount:
                      currency: INR
                      value: 10684728
                    monthly_emi_amount:
                      currency: INR
                      value: 462423
                    total_emi_amount:
                      currency: INR
                      value: 8323630
                    interest_amount:
                      currency: INR
                      value: 1240336
                    split_emi_amount:
                      currency: INR
                      value: 2361098
                    split_emi_percentage: 25
                    total_subvention_amount:
                      currency: INR
                      value: 566038
                    interest_rate_percentage: 15.99
                    processing_fee_details:
                      amount:
                        currency: INR
                        value: 19900
                    processing_fee_amount:
                      currency: INR
                      value: 19900
                    emi_type: LOW_COST
                    convenience_fee_breakdown:
                      fee_calculated_on_amount:
                        currency: INR
                        value: 7072864
                      fee_amount:
                        currency: INR
                        value: 8839
                      tax_amount:
                        currency: INR
                        value: 1591
                      additional_fee_amount:
                        currency: INR
                        value: 10430
                      maximum_fee_amount:
                        currency: INR
                        value: 99999999
                      applicable_fee_amount:
                        currency: INR
                        value: 10430
              created_at: '2026-03-16T10:13:05.530Z'
              updated_at: '2026-03-16T10:13:05.820Z'
          created_at: '2026-03-16T10:12:46.701Z'
          updated_at: '2026-03-16T10:13:05.825Z'
          integration_mode: SEAMLESS
          payment_retries_remaining: 2
          is_mcc_transaction: false
          is_domestic_txn_for_risk_enabled: false
          is_v2_emi_transaction: false
    CheckPointBalanceRequestExample:
      summary: Check Point Balance
      value:
        payment_option:
          points_card_details:
            card_last4: '1112'
            card_number: '4012001037141112'
            registered_mobile_number: '7827709063'
        order_details:
          order_amount:
            value: 5000
            currency: INR
    CheckPointBalanceResponseExample:
      summary: Point Balance Response
      value:
        balance:
          value: 23718050
          currency: INR
        redeemable_amount:
          value: 3500
          currency: INR
        redeemable_points: 140
        is_eligible: true
    ChallanResponseExample:
      summary: Challan Created
      value:
        challan_id: v1-cha-250912053848-aa-xrldQX
        order_id: v1-250912053834-aa-a6T94l
        virtual_account_id: PINEMFGEPXDRCSOKYO7SUQS8
        account_name: Amazon Group
        account_ifsc: UTIB0005717
        account_bank_name: Axis Bank
        account_bank_branch: Axis Bank Branch, CRC Greater Noida West
        challan_pdf_url: https://payins-service-dev.v2.pinepg.in/api/pay/v1/order/v1-250912053834-aa-a6T94l/challan/pdf
        amount_due: 1001180
        expiry_date: '2025-09-19'
        created_date: '2025-09-12T05:38:48.260Z'
    CreateChallanRequestExample:
      summary: Create Challan
      value:
        convenience_fee_breakdown:
          fee_amount:
            value: 1000
            currency: INR
          tax_amount:
            value: 180
            currency: INR
          additional_fee_amount:
            value: 0
            currency: INR
          maximum_fee_amount:
            value: 99999999
            currency: INR
          applicable_fee_amount:
            value: 1180
            currency: INR
    AuthorizePaymentResponseExample:
      summary: Apple Pay Authorize Response
      value:
        data:
          order_id: v1-251012055723-aa-Vhv53a
          merchant_order_reference: 3fb59787-c38b-4986-87da-39be0a585fae
          type: CHARGE
          status: PROCESSED
          callback_url: https://simple-callback.onrender.com/payment/callback
          failure_callback_url: ''
          merchant_id: '106974'
          order_amount:
            value: 10000
            currency: INR
          pre_auth: false
          part_payment: false
          allowed_payment_methods:
            - CARD
            - WALLET
          purchase_details:
            customer:
              email_id: joe.sam@gmail.com
              first_name: joe
              last_name: kumar
              mobile_number: '192192883'
              country_code: '91'
              billing_address:
                address1: 10 Downing Street Westminster London
                address2: Oxford Street Westminster London
                address3: Baker Street Westminster London
                pincode: '51524036'
                city: Westminster
                state: Westminster
                country: London
                full_name: Kevin Bob
                adddress_type: Home
                address_category: billing
              shipping_address:
                address1: 10 Downing Street Westminster London
                address2: Oxford Street Westminster London
                address3: Baker Street Westminster London
                pincode: '51524036'
                city: Westminster
                state: Westminster
                country: London
                full_name: Kevin Bob
                adddress_type: Home
                address_category: shipping
              is_edit_customer_details_allowed: false
            merchant_metadata: {}
          payments:
            - id: v1-251012055723-aa-Vhv53a-wa-a
              merchant_payment_reference: def750b1-1c14-48fa-ad6e-98d42bdd7fba
              status: PROCESSED
              payment_amount:
                value: 10000
                currency: INR
              payment_method: WALLET
              payment_option:
                wallet_details:
                  wallet_code: APPLE_PAY
                  wallet_card_data:
                    card_type: CREDIT
                    network_name: VISA
                    issuer_name: INTL HDQTRS-CENTER OWNED
                    card_category: Consumer
                    country_code: IND
                    token_txn_type: NETWORK_TOKEN
                    save: false
                    card_holder_name: INDRANI DUTTA
                    bin_min: '4386371130'
                    bin_max: '4386371139'
              acquirer_data:
                approval_code: '831000'
                acquirer_reference: '19487181'
                rrn: '515511988482'
                is_aggregator: true
                acquirer_name: Cyber_Source_AXIS
              created_at: '2025-06-04T11:00:56.591Z'
              updated_at: '2025-06-04T11:01:26.656Z'
          created_at: '2025-06-04T11:00:51.067Z'
          updated_at: '2025-06-04T11:01:26.656Z'
          integration_mode: SEAMLESS
    DecoupledAuthorizePaymentResponseApplePayExample:
      summary: Apple Pay decoupled Authorize Response
      value:
        data:
          order_id: v1-251012055723-aa-Vhv53a
          merchant_order_reference: 3fb59787-c38b-4986-87da-39be0a585fae
          type: CHARGE
          status: PROCESSED
          callback_url: https://simple-callback.onrender.com/payment/callback
          failure_callback_url: ''
          merchant_id: '106974'
          order_amount:
            value: 10000
            currency: INR
          pre_auth: false
          part_payment: false
          allowed_payment_methods:
            - CARD
            - WALLET
          purchase_details:
            customer:
              email_id: joe.sam@gmail.com
              first_name: joe
              last_name: kumar
              mobile_number: '192192883'
              country_code: '91'
              billing_address:
                address1: 10 Downing Street Westminster London
                address2: Oxford Street Westminster London
                address3: Baker Street Westminster London
                pincode: '51524036'
                city: Westminster
                state: Westminster
                country: London
                full_name: Kevin Bob
                adddress_type: Home
                address_category: billing
              shipping_address:
                address1: 10 Downing Street Westminster London
                address2: Oxford Street Westminster London
                address3: Baker Street Westminster London
                pincode: '51524036'
                city: Westminster
                state: Westminster
                country: London
                full_name: Kevin Bob
                adddress_type: Home
                address_category: shipping
              is_edit_customer_details_allowed: false
            merchant_metadata: {}
          payments:
            - id: v1-251012055723-aa-Vhv53a-wa-a
              merchant_payment_reference: def750b1-1c14-48fa-ad6e-98d42bdd7fba
              status: PROCESSED
              payment_amount:
                value: 10000
                currency: INR
              payment_method: WALLET
              payment_option:
                wallet_details:
                  wallet_code: APPLE_PAY
                  wallet_card_data:
                    card_type: CREDIT
                    network_name: VISA
                    issuer_name: INTL HDQTRS-CENTER OWNED
                    card_category: Consumer
                    country_code: IND
                    token_txn_type: NETWORK_TOKEN
                    save: false
                    card_holder_name: INDRANI DUTTA
                    bin_min: '4386371130'
                    bin_max: '4386371139'
              acquirer_data:
                approval_code: '831000'
                acquirer_reference: '19487181'
                rrn: '515511988482'
                is_aggregator: true
                acquirer_name: Cyber_Source_AXIS
              created_at: '2025-06-04T11:00:56.591Z'
              updated_at: '2025-06-04T11:01:26.656Z'
          created_at: '2025-06-04T11:00:51.067Z'
          updated_at: '2025-06-04T11:01:26.656Z'
          integration_mode: SEAMLESS
    DecoupledAuthorizePaymentResponseCardsExample:
      summary: Cards decoupled Authorize Response
      value:
        data:
          order_id: v1-260701053832-aa-UVB7vO
          merchant_order_reference: 3fb59787-c38b-4986-87da-39be0a585fae
          type: CHARGE
          status: PROCESSED
          callback_url: https://simple-callback.onrender.com/payment/callback
          failure_callback_url: ''
          merchant_id: '106974'
          order_amount:
            value: 10000
            currency: INR
          pre_auth: false
          part_payment: false
          allowed_payment_methods:
            - CARD
            - WALLET
          purchase_details:
            customer:
              email_id: joe.sam@gmail.com
              first_name: joe
              last_name: kumar
              mobile_number: '192192883'
              country_code: '91'
              billing_address:
                address1: 10 Downing Street Westminster London
                address2: Oxford Street Westminster London
                address3: Baker Street Westminster London
                pincode: '51524036'
                city: Westminster
                state: Westminster
                country: London
                full_name: Kevin Bob
                adddress_type: Home
                address_category: billing
              shipping_address:
                address1: 10 Downing Street Westminster London
                address2: Oxford Street Westminster London
                address3: Baker Street Westminster London
                pincode: '51524036'
                city: Westminster
                state: Westminster
                country: London
                full_name: Kevin Bob
                adddress_type: Home
                address_category: shipping
              is_edit_customer_details_allowed: false
            merchant_metadata: {}
          payments:
            - id: v1-260701053832-aa-UVB7vO-cc-a
              merchant_payment_reference: def750b1-1c14-48fa-ad6e-98d42bdd7fba
              status: PROCESSED
              payment_amount:
                value: 10000
                currency: INR
              payment_method: CARD
              payment_option:
                card_data:
                  card_type: CREDIT
                  network_name: VISA
                  issuer_name: INTL HDQTRS-CENTER OWNED
                  card_category: Consumer
                  country_code: IND
                  token_txn_type: ALT_TOKEN
                  last4_digit: 1004
                  save: false
                  card_holder_name: Adrien
              acquirer_data:
                approval_code: '831000'
                acquirer_reference: '19487181'
                rrn: '515511988482'
                is_aggregator: true
                acquirer_name: Cyber_Source_AXIS
              created_at: '2025-06-04T11:00:56.591Z'
              updated_at: '2025-06-04T11:01:26.656Z'
          created_at: '2025-06-04T11:00:51.067Z'
          updated_at: '2025-06-04T11:01:26.656Z'
          integration_mode: SEAMLESS
    CurrencyConversionRequestExample:
      summary: Currency Conversion Request
      value:
        bank_code: AXIS
        invoice_id: INV-20250716-001
        source_currency: '840'
        dest_currency: '356'
        transaction_amount: '100'
    CurrencyConversionResponseExample:
      summary: Currency Conversion Response
      value:
        source_currency: '840'
        dest_currency: '356'
        invoice_id: INV-20250716-001
        conversion_rate: 86.74531575294934
        converted_amount: 8674
        transaction_amount: '100'
        converted_exponent: 2
    CreatePayoutRequestExample:
      summary: Create IMPS Payout
      value:
        clientReferenceId: 430582f3-6e83-4cec-a3ab-72847fb9680f
        payeeName: Kevin Bob
        email: kevin.bob@example.com
        phone: '9876543210'
        accountNumber: '500012121313141415'
        branchCode: SBIN0011123
        amount:
          value: 4900
          currency: INR
        mode: IMPS
        remarks: Refund payment
    CreatePayoutResponseExample:
      summary: Payout Scheduled Successfully
      value:
        clientReferenceId: 0171c4c0-f50a-4151-b39b-63c87a3c0cd6
        requestReferenceId: req-ba50808e45ce4d19a86988e7d90df3ad
        paymentReferenceId: txn-b03ee63e412a4ecf88b6bdb08a6632c3
        payeeName: Kevin Bob
        accountNumber: '*******1415'
        branchCode: SBIN0011123
        amount:
          currency: INR
          value: 4900
        mode: IMPS
        status: SCHEDULED
        message: Payment instruction scheduled for execution
        scheduledAt: '2025-07-16T10:26:06Z'
        remarks: REFUND
        _links:
          - rel: status
            href: /payouts/v3/payments?paymentReferenceId=txn-b03ee63e412a4ecf88b6bdb08a6632c3
    GetPayoutsResponseExample:
      summary: List Payouts
      value:
        payments:
          - clientReferenceId: 0171c4c0-f50a-4151-b39b-63c87a3c0cd6
            paymentReferenceId: txn-b03ee63e412a4ecf88b6bdb08a6632c3
            bankTransactionReferenceId: '664816162868'
            mode: IMPS
            amount:
              currency: INR
              value: 4900
            accountNumber: '*******9300'
            payeeName: Kevin Bob
            fees:
              currency: INR
              value: 0
            tax:
              currency: INR
              value: 0
            remarks: REFUND
            status: SUCCESS
            message: Payment instruction successfully executed with bank
            createdAt: '2025-07-16T10:26:06Z'
            updatedAt: '2025-07-16T10:28:06Z'
            scheduledAt: '2025-07-16T10:26:06Z'
        totalRecords: 1
        nextPage: 1
        totalPages: 1
        _links:
          - rel: first
            href: /payouts/v3/payments?page=1&count=500&paymentReferenceId=txn-b03ee63e412a4ecf88b6bdb08a6632c3
    GetAccountBalanceResponseExample:
      summary: Account Balance
      value:
        accountNumber: '0995300992429'
        branchCode: UTIB0001111
        balance:
          currency: INR
          value: 19994250900
    CreateBulkPayoutResponseExample:
      summary: Bulk Payout Processed
      value:
        requestReferenceId: req-1b980dd2c75b456782bc1a3acff481a0
        status: PROCESSED
        message: ''
        _links:
          - rel: status
            href: /payouts/v3/payments?requestReferenceId=req-1b980dd2c75b456782bc1a3acff481a0
    UpdateScheduledPayoutResponseExample:
      summary: Payout Rescheduled
      value:
        clientReferenceId: test4feb0-10
        requestReferenceId: req-7c85bda19bf141c981b94e750c6041b6
        paymentReferenceId: txn-f9e00a80a357418d908a67bd30cdbc37
        payeeName: Rishendrasai
        accountNumber: '919000664016'
        branchCode: PYTM0123456
        vpa: ''
        email: s.john@g.com
        phone: '9000664016'
        amount:
          currency: INR
          value: 100
        mode: IMPS
        status: SCHEDULED
        message: Payment instruction pending to be executed
        scheduledAt: '2025-07-05T16:05:00Z'
        remarks: Test transaction
        _links:
          - rel: status
            href: /payouts/v3/payments?paymentReferenceId=txn-f9e00a80a357418d908a67bd30cdbc37
    CancelScheduledPayoutResponseExample:
      summary: Payout Cancelled
      value:
        clientReferenceId: 0171c4c0-f50a-4151-b39b-63c87a3c0cd6
        requestReferenceId: req-ba50808e45ce4d19a86988e7d90df3ad
        paymentReferenceId: txn-b03ee63e412a4ecf88b6bdb08a6632c3
        payeeName: Kevin Bob
        accountNumber: '*******1415'
        branchCode: SBIN0011123
        amount:
          currency: INR
          value: 4900
        mode: IMPS
        status: SCHEDULED
        message: Payment instruction scheduled for execution
        scheduledAt: '2025-07-16T10:26:06Z'
        remarks: REFUND
        _links:
          - rel: status
            href: /payouts/v3/payments?paymentReferenceId=txn-b03ee63e412a4ecf88b6bdb08a6632c3
    ListPlansResponseExample:
      summary: List All Plans
      value:
        links:
          first:
            href: https://api.pluralpay.in/api/v1/public/plans/?size=10&page=0&sort=id,asc
          self:
            href: https://api.pluralpay.in/api/v1/public/plans/?size=10&page=0&sort=id,asc
          next:
            href: https://api.pluralpay.in/api/v1/public/plans/?size=10&page=0&sort=id,asc
          last:
            href: https://api.pluralpay.in/api/v1/public/plans/?size=10&page=0&sort=id,asc
        page:
          size: 10
          total_elements: 50
          total_pages: 5
          number: 1
        plans:
          - plan_id: v1-plan-4405071524-aa-qlAtAf
            status: ACTIVE
            plan_name: Monthly Plan
            plan_description: Diwali dhammaka plan intended to attract customers on diwali time
            frequency: Day
            amount:
              value: 100
              currency: INR
            max_limit_amount:
              value: 100
              currency: INR
            trial_period_in_days: 1
            start_date: '2022-02-01T17:32:28Z'
            end_date: '2022-10-21T17:32:28Z'
            merchant_metadata:
              key1: DD
              key2: XOF
            merchant_plan_reference: '1234567890'
            created_at: '2022-10-21T17:32:28Z'
            modified_at: '2022-10-21T17:32:28Z'
    CreatePlanRequestExample:
      summary: Create Monthly Plan
      value:
        plan_name: Monthly Plan 2025-06-12T06:16:37.364Z
        plan_description: Diwali dhammaka plan intended to attract customers on diwali time
        frequency: Month
        amount:
          value: 100
          currency: INR
        max_limit_amount:
          value: 210
          currency: INR
        trial_period_in_days: 0
        end_date: '2026-10-21T12:02:28Z'
        merchant_metadata:
          key1: DD
        merchant_plan_reference: b41770ac-cd3a-48d3-9e93-7dc9246b4751
        initial_debit_amount:
          value: 110
          currency: INR
        auto_debit_ot: 'false'
    CreatePlanResponseExample:
      summary: Plan Created Successfully
      value:
        plan_id: v1-pla-250612061639-aa-666Zge
        status: ACTIVE
        plan_name: Monthly Plan 2025-06-12T06:16:37.364Z
        plan_description: Diwali dhammaka plan intended to attract customers on diwali time
        frequency: Month
        amount:
          value: 100
          currency: INR
        max_limit_amount:
          value: 210
          currency: INR
        trial_period_in_days: 0
        start_date: '2025-06-12T06:16:39.92710492Z'
        end_date: '2026-10-21T12:02:28Z'
        merchant_metadata:
          key1: DD
        merchant_plan_reference: b41770ac-cd3a-48d3-9e93-7dc9246b4751
        created_at: '2025-06-12T06:16:39.933117Z'
        modified_at: '2025-06-12T06:16:39.93313Z'
        initial_debit_amount:
          value: 110
          currency: INR
        auto_debit_ot: 'false'
    GetPlanByIdResponseExample:
      summary: Get Plan by ID
      value:
        plan_id: v1-plan-4405071524-aa-qlAtAf
        status: ACTIVE
        plan_name: Monthly Plan
        plan_description: Diwali dhammaka plan intended to attract customers on diwali time
        frequency: Day
        amount:
          value: 100
          currency: INR
        max_limit_amount:
          value: 100
          currency: INR
        trial_period_in_days: 1
        start_date: '2022-02-01T17:32:28Z'
        end_date: '2022-10-21T17:32:28Z'
        merchant_metadata:
          key1: DD
          key2: XOF
        merchant_plan_reference: '1234567890'
        created_at: '2022-10-21T17:32:28Z'
        modified_at: '2022-10-21T17:32:28Z'
    ListSubscriptionsResponseExample:
      summary: List All Subscriptions
      value:
        links:
          first:
            href: https://api.pluralpay.in/api/v1/public/{resource}/?size=10&page=0&sort=id,asc
          self:
            href: https://api.pluralpay.in/api/v1/public/{resource}/?size=10&page=0&sort=id,asc
          next:
            href: https://api.pluralpay.in/api/v1/public/{resource}/?size=10&page=0&sort=id,asc
          last:
            href: https://api.pluralpay.in/api/v1/public/{resource}/?size=10&page=0&sort=id,asc
        page:
          size: 10
          total_elements: 50
          total_pages: 5
          number: 1
        subscriptions:
          - order_id: v1-4405071524-aa-qlAtAf
            subscription_id: v1-sub-4405071524-aa-qlAtAf
            merchant_subscription_reference: '1234567890'
            enable_notification: true
            plan_details:
              plan_id: v1-plan-4405071524-aa-qlAtAf
              status: ACTIVE
              plan_name: Monthly Plan
              plan_description: Diwali dhammaka plan intended to attract customers on diwali time
              frequency: Day
              amount:
                value: 100
                currency: INR
              max_limit_amount:
                value: 100
                currency: INR
              trial_period_in_days: 1
              start_date: '2022-02-01T17:32:28Z'
              end_date: '2022-10-21T17:32:28Z'
              merchant_metadata:
                key1: DD
                key2: XOF
              merchant_plan_reference: '1234567890'
              created_at: '2022-10-21T17:32:28Z'
              modified_at: '2022-10-21T17:32:28Z'
            quantity: 1
            start_date: '2022-07-21T17:32:28Z'
            end_date: '2022-09-21T17:32:28Z'
            customer_id: '123456'
            payment_mode: UPI
            allowed_payment_methods:
              - UPI
            integration_mode: SEAMLESS
            merchant_metadata:
              key1: DD
              key2: XOF
            status: ACTIVE
            is_tpv_enabled: true
            bank_account:
              account_number: '123456789012345'
              name: Gaurav Kumar
              ifsc: HDFC0001234
            created_at: '2022-10-21T17:32:28Z'
            modified_at: '2022-10-21T17:32:28Z'
    CreateSubscriptionResponseExample:
      summary: Subscription Created
      value:
        callback_url: www.google.com
        failure_callback_url: www.example.com/failure
        redirect_url: https://api.pluralonline.com/api/v3/checkout-bff/redirect/checkout?token=V3_ye7V868X7DP92HQCSnVq7XZNlxvVhOQ3OgXGt96Buwfc53BwN9mUDwJsOcr%2Fw5uq&subscription_id=v1-sub-250612062122-aa-3HLXL5
        order_id: v1-250612062122-aa-UZyPbu
        subscription_id: v1-sub-250612062122-aa-3HLXL5
        merchant_subscription_reference: f5d77ef9-fa11-4f58-a9f4-543e4a7022c5
        enable_notification: true
        plan_details:
          plan_id: v1-pla-250612061639-aa-666Zge
          status: ACTIVE
          plan_name: Monthly Plan 2025-06-12T06:16:37.364Z
          plan_description: Diwali dhammaka plan intended to attract customers on diwali time
          frequency: Month
          amount:
            value: 100
            currency: INR
          max_limit_amount:
            value: 210
            currency: INR
          trial_period_in_days: 0
          start_date: '2025-06-12T06:16:39.927105Z'
          end_date: '2026-10-21T12:02:28Z'
          merchant_metadata:
            key1: DD
          merchant_plan_reference: b41770ac-cd3a-48d3-9e93-7dc9246b4751
          created_at: null
          modified_at: null
          initial_debit_amount:
            value: 110
            currency: INR
          auto_debit_ot: 'false'
        quantity: 1
        start_date: '2025-06-12T06:22:21Z'
        end_date: '2025-06-21T17:32:28Z'
        customer_id: cust-v1-250519171901-aa-dPF6mg
        payment_mode: null
        allowed_payment_methods:
          - UPI
        integration_mode: REDIRECT
        merchant_metadata:
          key1: DD
          key2: XOF
        status: CREATED
        is_tpv_enabled: false
        bank_account:
          account_number: null
          name: null
          ifsc: null
        created_at: '2025-06-12T06:21:22.242344Z'
        modified_at: '2025-06-12T06:21:22.267111Z'
        order_amount:
          value: 210
          currency: INR
    ListPresentationsResponseExample:
      summary: List Presentations by Subscription
      value:
        links:
          first: null
          self:
            href: http://plural-subscription-service-uat.v2.pinepg.in/api/v1/public/subscriptions/v1-sub-250916121532-aa-lKR1S1/presentations?size=10&page=1&sort=cycleId%2Cdesc
          next: null
          last: null
        page:
          size: 10
          total_elements: 4
          total_pages: 1
          number: 0
        presentations:
          - subscription_id: v1-sub-250916121532-aa-lKR1S1
            presentation_id: v1-bil-250916130526-aa-nBELDX
            due_date: '2025-09-20T10:00:00Z'
            amount:
              value: 100
              currency: INR
            merchant_presentation_reference: z1B3pu0916002
            pdn_status: NOTIFIED
            status: INITIATED
            failure_count: 0
          - subscription_id: v1-sub-250916121532-aa-lKR1S1
            presentation_id: v1-bil-250916122333-aa-lDQHQ1
            due_date: '2025-09-19T10:00:00Z'
            amount:
              value: 100
              currency: INR
            merchant_presentation_reference: z1B3pu0916001
            pdn_status: NOTIFIED
            status: COMPLETED
            failure_count: 0
    CreatePresentationResponseExample:
      summary: Presentation Created
      value:
        subscription_id: v1-sub-250612062122-aa-3HLXL5
        presentation_id: v1-bil-250612063111-aa-FJIBcB
        due_date: '2025-06-05T06:14:21.72036Z'
        amount:
          value: 100
          currency: INR
        status: CREATED
        merchant_presentation_reference: 9caa061f-0e50-494b-aa13-8e902b0bef03
    GetPresentationResponseExample:
      summary: Get Presentation
      value:
        subscription_id: v1-sub-250911093342-aa-v9YH7S
        presentation_id: v1-bil-250911093822-aa-i37gSm
        due_date: '2025-09-12T18:00:00Z'
        amount:
          value: 100
          currency: INR
        merchant_presentation_reference: z1B3pu003
        pdn_status: NOTIFIED
        status: PENDING
        failure_count: 0
    SubscriptionNotificationResponseExample:
      summary: Notification Sent
      value:
        subscription_id: v1-sub-4405071524-aa-qlAtAf
        due_date: '2022-09-21T17:32:28Z'
        presentation_id: v1-pre-4405071524-aa-qlAtAf
        amount:
          value: 50000
          currency: INR
        merchant_presentation_reference: '1234567890'
        pdn_status: CREATED
        status: WAITING_FOR_EXECUTION
    CreateDebitResponseExample:
      summary: Debit Created
      value:
        subscription_id: v1-sub-4405071524-aa-qlAtAf
        presentation_id: v1-pre-4405071524-aa-qlAtAf
        due_date: '2024-03-15T10:30:00Z'
        amount:
          value: 50000
          currency: INR
        merchant_presentation_reference: '1234567890'
        status: CREATED'

    GetSbmdSubscriptionResponseV3Example:
      summary: FetchSBMD Mandate Response
      value:
        subscription_id: v1-sub-260601221059-aa-G3KP2L
        order_id: v1-260601221059-aa-29gUE3
        customer_id: cust-v1-260601210124-aa-NG6Pt3
        status: ACTIVE
        start_date: '2026-06-01T22:10:59.591656Z'
        end_date: '2026-06-15T22:10:59.59166Z'
        currency: INR
        total_blocked_amount: 1100
        debited_amount: 600
        remaining_balance: 500
    CreateSbmdSubscriptionResponseV3example:
      summary:
      value:
        subscription_id: v1-sub-260605003506-aa-DnGs6t
        order_id: v1-260605003506-aa-D8Jren
        customer_id: cust-v1-260605003430-aa-bxHT0u
        status: CREATED
        start_date: '2026-06-05T00:35:06.338066185Z'
        end_date: '2026-06-25T00:35:06.338067825Z'
        plan_details:
          reserve_amount: 1000
          currency: INR
          validity_days: 20
        description: Test SBMD
        expires_at: '2026-06-25T00:35:06.338067825Z'
        redirect_url: null