DEV Community

Gulshan Yadav
Gulshan Yadav

Posted on • Originally published at misar.blog

Stripe vs Razorpay vs Cashfree for Flutter in India

Three payment gateways, one Flutter app, real money moved. Which one should an Indian app actually integrate in 2026?

In 2021 I integrated Stripe for a SaaS product whose users were mostly in the US. It was smooth, the SDK was mature, and I did not think twice. A year later, the same company launched an Indian consumer app, and the CTO asked me to "just add Razorpay." I learned the hard way that a payment gateway is not a drop-in component: the answer depends on where your users pay, how they pay, and who your merchant account is with. What works for a US subscription service is a bad fit for a UPI-first Indian consumer base.

That experience cost me two failed integrations and one painful migration before I settled on a decision process. This article is that process applied to the three gateways every Flutter developer in India actually evaluates: Stripe, Razorpay, and Cashfree. I am going to score them on the criteria that matter when real money moves, then give you a decision rule you can apply to your own app. I have shipped all three, and I am going to be honest about where each one hurts.

The Criteria That Actually Matter

Marketing pages all sound the same. These are the criteria I use, in the order I weight them:

  1. India payment methods (UPI, cards, net banking). Does it cover the methods Indian users actually pay with, and is UPI first-class or bolted on?
  2. Flutter SDK quality. Is the official Flutter plugin maintained, null-safe, and well documented? How much of the flow does it handle?
  3. Pricing and settlement. Domestic MDR, international fees, settlement time, and whether pricing is transparent.
  4. Onboarding and compliance. How hard is it to get a merchant account? Do you need a registered business, GST, and KYC, and how long does approval take?
  5. Verification and webhooks. Is server-side verification straightforward? Are webhooks reliable?
  6. International support. Do you need to take payments from outside India at all? This is the criterion that flips most recommendations.

The Criteria Table

Criterion Stripe Razorpay Cashfree
India methods (UPI/cards/NB) UPI added; weaker NB Excellent, UPI-first Excellent, UPI-first
Flutter SDK Mature, first-party Mature, first-party Mature, first-party
India pricing (MDR) Higher for domestic Competitive Competitive, volume-based
Settlement 2 days typical T+1 / T+2 T+1, fast for UPI
Merchant onboarding Business + banking Business + GST + KYC Business + GST + KYC
Verification API Solid Solid Solid
International cards Native Enabled, slower Enabled, slower
Best for Global SaaS, marketplaces Indian consumer apps Volume / high-throughput India

No gateway wins every row, and that is the point of a criteria table — the correct choice is a function of your user base, not of the gateway with the best ads.

Stripe — Score: 8/10, But Only for the Right Users

India methods: 6/10. Stripe's core is cards and international payments. It does support UPI in India, and the experience has improved since 2023, but it is not the product's center of gravity the way it is for Razorpay. If your entire user base is Indian and UPI is 70% of their payment behavior, Stripe is fighting the current.

Flutter SDK: 9/10. flutter_stripe is first-party, null-safe, and among the best-maintained payment SDKs I have used. The PaymentSheet handles most of the flow, and the docs are genuinely good. This is the part where Stripe is the benchmark everyone else is measured against.

Pricing: 6/10 for India. Stripe's domestic MDR in India is higher than Razorpay's or Cashfree's on equivalent volumes. If your average order value is low and UPI-heavy, the fee difference compounds into real money at scale — I have watched clients pay noticeably more per transaction than they would have with an India-native gateway.

The honest verdict: Stripe wins when your business is global, when a large share of revenue is international cards, or when you are building a marketplace that needs Stripe Connect's payouts infrastructure, which is dramatically better than anything the Indian gateways offer. If you take meaningful revenue from US/EU customers, Stripe is not just competitive — it is the answer.

Razorpay — Score: 8.5/10, the Default for Indian Consumer Apps

India methods: 9/10. Razorpay was built for the Indian market and it shows. UPI, cards, net banking, wallets, and even EMI are first-class, and the UPI flow — the app-switching dance that is the hardest part of Indian payments to build well — is handled for you. For a consumer app in India, this is the lowest-friction coverage.

Flutter SDK: 8/10. razorpay_flutter is maintained and null-safe, with a solid base of production users. The checkout UI is the SDK's main trade-off: it is Razorpay's own UI, which means your app gets their look and you customize via theme colors rather than full control. For most products that is fine; for a heavily branded checkout it can be a constraint.

Pricing: 8/10. Competitive domestic MDR, and Razorpay has historically been aggressive on pricing for new businesses. Settlement is T+1 to T+2, which is standard. The caveat: pricing tiers and volume-based negotiations are the real story, so quote for your actual volume rather than the published rate card.

The honest verdict: Razorpay is the correct default for a consumer app whose users are primarily in India and who pay primarily with UPI. Its onboarding friction is real — you need a registered business, GST, and KYC, and approval takes days rather than hours — but for a real Indian business you need that anyway. The most common Razorpay complaint I hear from developers is not the gateway; it is integrations that put the secret key in the app, which is a code problem, not a Razorpay problem.

Cashfree — Score: 7.5/10, the Volume and Settlement Pick

India methods: 9/10. Cashfree is on par with Razorpay on Indian coverage — UPI, cards, net banking, and strong support for UPI Autopay for subscriptions and recurring payments. For recurring UPI, Cashfree is arguably the strongest of the three, and that matters if you are building a subscription product for Indian users.

