10 min read
Payments
Settings → Payments is where you get paid online. You connect one payment company (Razorpay or Cashfree), choose which ways shoppers can pay (UPI, cards, cash on delivery and so on), and try it with a ₹1 test order. Keys are stored encrypted.
What this is for
- Taking UPI, cards, netbanking, wallets and pay later through Razorpay or Cashfree.
- Offering cash on delivery with a ₹49 handling fee, or a 2% discount for paying by UPI.
- Letting shoppers pay straight to your UPI ID or bank account, and confirming it yourself.
- Cancelling online orders that were never paid, so stock isn’t held for nobody.
- Collecting the rest of the money on pre-orders.
How it works
When a shopper places an order, the order is saved first, then the payment starts. The order is marked paid only when the money is confirmed, either by the gateway telling us directly (a webhook) or by you, for cash and manual transfers.
Two safety nets are built in:
- Every webhook is checked against your Razorpay Webhook secret, and a repeated webhook (Razorpay retries) is recognised and ignored, so an order is never marked paid twice.
- The total is always recalculated on our side, including the payment method’s fee or discount. A shopper can’t change what they pay by editing the page.
The Payments page
Screenshot: Settings → PaymentsPlaceholder, not a real screenshot yetThe status line (You can take payments), Main way to get paid with Razorpay in Test mode and a green Working tick, the Shoppers can pay with rows, and Add another way to get paid.From top to bottom:
- Status line. ”✓ You can take payments”, or what is missing (“You can take cash on delivery only”). Place a test order opens your checkout in a new tab with a ₹1 test item in the basket. The test item is hidden from your store and never touches your stock.
- Main way to get paid. The payment company that takes the money, Test or Live, a green Working tick and the last payment. Manage opens its Connect page; Change lets you pick another company. Your old keys are kept, so you can switch back.
- Shoppers can pay with. One row per way to pay: UPI, Cards, Netbanking, Wallets, Pay later / EMI and Cash on delivery. Switch each on or off, and drag the rows to change the order. Checkout shows only the ones that are on, in this order, and the payment window offers only those. New shops start with UPI, Cards and Netbanking on and cash on delivery off. A shop that already saved its own cash on delivery choice keeps it.
- + Add another way to get paid. Search payment companies, filter by UPI, cards and so on, and see their fees. Razorpay and Cashfree connect today, and Decentro for UPI only (see UPI with Decentro); others show Coming soon.
- Advanced. Bank transfer and UPI QR you confirm yourself, a fee or discount per method, and unpaid-order rules, on their own page (Settings → Payments → Advanced). Payments are taken as soon as the shopper pays, so there is no capture setting.
When something is wrong
A problem shows as a red dot with one plain sentence, and a button to fix it where we can:
| Message | Button | What it does |
|---|---|---|
| Payments go through, but updates aren’t reaching your shop | Fix it | For a one-click Razorpay connection, points Razorpay’s updates back at your shop. |
| (same, with pasted keys) | Show me how | Opens the Connect page at the webhook step. |
| Your connection ran out | Connect again | Opens the Connect page to run Connect Razorpay again. |
| Some connection details are missing or wrong | Check details | Opens the Connect page. |
| Every online way to pay is turned off | Turn on UPI | Turns UPI back on. |
First-time setup, one question at a time
A new shop opening Settings → Payments gets a short guide with a progress bar. You can press Skip for now at any step, and reopen it with Set up step by step.
How do you want to get paid?
Pick Razorpay, Cashfree, or Only cash on delivery for now. Not sure? Press What’s this? for a two-line explanation.
Connect
Pick Test or Live, then follow the three numbered steps. They tell you where to click in your payment company’s dashboard and what to copy. Press Test connection to check your keys (nothing is charged or created), then Save and connect.
If your platform has Razorpay’s partner app set up, you’ll also see a Connect Razorpay button: log in to Razorpay, press Allow, done. Payment updates are switched on for you.
Which payments?
UPI, Cards and Netbanking are already on. Turn others on if you want them.
Try a ₹1 test order
Press Open test checkout, pay ₹1 (in Test mode no real money moves), and see the order arrive in Orders.
You’re ready
Your payment company sends the money from real orders to your bank. How soon depends on your agreement with them; check their dashboard.
Connect Razorpay with API keys
- Open the Razorpay Dashboard, Account & Settings → API Keys, and pick Test or Live at the top.
- Press Generate Key, and paste the Key ID and Key Secret on the Connect page.
- In Account & Settings → Webhooks, add a webhook with the Webhook address and
Webhook secret shown on the Connect page (we make the secret for you; copy it). Tick
payment.captured,payment.failed,refund.processedandrefund.failed, plusqr_code.creditedandqr_code.closedif you use UPI — confirmed automatically.
For Cashfree, see Cashfree: it needs only two values and no webhook.
Ways to pay you confirm yourself
| Method | What the shopper does | Who confirms payment |
|---|---|---|
| UPI — confirmed automatically | Scans a QR made for their order | Razorpay, automatically, within seconds |
| UPI to your own ID — you confirm it | Pays your UPI ID or bank account from their own app | You, in Orders → Pending UPI |
| Cash on delivery | Pays the delivery person | You or the courier’s remittance |
Both UPI options are off until you turn them on under Advanced. What’s this? beside them compares the two:
| UPI — confirmed automatically | UPI to your own ID — you confirm it | |
|---|---|---|
| Order marked paid | By itself, in seconds | You click Mark paid |
| Fake payment risk | None: the payment company confirms it | A shopper can show a fake screenshot. Always check your bank. |
| Fee | The payment company’s fee | No fee |
| Money arrives | When the payment company pays you out | Straight away, in your bank |
Set them up under Advanced. Each method can also have a Fee or discount: None, Fixed amount (₹) or Percent of subtotal, with a Label shown to shoppers such as “COD handling” (₹49) or “UPI discount” (2%).
Record how you were paid
When you mark an order paid yourself (Collect payment or Mark as paid on the order), choose how the money came in: UPI, Bank transfer (NEFT, IMPS, RTGS), Cash, Cheque or Other. The UTR or reference is optional but worth adding: it is the number you search for in your bank statement later. The Date received starts on today; change it if the money arrived earlier. All three show on the order’s Timeline.
Payments by method
Analytics → Reports → Payments by method (under Finance) adds up the money you received in the date range by how it came in: each method you recorded by hand, plus each payment company such as Razorpay. The Recorded column says whether you marked it paid or the gateway confirmed it. Payments you marked paid count on the Date received you entered. Export it as CSV to match against your bank statement.
Unpaid orders
- Cancel unpaid online orders after (minutes): an online order that is never paid is
cancelled after this many minutes, and its stock released. We check with the gateway first,
so a payment that arrived late is kept, not cancelled. Set it to
0to turn this off. Cash on delivery is never auto-cancelled. - Unpaid UPI or bank transfers have their own, separate timer: Cancel unpaid transfer orders automatically after a number of hours (Cancel after (hours from the order)). The shopper gets an email 12 hours before their order is cancelled.
Pre-order balances
For pre-orders that take a deposit at checkout, Advanced → Pre-orders controls the rest:
- Request the balance automatically, a set number of Days before the expected ship date.
- Reminders (days after the request): how many reminders go out, and when.
- If the balance is not paid within a number of days of the request: Do nothing, I will follow up myself, Cancel the order and refund the deposit, or Cancel the order and keep the deposit.
Tip. If you keep deposits on unpaid pre-orders, say so clearly on the product page and in your terms. Shoppers in India expect a refund unless told otherwise, and a clear line avoids chargebacks.
UPI with Decentro
Decentro is an Indian payments company. The Decentro app takes UPI payments only. On a computer the shopper scans a QR code for the exact amount; on a phone they tap Google Pay, PhonePe, Paytm or Other UPI app. The order is marked paid on its own when Decentro confirms it. Cards and netbanking still need Razorpay or Cashfree.
Install the app
In Settings → Payments, select + Add another way to get paid and pick UPI — confirmed automatically (Decentro), or go to Apps, install Decentro and open Connect.
Get your keys from Decentro
Decentro emails your Client ID, Client secret and Consumer URN when they set up your account. You get test keys first and live keys once Decentro approves your business. Can’t find them? Ask your Decentro account manager.
Paste them and test
Pick Test or Live to match the keys, paste the three values, and select Test connection. It only looks up a payment that doesn’t exist, so nothing is created and no money moves. Then select Save and turn on.
Turn on payment updates
Under Payment updates on the Connect page there are two things to copy. In your Decentro dashboard open Configurations → Callback configurations and paste them in:
- Callback URL: the address Decentro sends each payment update to.
- Headers: a ready-made block,
{ "x-webhook-token": "<your secret>" }. Paste it whole into the headers box. Copy it before you save: after that the secret is hidden, and you’d make a new one. Updates without it are refused.
Your shop must be on a public web address for Decentro to reach it. Without payment updates, orders still turn paid: the shopper’s order page checks with Decentro every few seconds, and they can tap I’ve paid.
Good to know:
- Decentro takes UPI payments from ₹5. A QR code stays open for 30 minutes; after that the shopper asks for a new one from the order page.
- Refund sends the money back to the shopper’s UPI ID through Decentro. Partial refunds work.
- A payment Decentro can’t confirm yet (“deemed”) stays Unpaid until Decentro settles it, usually within 3 days.
More payment companies
Razorpay and Cashfree connect today, and UPI — confirmed automatically (Decentro) for UPI. PhonePe and PayU are listed as Coming soon. A developer can add others as a plugin (see the Plugins SDK).
Common problems and fixes
| Problem | Why it happens | Fix |
|---|---|---|
| Shopper paid but the order is still Unpaid | The webhook isn’t reaching us, or the secret doesn’t match. | Press Fix it or Show me how on the red line, or check the webhook address and secret in the Razorpay Dashboard match the Connect page exactly. |
| Checkout shows only cash on delivery | Every online way to pay is off, or no payment company is connected. | Switch UPI (or another) on under Shoppers can pay with. |
| “These look like Live keys, but Test is picked” | The keys and the Test/Live switch don’t match. | Pick the mode that matches your keys. |
| Auto-confirmed UPI orders never get paid | The QR events aren’t ticked. | Tick qr_code.credited and qr_code.closed on the Razorpay webhook. |
| Decentro payments are confirmed late | Decentro isn’t sending payment updates yet, or sends the wrong secret. | Paste the Callback URL and Headers block from Apps → Decentro → Connect → Payment updates into Decentro’s Configurations → Callback configurations. |
| Decentro Test connection says the keys are wrong | Test keys used in Live (or the other way round), or a typo. | Match Test/Live to the keys Decentro sent, and paste them again. |
| An order was cancelled but the shopper paid | They paid after the unpaid-order window. | The order shows Refund needed; refund that payment, or place a fresh order for them. |
| COD fee isn’t showing at checkout | Cash on delivery is off, or Type is None. | Switch Cash on delivery on under Shoppers can pay with, and set Fixed amount (₹) under Advanced. |
FAQ
Where do I see my Razorpay payment ID?
On the order page, each payment shows its reference and the gateway’s own payment id (it starts
with pay_), so you can find it in the Razorpay Dashboard.
Are my Razorpay keys safe?
Yes. The Key secret and Webhook secret are encrypted before they’re stored and are shown
back to you masked, like ••••1234. See Security and data protection.
Can a shopper retry a failed payment?
Yes. A failed attempt is kept as history and the shopper can pay again from the pay page; each retry is a new attempt on the same order, and the gateway is never charged twice for one attempt.
Do refunds go back automatically?
For Razorpay payments, yes: Refund sends the refund through Razorpay. For cash on delivery and manual UPI/bank transfers, the refund is recorded for your books and you send the money yourself.