1 · Connect your Razorpay account
Formpey never holds your money. Payments move directly from your respondent into your own Razorpay account, which means you have to give Formpey permission to create orders on it.
In Razorpay, open Settings → API Keys and generate a key pair. Paste both halves into your Formpey settings. We check them against Razorpay before saving, so a mistyped key shows up there rather than when somebody is trying to pay you.
Razorpay shows the Key Secret once, at creation. Formpey encrypts it and will never display it back to you — if you lose it, generate a new pair rather than looking for a second copy.
2 · Add the webhook to your Razorpay account
This is the step that gets skipped, and skipping it is the most common reason a payment looks stuck.
Connecting keys lets Formpey charge. A webhook is how Razorpay tells Formpey the charge succeeded — without one, nothing knows to mark the response paid or send the receipt at the moment it happens.
Your webhook URL and signing secret are on your settings page, with a copy button beside each. They are unique to your account: the secret is what proves a payment notification really came from your Razorpay account and not from somebody else’s.
In Razorpay, open Account & Settings → Webhooks → Add New Webhook and fill in:
- Webhook URL — copy it from your settings page.
- Secret — copy it from your settings page.
- Active Events — tick
payment.capturedandpayment.failed. Nothing else.
Leave order.paid unticked in particular. It arrives alongside payment.captured for the same payment and carries less information, so it is redundant rather than useful. Any other event you tick is acknowledged and ignored — harmless, just noise in your Razorpay logs.
If you skip this entirely, payments are still recorded — Formpey checks Razorpay directly for anything that has been pending too long, roughly every fifteen minutes. The cost is that receipts arrive that late, and responses read “pending” in your table until the check catches up. On a workshop where people pay at the door and expect a confirmation, that is the difference between working and appearing broken.
3 · Test mode and live mode
Razorpay issues two independent key pairs. Test keys start rzp_test_, live keys start rzp_live_, and Formpey shows a Test mode badge in settings when the connected pair is a test one.
What test keys do: the entire flow, honestly. A respondent opens your form, the amount is calculated, Razorpay Checkout opens, a test card or test UPI ID completes it, the webhook fires, the response is marked paid, and the receipt sends. Everything you would want to rehearse, you can rehearse.
What they do not do: move money. No real UPI app will pay a test order, nothing settles to your bank, and nothing appears in your live Razorpay dashboard. A test payment is not a sale, and a form left on test keys quietly takes no money from anyone.
Razorpay keeps webhooks separate per mode. A webhook added while your dashboard is in test mode does not exist in live mode. When you switch to live keys, add the webhook again on the live side — same URL, same secret.
Switching is just replacing the keys in your settings. Forms you have already published keep working; the next payment simply goes through the new pair.
4 · Free and Pro
Both plans take payments, and both take 0% commission. The only fee on a transaction is Razorpay’s own, charged to you directly at whatever rate you have agreed with them. Pro does not buy a better rate, because there is no rate for us to improve.
What actually differs:
- The badge. Free forms carry a small “Made with Formpey” note at the bottom of the form and in the receipt email. Pro removes it. This is the main thing you are paying for.
- Redirect after submit. Pro can send respondents to your own page — an order confirmation, a WhatsApp group, a calendar link — instead of Formpey’s thank-you screen.
- File uploads. 10 MB per file on Free, 50 MB on Pro.
- A registration window. Pro can set an opening time, a closing time, or both. Before it opens and after it closes, anyone with the link reads a notice instead of the questions — and a form that closes while somebody has it open refuses that submission rather than taking it late. Times are set in your own timezone; respondents see them in IST.
- Your own link. Pro can replace the generated
/f/wjmcf3ngwith something readable —/f/diwali-mela-2026— which is the difference between a link you can print and one you can only forward. Choose it before you publish: once a form is live its link is permanent, because by then it may be on a poster or inside a QR code, and a changed link leaves every printed copy scanning cleanly into a 404. A link you already have stays yours if your plan lapses. - Reminders for unfinished payments. Pro can email somebody who filled in your form and never completed the payment — once, from the responses table, by hand. It is deliberately not automatic: a reminder that fires while somebody is still typing their UPI PIN is worse than no reminder, so it only becomes available a day later, when the response is marked abandoned. One per response, ever, and the respondent can stop them in one click.
- Your own wording when a form is shut. Pro replaces the second line of that notice — where to go instead, an address to email — for all three cases: closed by you, outside the window, or full.
Capping responses is on both plans.“Stop after this many responses” is exact rather than approximate, including when fifty people press submit in the same second, and that is not something Pro buys — a number that is only trustworthy if you pay is not a number worth showing anyone. On a form that takes payment, a seat is held from the moment someone submits until their payment either lands or is given up on, so a checkout someone walked away from returns its seat rather than holding it forever.
The report link stays on both plans. It shares a line with the badge, so removing the badge does not remove it: a paid plan that quietly bought immunity from abuse reports would be a bad thing for us to have built.
Pro is ₹499 a month, or ₹3,499 a year, billed by UPI — details on the pricing page. Unlimited forms, unlimited responses and every question type are on both plans, and always were.
If a payment does not settle
A response sitting at pending with an amount against it means Formpey created the order and has not been told what happened to it. Work down this list:
- Give it fifteen minutes. If the webhook is missing or a delivery was lost, the periodic check asks Razorpay directly and settles it. Most stuck rows clear themselves.
- Check the payment in your Razorpay dashboard. If it is not there, the respondent never completed it — abandoning at the UPI PIN screen is common and often produces no failure notification at all.
- Check your webhook. Razorpay logs every delivery attempt and its response. A 404 means the URL is wrong; a 400 means the secret does not match what is on your settings page.
- Still wrong? Mail us the order ID from your Razorpay dashboard — never a screenshot of your keys — and we will look at it from our side.
Formpey is not the seller and cannot issue a refund on your behalf; the money is in your Razorpay account, so refunds go out from there. That is set out on the refunds page.
Still stuck
Get in touch. A real person reads it.