Pine LabsDOCS

Create Payment

POST/api/pay/v1/orders/{order_id}/payments

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.

Requires Bearer token. Get token →

Path Parameters

NameTypeDescription
order_id
stringrequired

Unique identifier of the order in the Pine Labs Online database.

Request Body

NameTypeDescription
payments
PaymentRequestItem[]required

Array of payment items. Typically contains a single item.

merchant_payment_reference
stringrequired

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
objectrequired

Monetary amount with currency.

payment_method
stringrequired

Type of payment method for this payment.

Allowed values:
CARDUPINETBANKINGWALLETBRAND_WALLETCREDIT_EMIDEBIT_EMICARDLESS_EMIPOINTSBNPL
payment_option
object

Mandatory object

An object that contains the details of the payment options.

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.

additional_payment_details
object

additional payment details

device_info
object

Device information details. Mandatory for SIMPL and SIMPL3 BNPL providers.

payer_data
object

Payer details for cross-border transactions. Contains customer identity and address information needed for cross-border compliance.

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.

Response

NameTypeDescription
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
string

Payment type.

Allowed values:
CHARGEREFUNDADD_MONEY
status
string

Order status.

Allowed values:
CREATEDPENDINGPROCESSEDAUTHORIZEDCANCELLEDATTEMPTEDFAILEDFULLY_REFUNDEDPARTIALLY_REFUNDED
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.

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
payments
PaymentItem[]

Array of payment details. Returned only for orders linked with a payment.

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
string

Type of integration.

Allowed values:
SEAMLESSREDIRECT
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.

Status Codes

200Payment created successfully. Returns the full order with payment details.
400The request was malformed or missing required fields.
401Authentication failed — missing, expired, or invalid Bearer token.
404Order not found.
422Unprocessable entity — validation failed or payment cannot be processed.
500An unexpected error occurred on the server.
Request
curl -X POST "https://api.pluralpay.in/api/pay/v1/orders/{order_id}/payments" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "payments": [
    {
      "merchant_payment_reference": "pay-ref-006",
      "payment_amount": {
        "value": 100,
        "currency": "INR"
      },
      "payment_method": "WALLET",
      "payment_option": {
        "wallet_details": {
          "wallet_code": "PAYTM"
        }
      }
    }
  ]
}'

Run this request

order_id
200 OK
{
  "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"
  }
}