# Create Payment

**Method:** `POST`

**Path:** `/api/pay/v1/orders/{order_id}/payments`

**Category:** Wallet

**Authentication:** Required

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


## Path Parameters

- `order_id` (`string`) **required** — Unique identifier of the order in the Pine Labs Online database.

## Request Body

Content-Type: `application/json`

- `payments` (`PaymentRequestItem[]`) **required** — Array of payment items. Typically contains a single item.
  - `merchant_payment_reference` (`string`) **required** — **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.
  - `payment_amount` (`object`) **required** — Monetary amount with currency.
    - `value` (`integer`) **required** — Amount in the smallest currency unit (e.g., paisa for INR).
    - `currency` (`string`) **required** — Three-letter ISO 4217 currency code.

  - `payment_method` (`CARD | UPI | NETBANKING | WALLET | CREDIT_EMI | DEBIT_EMI | CARDLESS_EMI | POINTS | BNPL`) **required** — Type of payment method for this payment.
  - `payment_option` (`object`) — **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, `cardless_details` for cardless EMI, `points_card_details` for points, or `bnpl_details` for BNPL. One object is mandatory to process the request. 
    - `card_details` (`object`) — An object that contains the card details.
      - `name` (`string`) — Name on the card.<ul><li>Maximum length: `100` characters.</li><li>Minimum length: `1` characters.</ul></li>Example: `Kevin`
      - `card_number` (`string`) **required** — 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` (`string`) — 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` (`string`) — 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` (`string`) — 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` (`string`) — 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` (`object`) — An object that contains the card token details.
      - `last4_digit` (`string`) — 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` (`string`) **required** — 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` (`string`) **required** — 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` (`string`) — Card token expiry month.<br><br>Has to be 2 digits.<br><br>Example: `08`<br><br>Supported characters: `0-9`
      - `expiry_year` (`string`) — Card token year of expiry.<br><br>Has to be 4 digits.<br><br>Example: `2025`<br><br>Supported characters: `0-9`
      - `cvv` (`string`) — 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` (`string`) — Unique identifier of the save card transaction.

    - `cardless_details` (`object`) — An object that contains the user information to process a cardless payment.
      - `pan_number` (`string`) **required** — Users PAN.<br><br>Example: `ABCDE1234F`
      - `registered_mobile_number` (`string`) **required** — 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` (`object`) — **Mandatory when payment_method is `POINTS`**.<br><br>An object that contains the point card details.
      - `card_last4` (`string`) **required** — 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`
      - `card_number` (`string`) **required** — 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` (`string`) **required** — 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>

    - `bnpl_details` (`object`) — An object that contains the buy now pay later details. **Mandatory for BNPL payment method.**
      - `mobile` (`string`) **required** — Customer's 10-digit mobile number without country code.
      - `bnpl_pay_code` (`LAZYPAY`) **required** — BNPL service provider code.

    - `netbanking_details` (`object`) — Net banking payment details.
      - `pay_code` (`string`) **required** — Bank code in the Pine Labs Online database.
      - `txn_mode` (`REDIRECT | QR | INTENT`) — Net banking transaction mode.

    - `upi_details` (`object`) — 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. 
      - `txn_mode` (`COLLECT | INTENT`) **required** — UPI transaction mode.
      - `payer` (`object`) — UPI payer details. Required for COLLECT flow.
        - `vpa` (`string`) **required** — Virtual Payment Address (VPA) of the payer.


    - `wallet_details` (`object`) — An object that contains wallet payment details. **Mandatory for WALLET payment method.**
      - `wallet_code` (`string`) **required** — Wallet provider code.


  - `device_info` (`object`) — Device information details. **Mandatory for SIMPL and SIMPL3 BNPL providers.** 
    - `operating_system` (`ANDROID | IOS | MACOS | WINDOWS`) — Type of operating system. **Mandatory when the request is made from a mobile platform.**
    - `source_ip_address` (`string`) — The IP address of the user's device initiating the request.
    - `browser_ip_address` (`string`) — The IP address captured from the user's browser during the transaction.
    - `browser_user_agent` (`string`) — The user's browser information string.
    - `device_model` (`string`) — The model of the user's device.
    - `device_manufacturer` (`string`) — The name of the company that manufactured the user's device.

  - `payer_data` (`object`) — Payer details for cross-border transactions. Contains customer identity and address information needed for cross-border compliance.
    - `first_name` (`string`) **required** — First name of the payer.
    - `last_name` (`string`) **required** — Last name of the payer.
    - `email` (`string`) **required** — Email address of the payer.
    - `phone` (`string`) **required** — Phone number of the payer.
    - `country_code` (`string`) — Country code for the phone number.
    - `pan` (`string`) — PAN card number. Required when requires_pan is true in the order's cross-border details response.
    - `dob` (`string`) — 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.
    - `name_on_pan` (`string`) — 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.
    - `address_line_1` (`string`) — Address line 1 of the payer.
    - `address_line_2` (`string`) — Address line 2 of the payer.
    - `city` (`string`) — City of the payer.
    - `state` (`string`) — State of the payer.
    - `country` (`string`) — Country of the payer.
    - `zip` (`string`) — Postal/ZIP code.
    - `is_tcs_declared` (`boolean`) — 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.

  - `tcs_data` (`object`) — 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` (`object`) — An object that contains details related to the offer. **Required for CREDIT_EMI, DEBIT_EMI, CARDLESS_EMI, and UPI payment methods.**
    - `offer_details` (`object`) — An object that contains details related to the offer entity/issuer.
      - `id` (`string`) — The ID of the Issuer offering the offer. Optional for UPI.
      - `name` (`string`) — The name of the Issuer offering the offer. Optional for UPI.
      - `display_name` (`string`) — The display name of the Issuer.
      - `issuer_type` (`string`) — The type of the Issuer offering the offer.<br><br>Example:<ul><li>`CC_BANK`<li>`DC_BANK`<li>`UPI`
      - `priority` (`string`) — The priority of the Issuer offering the offer.
      - `tenure` (`object`) — The EMI tenure details related to the offer.
        - `tenure_id` (`string`) — The ID of the Tenure.
        - `name` (`string`) — The name of the Tenure.
        - `tenure_type` (`string`) — Type of the tenure.
        - `tenure_value` (`integer`) — The value of the tenure.
        - `offer_ranking` (`integer`) — Sort ranking for the offer.
        - `is_mobile_number_required_for_eligibility` (`boolean`) — Mobile number is required for velocity check or not.
        - `is_offer_auto_applied` (`boolean`) — Is this particular offer going to be auto applied at the UI.
        - `issuer_offer_parameters` (`object[]`) — List of Offer Schemes for the tenure.
          - `program_type` (`string`) — Type of program. Accepted values: BANK_EMI, BRAND_EMI, MERCHANT_BANK_OFFER, MERCHANT_BRAND_OFFER, BRAND_OFFER, MY_EMI
          - `offer_id` (`string`) — Unique identifier of the offer.
          - `offer_parameter_id` (`string`) — Unique offer parameter identifier.

        - `details` (`object[]`) — An array of objects that contains the product details.
          - `product_code` (`string`) — Unique Product identifier of the product.<br><b>Example: `redmi_1`
          - `product_display_name` (`string`) — Name of the Product.<br><br>Example: `Oneplus 13R`
          - `brand_id` (`string`) — Unique brand identifier of the product.<br><br>Example: `3`
          - `product_offer_parameters` (`object[]`) — An array of objects that contains the product offer schemes for the product EMI details.
            - `program_type` (`string`) — 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` (`string`) — Unique identifier of the offer.<br><br>Example: `309`
            - `offer_parameter_id` (`string`) — Unique offer parameter identifier.<br><br>Example: `20`

          - `product_amount` (`object`) — An object that contains the product amount details.
            - `currency` (`string`) **required** — Type of currency.<br><br>Example: `INR`
            - `value` (`integer`) **required** — The transaction amount in Paisa.

          - `product_coupon_discount_amount` (`object`) — An object that contains the product coupon discount amount details.
            - `currency` (`string`) **required**
            - `value` (`integer`) **required**

          - `subvention` (`object`) — An object that contains the subvention details.
            - `subvention_type` (`string`)
            - `percentage` (`string`)
            - `amount` (`object`)
              - `currency` (`string`) **required**
              - `value` (`integer`) **required**

            - `breakup` (`object`)
              - `brand` (`object`)
                - `amount` (`object`)
                  - `currency` (`string`) **required**
                  - `value` (`integer`) **required**


              - `merchant` (`object`)
                - `amount` (`object`)
                  - `currency` (`string`) **required**
                  - `value` (`integer`) **required**


              - `issuer` (`object`)
                - `amount` (`object`)
                  - `currency` (`string`) **required**
                  - `value` (`integer`) **required**


              - `dealer` (`object`)
                - `amount` (`object`)
                  - `currency` (`string`) **required**
                  - `value` (`integer`) **required**



            - `max_amount` (`object`)
              - `currency` (`string`) **required**
              - `value` (`integer`) **required**

            - `min_amount` (`object`)
              - `currency` (`string`) **required**
              - `value` (`integer`) **required**


          - `discount` (`object`) — An object that contains the product discount details.
            - `discount_type` (`string`) — Type of discount.<br><br>Possible values:<ul><li>`INSTANT`</li><li>`DEFERRED`</ul></li>
            - `discount_string` (`string`)
            - `percentage` (`number`)
            - `amount` (`string`)
            - `max_amount` (`object`)
              - `currency` (`string`) **required**
              - `value` (`integer`) **required**

            - `min_amount` (`object`)
              - `currency` (`string`) **required**
              - `value` (`integer`) **required**

            - `discount_deferred_duration_value` (`string`)
            - `discount_deferred_duration_type` (`string`) — Possible values:<ul><li>`DAY`</li><li>`MONTH`</ul></li>
            - `breakup` (`object`)
              - `brand` (`object`)
                - `amount` (`object`)
                  - `currency` (`string`) **required**
                  - `value` (`integer`) **required**


              - `merchant` (`object`)
                - `amount` (`object`)
                  - `currency` (`string`) **required**
                  - `value` (`integer`) **required**


              - `issuer` (`object`)
                - `amount` (`object`)
                  - `currency` (`string`) **required**
                  - `value` (`integer`) **required**


              - `dealer` (`object`)
                - `amount` (`object`)
                  - `currency` (`string`) **required**
                  - `value` (`integer`) **required**




          - `brand_name` (`string`) — Name of the Brand.<br><br>Example: `Oneplus`
          - `interest_amount` (`object`)
            - `currency` (`string`) **required**
            - `value` (`integer`) **required**

          - `downpayment_amount` (`object`)
            - `currency` (`string`) **required**
            - `value` (`integer`) **required**

          - `after_downpayment_reduced_product_amount` (`object`)
            - `currency` (`string`) **required**
            - `value` (`integer`) **required**

          - `interest_rate` (`string`) — Rate of interest applied on the product.<br><br>Example: `19`
          - `cart_coupon_discount_product_share` (`object`)
            - `currency` (`string`) **required**
            - `value` (`integer`) **required**

          - `bundle_id` (`string`) — Unique identifier of the bundle offer in Pine Labs Online Database.<br><br>Example: `BUNDLE_002_OE3`

        - `discount` (`string`) — Discount details applicable for the tenure.
        - `auth_amount` (`object`)
          - `currency` (`string`) **required**
          - `value` (`integer`) **required**

        - `loan_amount` (`object`)
          - `currency` (`string`) **required**
          - `value` (`integer`) **required**

        - `total_discount_amount` (`object`)
          - `currency` (`string`) **required**
          - `value` (`integer`) **required**

        - `net_payment_amount` (`object`)
          - `currency` (`string`) **required**
          - `value` (`integer`) **required**

        - `monthly_emi_amount` (`object`)
          - `currency` (`string`) **required**
          - `value` (`integer`) **required**

        - `total_emi_amount` (`object`)
          - `currency` (`string`) **required**
          - `value` (`integer`) **required**

        - `intrest_amount` (`object`)
          - `currency` (`string`) **required**
          - `value` (`integer`) **required**

        - `total_subvention_amount` (`string`) — Total subvention amount for the tenure.
        - `interest_rate_percentage` (`integer`)
        - `processing_fee_details` (`object`)
          - `amount` (`object`)
            - `currency` (`string`) **required**
            - `value` (`integer`) **required**


        - `processing_fee_amount` (`object`)
          - `currency` (`string`) **required**
          - `value` (`integer`) **required**

        - `emi_type` (`string`) — EMI type for the tenure.<ul><li>`LOW_COST`<li>`NO_COST`<li>`STANDARD`
        - `split_emi_display_name` (`string`)
        - `split_emi_amount` (`object`)
          - `currency` (`string`) **required**
          - `value` (`integer`) **required**

        - `split_emi_percentage` (`number`)
        - `convenience_fee_breakdown` (`object`)
          - `fee_calculated_on_amount` (`object`)
            - `currency` (`string`) **required**
            - `value` (`integer`) **required**

          - `fee_amount` (`object`)
            - `currency` (`string`) **required**
            - `value` (`integer`) **required**

          - `tax_amount` (`object`)
            - `currency` (`string`) **required**
            - `value` (`integer`) **required**

          - `additional_fee_amount` (`object`)
            - `currency` (`string`) **required**
            - `value` (`integer`) **required**

          - `maximum_fee_amount` (`object`)
            - `currency` (`string`) **required**
            - `value` (`integer`) **required**

          - `applicable_fee_amount` (`object`)
            - `currency` (`string`) **required**
            - `value` (`integer`) **required**

          - `subvented_fee_amount` (`object`)
            - `currency` (`string`) **required**
            - `value` (`integer`) **required**


        - `cart_coupon_discount_amount` (`object`)
          - `currency` (`string`) **required**
          - `value` (`integer`) **required**

        - `total_coupon_discount` (`object`)
          - `currency` (`string`) **required**
          - `value` (`integer`) **required**

        - `downpayment_details` (`object`) — **Mandatory for EMI with Downpayment**<br><br>An object that contains the downpayment details.
          - `downpayment_amount` (`object`)
            - `currency` (`string`) **required**
            - `value` (`integer`) **required**