Flutter SDK: 7.5/10. cashfree_pg is maintained and works, and the drop-in checkout handles the full flow. It is solid but a step behind Stripe and Razorpay on documentation polish and community mindshare — there are fewer tutorials, fewer Stack Overflow answers, and you will occasionally be reading the docs more carefully than you would like.

Pricing: 8.5/10. Cashfree is the most aggressive of the three on volume pricing and is known for fast settlements, sometimes T+1 or faster on UPI. If your business is high-throughput with thin margins, the difference between Cashfree and Stripe's India pricing on your actual volume is the single most material number in this article.

The honest verdict: Cashfree is the pick when volume and settlement speed are your dominant constraints, or when recurring UPI (Autopay) is core to your product. It is not a bad choice for a consumer app, but Razorpay edges it on SDK polish and documentation, and Stripe edges both on international reach.

The Real-World Decision Rules

Here are the rules I now apply, in order, when a client asks "which gateway should I use?":

1. Are your users mostly outside India? Use Stripe. International cards, US/EU subscriptions, marketplaces needing Connect. Nothing else comes close. Do not let a domestic-MDR comparison talk you out of the gateway that actually captures your revenue.

2. Are your users mostly in India and paying with UPI? Use Razorpay, unless volume/autopay pushes you to Cashfree. For a standard Indian consumer app, Razorpay is the lowest total friction: the best UPI coverage, a maintained SDK, and a large community. If your product is high-volume, margin-sensitive, or subscription-first, run the numbers against Cashfree before you commit — on millions of transactions a month, a fraction of a percent MDR difference is a person's salary.

3. Do you need both Indian and international payments? Run a dual-gateway setup. This is the honest answer the marketing pages avoid: you can have Stripe for international cards and Razorpay or Cashfree for domestic UPI. It is more code — two SDKs, two webhook handlers, one reconciliation ledger — and I have shipped exactly this. It sounds like twice the work, and it is, but it is less work than forcing one gateway to be mediocre at both.

4. Whatever you pick, the integration pattern is identical and non-negotiable: create the order on your backend, open the SDK checkout with the order reference, verify the payment server-side against the gateway's API, and reconcile with webhooks. That pattern does not change between gateways, which is precisely why the switch cost stays manageable if you change your mind later.

A Worked Example: Scoring Your Own Situation

To make the table actionable, let me walk through the two most common Flutter projects in India and what the scoring says for each.

A consumer app selling a subscription at ₹149/month to Indian users. UPI is the dominant payment method, average order value is low, and recurring revenue is the model. Scoring: Razorpay covers UPI and UPI Autopay well, Cashfree covers Autopay arguably better, Stripe is weak on both for India. Onboarding is the same KYC path for the India-native gateways. Settlement T+1 vs T+2 is meaningful but not decisive at this size. The verdict: Razorpay as the primary, with Cashfree as a serious runner-up if you want to benchmark Autopay retention before committing. Stripe is not in the conversation for this app.

A SaaS tool selling to Indian startups and US companies at $29/month. Now the scoring flips. A large share of revenue comes as international cards, where Stripe is native and the others are slower and pricier. Indian users still want UPI. The verdict: dual-gateway — Stripe for international cards, Razorpay or Cashfree for domestic UPI — with a shared reconciliation ledger. This is the scenario where forcing a single gateway costs you both customers and margin.

An e-commerce store with thin margins moving 200,000 orders a month. Volume is the dominant constraint, so MDR is the number that matters. Cashfree's aggressive volume pricing and fast UPI settlement make it the front-runner, and Razorpay is the benchmark to negotiate against. The verdict: run a side-by-side cost model on your real transaction mix before choosing — at this volume, the difference between gateways is measured in lakhs per month, and that is real money.

The point of the worked examples: the same three gateways produce three different winners depending on three inputs — where your users are, what they pay with, and how many transactions you move. That is why "best gateway" is a meaningless question without your numbers attached to it.

What a Migration Actually Costs

The last question people ask before choosing is the one that makes the choice feel permanent: what happens if I switch later? The honest answer is that the cost is mostly in the reconciliation ledger, not the code. Because the integration pattern is identical across all three — backend order creation, SDK checkout, server-side verification, webhooks — the Flutter code for all three is structurally the same. The parts that differ are SDK specifics, and those are a day or two of work per platform.

The part that is genuinely expensive is historical reconciliation: matching past payments to orders across two gateways while a third is live, handling refunds from the old provider, and keeping a single ledger accurate. Do the ledger well from day one — store gateway name, gateway order ID, and payment ID on every order — and a later migration stays a coding exercise instead of a bookkeeping crisis.

The Numbers That Should Drive Your Choice

Settlement speed matters more than most tutorials admit. If you are a cash-flow-sensitive startup, a gateway that settles T+1 instead of T+2 gives you a working day of capital that costs you nothing. MDR matters at volume, not at the invoice you get in month one. Onboarding friction matters once, when you start — and it is the same KYC gauntlet at Razorpay and Cashfree, so it rarely breaks a tie.

The decision rule, compressed: Stripe if global, Razorpay if Indian consumer UPI-first, Cashfree if high-volume or recurring-UPI, and a dual setup if you genuinely serve both worlds. Score your own situation against that table with your real numbers — average order value, monthly transaction count, percentage of UPI, percentage of international cards — and the choice stops being a debate.

I have integrated all three into Flutter apps with real money flowing through them. The SDK quality difference is real but minor; the coverage difference for your specific user base is the difference between a payment flow your users trust and one they abandon. Measure your users, not the marketing.


*Gulshan Yad

Top comments (0)