Collection
Create a collection order
One endpoint serves both collection products: pay_type=1 returns a hosted page that renders a UPI QR and wakes the customer’s UPI app, pay_type=2 returns parameters for a checkout you control.
Last updated 2026-10-24
Request parameters
merchant_order_no must be unique per merchant and doubles as your idempotency key.
| Parameter | Required | Type | Description |
|---|---|---|---|
| user_id | yes | int | Merchant ID |
| merchant_order_no | yes | string | Your order number, unique per merchant |
| pay_type | yes | int | 1 = Scan & Pay (hosted), 2 = native |
| amount | yes | decimal | INR. Scan & Pay 100–50,000; native 100–5,000 |
| callback_url | yes | string | Where we POST the result |
| remark | no | string | Free-form note |
| sign | yes | string | MD5 signature, see below |
Signature
Concatenate the six values in exactly this order, then take the 32-character lowercase MD5.
sign = md5(user_id + merchant_order_no + amount + pay_type + callback_url + key)
# example
md5("10093" + "MCH20261024001" + "1000" + "2" +
"https://merchant.com/callback" + "64967e6b92c11ffde8b804ff4808022f")Response
status is 1 (pending) on creation. Redirect the customer to pay_link, or render it in a webview.
| Field | Type | Description |
|---|---|---|
| platform_order_no | string | Platform order number, appears in the callback |
| merchant_order_no | string | Echo of your order number |
| amount | decimal | Order amount |
| fee | decimal | Fee charged on success |
| pay_link | string | Payment URL to present to the customer |
| status | int | 1 pending, 2 paid, 3 failed |
Choosing pay_type
Use 1 when you do not want to build a payment screen: mobile web, invoices, chat commerce. The hosted page also solves desktop-to-mobile by rendering a QR.
Use 2 when checkout is your product and every redirect costs conversion. Limits are lower (5,000 per order) and the rate differs.
FAQ
What happens if I send a duplicate merchant_order_no?
It is treated as the same order rather than a new one — which is what you want during network retries, but the fastest way to create a duplicate-order bug if you reuse it accidentally.
Can I change the amount after creation?
No. Create a new order with a new merchant_order_no and let the old one expire.