### Example Request

```json
{
  "payments": [
    {
      "merchant_payment_reference": "pay-ref-001",
      "payment_amount": {
        "value": 50000,
        "currency": "INR"
      },
      "payment_method": "CARD",
      "payment_option": {
        "card_details": {
          "card_number": "your_card_number"
        },
        "card_token_details": {
          "token": "your_token",
          "token_txn_type": "your_token_txn_type"
        },
        "cardless_details": {
          "pan_number": "your_pan_number",
          "registered_mobile_number": "9876543210"
        },
        "points_card_details": {
          "card_last4": "your_card_last4",
          "card_number": "your_card_number",
          "registered_mobile_number": "9876543210"
        },
        "bnpl_details": {
          "mobile": "9876543210",
          "bnpl_pay_code": "LAZYPAY"
        },
        "netbanking_details": {
          "pay_code": "NB1531",
          "txn_mode": "REDIRECT"
        },
        "upi_details": {
          "txn_mode": "COLLECT",
          "payer": {
            "vpa": "kevinbob@okaxis"
          }
        },
        "wallet_details": {
          "wallet_code": "PAYTM"
        }
      },
      "device_info": {
        "operating_system": "ANDROID",
        "source_ip_address": "10.11.19.2",
        "browser_ip_address": "203.0.113.42",
        "browser_user_agent": "Chrome",
        "device_model": "Samsung S21 Ultra",
        "device_manufacturer": "Samsung"
      },
      "payer_data": {
        "first_name": "Rajesh",
        "last_name": "Patel",
        "email": "rajesh@techcorp.com",
        "phone": "9876543210",
        "country_code": "91",
        "pan": "KGEPS1880J",
        "dob": "1999-04-14",
        "name_on_pan": "TechCorp Private Limited",
        "address_line_1": "10 Downing Street Westminster London",
        "address_line_2": "Oxford Street Westminster London",
        "country": "IN",
        "is_tcs_declared": true
      },
      "offer_data": {
        "offer_details": {
          "tenure": {
            "issuer_offer_parameters": [],
            "details": [
              {
                "product_offer_parameters": [],
                "product_amount": {
                  "currency": "your_currency",
                  "value": 10000
                },
                "product_coupon_discount_amount": {
                  "currency": "your_currency",
                  "value": 10000
                },
                "subvention": {
                  "amount": {
                    "currency": "your_currency",
                    "value": 10000
                  },
                  "breakup": {
                    "brand": {
                      "amount": {
                        "currency": "your_currency",
                        "value": 10000
                      }
                    },
                    "merchant": {
                      "amount": {
                        "currency": "your_currency",
                        "value": 10000
                      }
                    },
                    "issuer": {
                      "amount": {
                        "currency": "your_currency",
                        "value": 10000
                      }
                    },
                    "dealer": {
                      "amount": {
                        "currency": "your_currency",
                        "value": 10000
                      }
                    }
                  },
                  "max_amount": {
                    "currency": "your_currency",
                    "value": 10000
                  },
                  "min_amount": {
                    "currency": "your_currency",
                    "value": 10000
                  }
                },
                "discount": {
                  "max_amount": {
                    "currency": "your_currency",
                    "value": 10000
                  },
                  "min_amount": {
                    "currency": "your_currency",
                    "value": 10000
                  },
                  "breakup": {
                    "brand": {
                      "amount": {
                        "currency": "your_currency",
                        "value": 10000
                      }
                    },
                    "merchant": {
                      "amount": {
                        "currency": "your_currency",
                        "value": 10000
                      }
                    },
                    "issuer": {
                      "amount": {
                        "currency": "your_currency",
                        "value": 10000
                      }
                    },
                    "dealer": {
                      "amount": {
                        "currency": "your_currency",
                        "value": 10000
                      }
                    }
                  }
                },
                "interest_amount": {
                  "currency": "your_currency",
                  "value": 10000
                },
                "downpayment_amount": {
                  "currency": "your_currency",
                  "value": 10000
                },
                "after_downpayment_reduced_product_amount": {
                  "currency": "your_currency",
                  "value": 10000
                },
                "cart_coupon_discount_product_share": {
                  "currency": "your_currency",
                  "value": 10000
                }
              }
            ],
            "auth_amount": {
              "currency": "your_currency",
              "value": 10000
            },
            "loan_amount": {
              "currency": "your_currency",
              "value": 10000
            },
            "total_discount_amount": {
              "currency": "your_currency",
              "value": 10000
            },
            "net_payment_amount": {
              "currency": "your_currency",
              "value": 10000
            },
            "monthly_emi_amount": {
              "currency": "your_currency",
              "value": 10000
            },
            "total_emi_amount": {
              "currency": "your_currency",
              "value": 10000
            },
            "intrest_amount": {
              "currency": "your_currency",
              "value": 10000
            },
            "processing_fee_details": {
              "amount": {
                "currency": "your_currency",
                "value": 10000
              }
            },
            "processing_fee_amount": {
              "currency": "your_currency",
              "value": 10000
            },
            "split_emi_amount": {
              "currency": "your_currency",
              "value": 10000
            },
            "convenience_fee_breakdown": {
              "fee_calculated_on_amount": {
                "currency": "your_currency",
                "value": 10000
              },
              "fee_amount": {
                "currency": "your_currency",
                "value": 10000
              },
              "tax_amount": {
                "currency": "your_currency",
                "value": 10000
              },
              "additional_fee_amount": {
                "currency": "your_currency",
                "value": 10000
              },
              "maximum_fee_amount": {
                "currency": "your_currency",
                "value": 10000
              },
              "applicable_fee_amount": {
                "currency": "your_currency",
                "value": 10000
              },
              "subvented_fee_amount": {
                "currency": "your_currency",
                "value": 10000
              }
            },
            "cart_coupon_discount_amount": {
              "currency": "your_currency",
              "value": 10000
            },
            "total_coupon_discount": {
              "currency": "your_currency",
              "value": 10000
            },
            "downpayment_details": {
              "downpayment_amount": {
                "currency": "your_currency",
                "value": 10000
              }
            }
          }
        }
      }
    }
  ]
}
```

