Case Study: Building a SaaS for India — Razorpay, WhatsApp, and the Decisions That Mattered
The story behind Maalig AI: what week one got wrong, why Razorpay over Stripe, how WhatsApp Cloud API actually behaves, and the pricing decisions that shaped the rest of the product.
Case Study: Building a SaaS for India
Most SaaS playbooks assume a US customer with a credit card and a Gmail address. India is not that customer.
This is what I changed about a generic NestJS-and-Mongo build to ship a product that actually sells here.
The Customer Is on WhatsApp
WhatsApp is the channel. Not email. Not the web app. WhatsApp.
Salons, clinics, D2C sellers — the businesses I'm building for — already do their entire customer relationship in WhatsApp. The job is not to move them off WhatsApp. The job is to handle the volume they cannot.
So WhatsApp Cloud API was the first integration, not the third. Telegram came second. A web chat embed exists, but it's the fallback channel, not the lead channel.
Razorpay Over Stripe — But Both Are Supported
Stripe works for international customers. Razorpay works for Indian customers. The platform supports both, with one shared subscription model behind them.
What I learned the hard way: Razorpay webhooks fire payment.captured more than once under retry. Idempotency is not optional. The fix is a conditional update keyed on lastRazorpayPaymentId:
await User.updateOne(
{ _id: userId, lastRazorpayPaymentId: { $ne: paymentId } },
{ $set: { plan, lastRazorpayPaymentId: paymentId } }
)
If the update modified zero documents, the payment was already processed. Return 200. Move on.
This pattern saved a customer from being charged for an upgrade twice in week three.
Pricing in INR, Not Converted
Don't convert dollars. Price in INR from day one.
Current tiers:
- Free: ₹0 — 100 AI replies/month, 1 channel
- Founding: ₹499/month — 1,000 AI replies, all channels (first 10 users only)
- Growth: ₹999/month — 5,000 AI replies, all channels
- Pro: ₹2,499/month — 100,000 AI replies, webhook delivery, priority support
The founding-user tier is a discovery mechanism. I lose money on it. I learn what the next 10 features need to be in exchange.
What I Got Wrong in Week One
- Built auth before the channel integration. Nobody cared about my login screen until I could prove the AI replied to a real message. Should have shipped the WhatsApp loop first.
- Localized the UI. Wasted three days adding language toggles. Customers using a SaaS dashboard in India read English fine. The customer-facing AI replies are what need to be multi-language — not the admin UI.
- Made the dashboard pretty before it was useful. The Live Events feed was the first thing customers actually opened. I built it in week four. It should have been week one.
What 2026 Looks Like
The product is live. UPI as a one-tap payment method is going in next. The platform tier (₹2,499) needs webhook signature verification on the outbound side — customers asking for it before I'd built it is a good signal.
India SaaS works. The playbook is just different.