Tutorial

How To Set Up Razorpay Subscriptions on a Webflow Site for Indian SaaS Founders in 2026

Written by
Pravin Kumar
Published on
May 23, 2026

Why I Recommend Razorpay Over Stripe for Indian SaaS Founders on Webflow in 2026

Two of my clients run SaaS products targeted at small Indian businesses. Both started on Stripe because every founder Twitter thread told them to. Both came back to me within six months asking why their conversion rate on India based traffic was under 2 percent. The answer was the same in both cases. They were missing UPI, missing native EMI, and forcing INR customers through a payment flow built for the US market.

Razorpay solves this. Their subscriptions product launched real recurring UPI mandates in late 2024, added native EMI support across HDFC, ICICI, and Axis in mid 2025, and shipped GST compliant invoicing as a default in March 2026. According to Razorpay's own Q1 2026 industry report, Indian SaaS sites using UPI for subscriptions see a 47 percent higher conversion rate than those using card only flows. That is a number too large to ignore.

In this post I walk through the exact Razorpay Subscriptions setup I now use on every Indian SaaS client running on Webflow. I cover the product setup, the Webflow embed, the webhook handling, the tax invoicing, and the gotchas I have hit in real client builds. By the end you will have a working subscription flow you can ship to Indian customers this week.

What Does Razorpay Subscriptions Actually Do and Why Does It Matter in 2026?

Razorpay Subscriptions is a hosted recurring billing product that lets you accept UPI mandates, card autopay, net banking standing instructions, and EMI on a single checkout flow. It handles plan management, dunning, retries, and GST invoicing in the dashboard. Webflow sites integrate via Razorpay's Subscription Buttons or via a custom embed using the Razorpay JavaScript SDK.

For Indian SaaS founders this matters because the Reserve Bank of India's e-mandate framework requires every recurring debit above 5,000 rupees to use a tokenised mandate. Razorpay handles that compliance natively. Stripe does not, which is why I see so many Stripe based Indian SaaS sites quietly losing repeat charges after the first month. The Reserve Bank of India's January 2026 circular tightened the rules further, raising the friction for non native processors. According to NPCI data from April 2026, UPI now accounts for 71 percent of all recurring digital payments in India by volume.

For Webflow specifically the integration is clean. Razorpay's Subscription Button can be embedded as raw HTML in a Webflow Code Embed, and the entire checkout opens in a modal that runs over your existing brand experience. No redirect, no broken flow.

How Do You Set Up Plans Inside Razorpay Before Touching Webflow?

Open the Razorpay dashboard, navigate to Subscriptions, and create a Plan for each pricing tier. Each plan needs a name, an amount in paise, a billing cycle (monthly, quarterly, yearly), and a billing period. For a 999 rupee monthly plan, the amount field is 99900 paise. The currency code is INR.

For a typical SaaS, I create three plans, one per pricing tier, plus an annual variant of each at a 17 percent discount. Razorpay automatically generates a plan ID like plan_OABCxyz123. You will paste this plan ID into the Webflow embed in the next step. The deeper conversation on pricing page structure for these tiers is something I covered in my earlier post on the Webflow plus Razorpay ecommerce setup for India.

How Do You Embed a Razorpay Subscription Button in Webflow?

Razorpay generates a Subscription Button HTML snippet for each plan. Open the plan, click "Create Button", customise the colour and text, and copy the snippet. The snippet is a script tag plus a form. Paste it into a Webflow Embed element placed inside the pricing card for that tier.

The Subscription Button approach is the fastest setup. For more control over the user experience, use the Razorpay JavaScript SDK with a custom button. The SDK approach lets you collect additional fields like a GST number or a company name before launching the checkout. Both methods are documented in Razorpay's official integration guide. I default to the Subscription Button for v1 builds and migrate to the SDK only if the client needs custom fields.

How Do You Handle the Post Payment Flow With Webhooks?

Razorpay fires a webhook to your endpoint on every subscription event: created, activated, charged, halted, cancelled. For a Webflow only site without a backend, you need a webhook receiver. My default is a Cloudflare Worker or a single Vercel serverless function that catches the webhook and writes the user record into Airtable or Supabase.

The minimum events to listen for are subscription.activated (grant access), subscription.charged (extend access), and subscription.halted (revoke access). Razorpay signs every webhook with your secret, and you must verify the signature using their official Node SDK. Skipping signature verification is the most common mistake I see in self built integrations, and it leaves your endpoint open to abuse.

What Does GST Invoicing Look Like on Razorpay Subscriptions in 2026?

Razorpay added native GST invoicing for Subscriptions in March 2026. When you enable it in the dashboard, every charged invoice is generated with the correct GSTIN, HSN code, and place of supply. The invoice is emailed to the customer automatically and stored against the subscription for download. Inc42's State of Indian SaaS 2026 report found that 64 percent of Indian SaaS founders spend over four hours per month on manual GST reconciliation when their billing provider does not handle invoicing natively.

For Indian SaaS this is the single feature that justifies switching off Stripe. Manual GST invoicing across dozens of customers is a tax season nightmare. Razorpay's native invoicing is compliant out of the box. If you want the broader context on Indian solo Webflow practice tax planning, my piece on Section 44ADA tax planning for Bengaluru Webflow partners covers the founder side of the equation.

How Do You Test the Whole Flow Before Going Live?

Razorpay ships a complete sandbox environment. Switch the dashboard toggle to Test Mode, regenerate your test API keys, and update the Subscription Button snippet with the test key. Use Razorpay's test cards and test UPI handles to simulate every flow. Each test handle covers a specific scenario: successful charge, insufficient funds, mandate failure, and cancellation.

Test on a real mobile device, not just a desktop emulator. UPI mandates on real Android devices behave subtly differently from the desktop simulator, especially around the consent dialog that opens inside the UPI app. I have caught two production bugs this year that only showed up on a real Pixel 8.

What Are the Most Common Mistakes I See on Webflow Plus Razorpay Builds?

Three mistakes recur. First, founders forget to enable webhook signature verification, which is a security risk and breaks audit logs. Second, they hardcode their live keys in the Webflow Embed, which exposes them in the page source. Always use the Subscription Button or load keys server side. Third, they skip the GST invoicing toggle and only discover the gap during tax filing.

A fourth pattern, less common but more painful, is mixing Stripe and Razorpay on the same site for different geographies without geolocation routing. Without geolocation the user sees both options and bounces. Pick one processor per region and route based on the visitor's IP using a small Cloudflare Worker.

How To Ship Your Razorpay Subscriptions Setup This Week

Open Razorpay, create your plans, generate Subscription Buttons, and paste them into Webflow Embed elements on your pricing page. Spin up a Cloudflare Worker to receive webhooks, write to Airtable for v1, verify the signature on every request. Enable GST invoicing in the dashboard. Run end to end tests on a real Android phone with a real UPI handle in test mode. Switch to live mode and run one real 1 rupee charge to confirm.

The total build time for a three plan SaaS is roughly four to six hours, most of it on the webhook plumbing. If you already have a Vercel project for your Webflow site, you can reuse that for the webhook endpoint and cut another hour. Once it works, document the runbook so the founder can adjust plans without calling you every time.

If you want help wiring up Razorpay Subscriptions on your Webflow site, or you want a review of an existing setup that is leaking charges, I am happy to walk through it. Let's chat.

Get your website crafted professionally

Let's create a stunning website that drive great results for your business

Contact

Get in Touch

This form help clarify important questions in advance.
Please be as precise as possible as it will save our time.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.