## Responses

- `200` — Payment created successfully. Returns the full order with payment details.
- `400` — 
- `401` — 
- `404` — Order not found.
- `422` — Unprocessable entity — validation failed or payment cannot be processed.
- `500` — 

### Response Schema

- `data` (`object`)
  - `order_id` (`string`) — Unique identifier of the order in the Pine Labs Online database.
  - `merchant_order_reference` (`string`) — Unique identifier entered while creating the order.
  - `type` (`CHARGE | REFUND`) — Payment type.
  - `status` (`CREATED | PENDING | PROCESSED | AUTHORIZED | CANCELLED | ATTEMPTED | FAILED | FULLY_REFUNDED | PARTIALLY_REFUNDED`) — Order status.
  - `challenge_url` (`string`) — URL to accept payment. Returned only after payment is linked against the order_id.
  - `merchant_id` (`string`) — Unique identifier of the merchant in the Pine Labs Online database.
  - `order_amount` (`object`) — Monetary amount with currency.
    - `value` (`integer`) **required** — Amount in the smallest currency unit (e.g., paisa for INR).
    - `currency` (`string`) **required** — Three-letter ISO 4217 currency code.

  - `pre_auth` (`boolean`) — Whether pre-authorization is needed.
  - `part_payment` (`boolean`) — Whether part payment is enabled.
  - `allowed_payment_methods` (`string[]`)
  - `notes` (`string`) — Note shown against the order.
  - `callback_url` (`string`) — URL to redirect customers after successful payment.
  - `failure_callback_url` (`string`) — URL to redirect customers after failed payment.
  - `purchase_details` (`object`)
    - `customer` (`object`) — Customer information.
      - `email_id` (`string`) — Customer's email address.
      - `first_name` (`string`) — Customer's first name.
      - `last_name` (`string`) — Customer's last name.
      - `customer_id` (`string`) — Unique identifier of the customer.
      - `mobile_number` (`string`) — Customer's mobile number.
      - `country_code` (`string`) — Country code of the registered mobile number. Defaults to 91.
      - `billing_address` (`object`) — Physical address.
        - `address1` (`string`) — Address line 1.
        - `address2` (`string`) — Address line 2.
        - `address3` (`string`) — Address line 3.
        - `pincode` (`string`) — Postal/ZIP code.
        - `city` (`string`) — City name.
        - `state` (`string`) — State or province.
        - `country` (`string`) — Country name.
        - `full_name` (`string`) — Full name of the address holder.
        - `adddress_type` (`string`) — Type of address (e.g., Home, Office).
        - `address_category` (`billing | shipping`) — Category of the address.

      - `shipping_address` (`object`) — Physical address.
        - `address1` (`string`) — Address line 1.
        - `address2` (`string`) — Address line 2.
        - `address3` (`string`) — Address line 3.
        - `pincode` (`string`) — Postal/ZIP code.
        - `city` (`string`) — City name.
        - `state` (`string`) — State or province.
        - `country` (`string`) — Country name.
        - `full_name` (`string`) — Full name of the address holder.
        - `adddress_type` (`string`) — Type of address (e.g., Home, Office).
        - `address_category` (`billing | shipping`) — Category of the address.

      - `is_edit_customer_details_allowed` (`boolean`) — Whether the customer is allowed to edit their details.

    - `merchant_metadata` (`object`) — Arbitrary key-value pairs for merchant use. Maximum 10 pairs, 256 characters each.
    - `split_info` (`object`) — Split settlement information for marketplace flows.
      - `split_type` (`string`) — Type of split.
      - `split_details` (`SplitDetail[]`) — Array of split details.
        - `split_merchant_id` (`string`) — Unique identifier of the partner merchant.
        - `split_settlement_id` (`string`) — Unique identifier of the split settlement.
        - `merchant_settlement_reference` (`string`) — Unique identifier entered while creating an order in split.
        - `amount` (`object`) — Monetary amount with currency.
          - `value` (`integer`) **required** — Amount in the smallest currency unit (e.g., paisa for INR).
          - `currency` (`string`) **required** — Three-letter ISO 4217 currency code.

        - `on_hold` (`boolean`) — Whether the settlement is on hold for future release.
        - `status` (`RELEASED | HOLD`) — Split settlement status.
        - `updated_at` (`string`) — ISO 8601 UTC timestamp when the split order was created.


    - `cart_details` (`object`) — Cart details for the purchase.
      - `cart_items` (`CartItem[]`) — Array of cart items.
        - `item_id` (`string`) — Unique identifier of the item.
        - `item_name` (`string`) — Name of the item.
        - `item_description` (`string`) — Description of the item.
        - `item_details_url` (`string`) — Item details URL.
        - `item_image_url` (`string`) — Image URL of the item (24x24 recommended).
        - `item_original_unit_price` (`integer`) — Original price of the item.
        - `item_discounted_unit_price` (`integer`) — Discounted price of the item.
        - `item_quantity` (`integer`) — Number of items purchased.
        - `item_currency` (`string`) — Currency type for the item purchase.



  - `payments` (`PaymentItem[]`) — Array of payment details. Returned only for orders linked with a payment.
    - `id` (`string`) — Unique identifier of the payment.
    - `merchant_payment_reference` (`string`) — Unique payment reference assigned by the merchant.
    - `status` (`PENDING | AUTHORIZED | CANCELLED | PROCESSED | FAILED`) — Payment status.
    - `payment_amount` (`object`) — Monetary amount with currency.
      - `value` (`integer`) **required** — Amount in the smallest currency unit (e.g., paisa for INR).
      - `currency` (`string`) **required** — Three-letter ISO 4217 currency code.

    - `base_amount` (`object`) — Monetary amount with currency.
      - `value` (`integer`) **required** — Amount in the smallest currency unit (e.g., paisa for INR).
      - `currency` (`string`) **required** — Three-letter ISO 4217 currency code.

    - `conversion_rate` (`number`) — Currency conversion rate.
    - `payment_method` (`CARD | UPI | NETBANKING | WALLET | POINTS | CREDIT_EMI | DEBIT_EMI | CARDLESS_EMI | BNPL`) — Type of payment method.
    - `payment_option` (`object`) — Payment option details. Structure varies based on payment_method.
      - `card_data` (`object`) — Card payment details.
        - `card_type` (`NONE | DEBIT | CREDIT | PREPAID | CIRRUS | CHARGE_CARD | COMMERCIAL_PREPAID | COMMERCIAL_CREDIT | COMMERCIAL_DEBIT | CONSUMER | DEFERRED_DEBIT | OTHER`) — Type of card.
        - `network_name` (`string`) — Card network provider.
        - `issuer_name` (`string`) — Card issuer entity.
        - `product_name` (`string`) — Card product name.
        - `card_category` (`string`) — Card category type.
        - `country_code` (`string`) — Card issuer's country code.
        - `token_txn_type` (`ALT_TOKEN | NETWORK_TOKEN | ISSUER_TOKEN`) — Transaction token type.
        - `last4_digit` (`string`) — Last four digits of the card.
        - `save` (`boolean`) — Whether customer consented to save card details.
        - `is_native_otp_eligible` (`boolean`) — Whether card is eligible for Native OTP.

      - `upi_details` (`object`) — UPI payment details returned in the payment response.
        - `txn_mode` (`COLLECT | INTENT`) — UPI transaction mode used.
        - `payer` (`object`)
          - `vpa` (`string`) — Virtual Payment Address of the payer.


      - `netbanking_details` (`object`) — Net banking details returned in the payment response.
        - `pay_code` (`string`) — Bank code used for the transaction.
        - `txn_mode` (`REDIRECT | QR | INTENT`) — Net banking transaction mode.

      - `wallet_details` (`object`) — Wallet payment details returned in the response.
        - `wallet_name` (`string`) — Name of the wallet provider.

      - `bnpl_details` (`object`) — Buy Now Pay Later payment details returned in the response.
        - `mobile` (`string`) — Customer mobile number.
        - `bnpl_pay_code` (`string`) — BNPL provider code.

      - `points_card_details` (`object`) — Points card payment details returned in the response.
        - `card_last4` (`string`) — Last 4 digits of the card.
        - `points_redeemed` (`string`) — Number of points redeemed.

      - `cardless_details` (`object`) — Cardless EMI payment details returned in the response.
        - `pan_number` (`string`) — Masked PAN number.
        - `registered_mobile_number` (`string`) — Registered mobile number.


    - `acquirer_data` (`object`) — Acquirer details for the payment.
      - `approval_code` (`string`) — Authorization code returned from acquirer.
      - `acquirer_reference` (`string`) — Unique reference returned from acquirer.
      - `rrn` (`string`) — Retrieval reference number returned from acquirer.
      - `is_aggregator` (`boolean`) — Whether Pine Labs Online is responsible for settling funds.

    - `offer_data` (`object`) — Offer details associated with the payment. Present for EMI payments.
      - `offer_details` (`object`)
        - `id` (`string`) — The ID of the Issuer offering the offer.
        - `name` (`string`) — The name of the Issuer offering the offer.
        - `issuer_type` (`string`) — The type of the Issuer offering the offer.
        - `priority` (`integer`) — The priority of the Issuer offering the offer.
        - `tenure` (`object`)
          - `tenure_id` (`string`)
          - `name` (`string`)
          - `tenure_type` (`string`)
          - `tenure_value` (`integer`)
          - `issuer_offer_parameters` (`object[]`)
            - `program_type` (`string`)
            - `offer_id` (`string`)
            - `offer_parameter_id` (`string`)

          - `details` (`object[]`)
            - `product_code` (`string`)
            - `product_display_name` (`string`)
            - `brand_id` (`string`)
            - `brand_name` (`string`)
            - `product_offer_parameters` (`object[]`)
              - `program_type` (`string`)
              - `offer_id` (`string`)
              - `offer_parameter_id` (`string`)

            - `product_amount` (`object`)
              - `currency` (`string`)
              - `value` (`integer`)

            - `interest_amount` (`object`)
              - `currency` (`string`)
              - `value` (`integer`)

            - `interest_rate` (`number`)
            - `subvention` (`object`)
              - `subvention_type` (`string`)
              - `offer_type` (`string`)
              - `percentage` (`number`)
              - `amount` (`object`)
                - `currency` (`string`)
                - `value` (`integer`)

              - `breakup` (`object`)
                - `merchant` (`object`)
                - `issuer` (`object`)
                - `brand` (`object`)
                  - `amount` (`object`)
                    - `currency` (`string`)
                    - `value` (`integer`)


                - `dealer` (`object`)



          - `auth_amount` (`object`)
            - `currency` (`string`)
            - `value` (`integer`)

          - `loan_amount` (`object`)
            - `currency` (`string`)
            - `value` (`integer`)

          - `net_payment_amount` (`object`)
            - `currency` (`string`)
            - `value` (`integer`)

          - `monthly_emi_amount` (`object`)
            - `currency` (`string`)
            - `value` (`integer`)




    - `error_detail` (`object`) — Error details. Returned only for failed payments.
      - `code` (`string`) — Error short code.
      - `message` (`string`) — Error description explaining why the error occurred.

    - `capture_data` (`CaptureDataItem[]`) — Capture details. Present only for pre-authorized orders.
      - `merchant_capture_reference` (`string`) — Unique identifier for the capture request.
      - `capture_amount` (`object`) — Monetary amount with currency.
        - `value` (`integer`) **required** — Amount in the smallest currency unit (e.g., paisa for INR).
        - `currency` (`string`) **required** — Three-letter ISO 4217 currency code.

      - `created_at` (`string`) — ISO 8601 UTC timestamp when the amount was captured.

    - `additional_detail` (`object`) — Additional details related to the payment.
    - `created_at` (`string`) — ISO 8601 UTC timestamp when the payment was created.
    - `updated_at` (`string`) — ISO 8601 UTC timestamp when the payment was last updated.

  - `created_at` (`string`) — ISO 8601 UTC timestamp when the order was created.
  - `updated_at` (`string`) — ISO 8601 UTC timestamp when the order was last updated.
  - `integration_mode` (`SEAMLESS | REDIRECT`) — Type of integration.
  - `image_url` (`string`) — QR code image URL. Returned for UPI Intent with QR flow.
  - `payment_retries_remaining` (`integer`) — Number of retry attempts remaining before payment is marked as failed.
  - `is_mcc_transaction` (`boolean`) — Whether the order is a MCC transaction.
  - `is_domestic_txn_for_risk_enabled` (`boolean`) — Whether risk evaluation is enabled for domestic transactions.
  - `order_token` (`string`) — Unique identifier of the order token.
  - `cross_border_details` (`object`) — System-enriched cross-border details from merchant onboarding configuration. Includes payer_data and tcs_data after payment creation.
    - `flow_type` (`LRS | NON_LRS`) — Flow type derived from the merchant's purpose code.
    - `purpose_code` (`string`) — Purpose code configured during merchant onboarding.
    - `commodity_type` (`GOODS | SERVICES`) — Commodity type configured during merchant onboarding.
    - `requires_pan` (`boolean`) — Whether PAN is required for this cross-border transaction.
    - `payer_data` (`object`) — Payer details for cross-border transactions. Contains customer identity and address information needed for cross-border compliance.
      - `first_name` (`string`) **required** — First name of the payer.
      - `last_name` (`string`) **required** — Last name of the payer.
      - `email` (`string`) **required** — Email address of the payer.
      - `phone` (`string`) **required** — Phone number of the payer.
      - `country_code` (`string`) — Country code for the phone number.
      - `pan` (`string`) — PAN card number. Required when requires_pan is true in the order's cross-border details response.
      - `dob` (`string`) — 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.
      - `name_on_pan` (`string`) — 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.
      - `address_line_1` (`string`) — Address line 1 of the payer.
      - `address_line_2` (`string`) — Address line 2 of the payer.
      - `city` (`string`) — City of the payer.
      - `state` (`string`) — State of the payer.
      - `country` (`string`) — Country of the payer.
      - `zip` (`string`) — Postal/ZIP code.
      - `is_tcs_declared` (`boolean`) — 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.

    - `tcs_data` (`object`) — TCS computation data from the payment. Present for LRS orders where TCS is applicable; otherwise null.



### Example Response

```json
{
  "data": {
    "order_id": "v1-5757575757-aa-hU1rUd",
    "merchant_order_reference": "112345",
    "type": "CHARGE",
    "status": "CREATED",
    "challenge_url": "https://api.pluralpay.in/web/auth/landing/?token=S50xnInJvpcftOzmuGWUqnLpIe694YPGJiKL%2FdBh5Yl%2Bwb8giJrl6HoTvcKljRVZa3H",
    "merchant_id": "123456",
    "order_amount": {
      "value": 50000,
      "currency": "INR"
    },
    "pre_auth": true,
    "part_payment": 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": "john@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",
          "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": "billing"
        },
        "is_edit_customer_details_allowed": false
      },
      "merchant_metadata": {
        "clientId": "DD",
        "transactionReferenceNo": "pine-1223",
        "merchantId": "1234",
        "tid": "9000990",
        "acquirerName": "HDFC_FSS",
        "isOfferDisplayRequired": "true",
        "OfferData": "UHJvZHVjdF9Db2RlPSIgIiZQcm9kdWN0X05hbWU9IiImUGF5bWVudF9Nb2RlPUJhbmsgRU1JJkNhcmRfVHlwZT1EZWJpdCBDYXJkJkJhbmtfTmFtZT1IREZDIERlYml0JkVNSV9UZW51cmU9NiZJbnRlcmVzdF9SYXRlPTkuMCZJbnRlcmVzdF9BbW91bnQ9MTM4MTQwJk1vbnRobHlfSW5zdGFsbG1lbnQ9ODk0NjkwJkF1dGhvcml6YXRpb25fQW1vdW50PTEwMCZMb2FuX2Jvb2tpbmdfQW1vdW50PTUyMzAwMDAmSW50ZXJlc3RfQ2FzaGJhY2tfQW1vdW50PTAmSW50ZXJlc3RfQ2FzaGJhY2tfVHlwZT1EZWZlcnJlZCZBZGRpdGlvbmFsX0Nhc2hiYWNrPSIiJkFkZGl0aW9uYWxfQ2FzaGJhY2tfVHlwZT0iIiZEZXNjcmlwdGlvbj1CYW5rIEVNSSZQcm9kdWN0X1ZhbHVlPTUyMzAwMDA",
        "tenant_id": "PGATPOS",
        "is_offer_validation_required": "true"
      },
      "split_info": {
        "split_type": "AMOUNT",
        "split_details": [
          {
            "split_merchant_id": "1324",
            "split_settlement_id": "v1-241118074845-aa-wduUQF-ss-b",
            "merchant_settlement_reference": "kshjhfk",
            "amount": {
              "value": 50000,
              "currency": "INR"
            },
            "on_hold": true,
            "status": "HOLD",
            "updated_at": "2024-11-18T07:48:45.324Z"
          }
        ]
      },
      "cart_details": {
        "cart_items": [
          {
            "item_id": "9876",
            "item_name": "T Shirt",
            "item_description": "Shopping on Diwali Sale",
            "item_details_url": "https://chriscross.in/cdn/shop/files/95_800x.jpg",
            "item_image_url": "https://chriscross.in/cdn/shop/files/95_800x.jpg",
            "item_original_unit_price": 199,
            "item_discounted_unit_price": 149,
            "item_quantity": 2,
            "item_currency": "INR"
          }
        ]
      }
    },
    "payments": [
      {
        "id": "v1-5206071124-aa-mpLhF3-cc-l",
        "merchant_payment_reference": "pay-ref-001",
        "status": "PENDING",
        "payment_amount": {
          "value": 50000,
          "currency": "INR"
        },
        "base_amount": {
          "value": 50000,
          "currency": "INR"
        },
        "conversion_rate": 0.0123,
        "payment_method": "CARD",
        "payment_option": {
          "card_data": {
            "card_type": "CREDIT",
            "network_name": "VISA",
            "issuer_name": "HDFC",
            "product_name": "Visa Platinum",
            "card_category": "CONSUMER",
            "country_code": "IND",
            "token_txn_type": "ALT_TOKEN",
            "last4_digit": "1091",
            "save": false,
            "is_native_otp_eligible": true
          },
          "upi_details": {
            "txn_mode": "COLLECT",
            "payer": {
              "vpa": "kevinbob@okaxis"
            }
          },
          "netbanking_details": {
            "pay_code": "NB1531",
            "txn_mode": "REDIRECT"
          },
          "wallet_details": {
            "wallet_name": "PAYTM"
          },
          "bnpl_details": {
            "mobile": "9876543210",
            "bnpl_pay_code": "LAZYPAY"
          },
          "points_card_details": {
            "card_last4": "1234",
            "points_redeemed": "500"
          },
          "cardless_details": {
            "pan_number": "ABCDE****F",
            "registered_mobile_number": "9876543210"
          }
        },
        "acquirer_data": {
          "approval_code": "030376",
          "acquirer_reference": "202455840588334",
          "rrn": "419335023601",
          "is_aggregator": true
        },
        "offer_data": {
          "offer_details": {
            "tenure": {
              "issuer_offer_parameters": [],
              "details": [
                {
                  "product_offer_parameters": [],
                  "subvention": {
                    "breakup": {
                      "brand": {}
                    }
                  }
                }
              ]
            }
          }
        },
        "error_detail": {
          "code": "PAYMENT_DECLINED",
          "message": "Transaction declined due to insufficient balance"
        },
        "capture_data": [
          {
            "merchant_capture_reference": "f31d8c60-0dc8-4788-a577-5ced930cc175",
            "capture_amount": {
              "value": 50000,
              "currency": "INR"
            },
            "created_at": "2024-07-19T11:13:21.523516426Z"
          }
        ],
        "created_at": "2024-09-11T08:07:55.647Z",
        "updated_at": "2024-09-11T08:07:57.115Z"
      }
    ],
    "created_at": "2024-07-09T07:57:08.022Z",
    "updated_at": "2024-07-09T07:57:08.022Z",
    "integration_mode": "SEAMLESS",
    "image_url": "https://api.pluralpay.in/qr/image/v1-order-id",
    "payment_retries_remaining": 10,
    "is_mcc_transaction": false,
    "is_domestic_txn_for_risk_enabled": false,
    "order_token": "mzohdLMNCzZ2SN3k1Ppglkz4mmk9edyahe34BM%2Fu9gA%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",
        "name_on_pan": "TechCorp Private Limited",
        "address_line_1": "10 Downing Street Westminster London",
        "address_line_2": "Oxford Street Westminster London",
        "country": "IN",
        "is_tcs_declared": true
      }
    }
  }
}
```

---

Reference: https://localhost:3000/api/wallet/create-payment
