payments · tutorial · comparison
Stripe vs LemonSqueezy vs Dodo: Pick Wrong, Pay for a Year
Three rails compared on fees, tax handling, payouts, and lock-in — plus the one-interface setup that keeps switching free. Table inside.

Picking billing feels permanent
Every tutorial frames the choice as a marriage.
Weeks integrating webhooks, portal flows and edge cases. Then the fees sting, or the tax letters arrive, or payouts lag. Switching means redoing it all.
So the decision paralyzes. Stripe's ecosystem dazzles but leaves global tax to you. Merchant-of-record options remove paperwork but take margin and payout speed.
The choice stalls while checkout sits unbuilt.
It stops being scary when the integration is one interface and the choice is one setting.
Compare freely. Commit lightly. Switch cheaply.
The three rails side by side
| Axis | Stripe | LemonSqueezy | Dodo |
|---|---|---|---|
| What it is | A direct processor | A merchant of record | A merchant of record |
| Global tax (VAT, GST) | You handle it | They handle it | They handle it |
| Fee shape | Lower percentage, verify current | Higher, tax inside | Higher, coverage inside |
| Payout speed | Fast, rolling | Slower, verify current | Slower, verify current |
| Subscriptions | Best in class | Mature | Supported, verify depth |
| One-time and lifetime | Supported | Supported | A native sweet spot |
| Webhook surface | The full firehose | Curated order events | Curated payment events |
| India and regional methods | Add-ons vary | Varies | A strong suit |
| Switching cost here | A settings change | A settings change | A settings change |
Three things matter more than fee decimals.
Tax homework has no minimum. A single EU sale can trigger VAT obligations. A single Indian buyer can demand local methods. A merchant of record converts both from research projects into fee lines. Price your ignorance honestly.
Payout float is a cash-flow product. Rolling payouts fund next week's servers. Slower merchant-of-record payouts need a buffer month. Match payout shape to your burn.
Catalog shape picks the rail. Subscription-heavy with US buyers leans Stripe. Global lifetime deals lean Dodo. Global mixed catalogs lean LemonSqueezy. Optimize for your dominant shape. Keep the others wired for later.
Verify all pricing before you commit. Fee pages move, and this post's shapes outlast its numbers.
What to do
Compare on your numbers, not forum averages.
Take a realistic month. How many sales, at what price, with what share of buyers in the EU, India or elsewhere.
Stripe has the lowest headline fees but leaves VAT paperwork to you. LemonSqueezy and Dodo cost more and take the paperwork off you. Dodo adds regional methods.
The winner is the fees plus your paperwork hours, minus the global buyers you recover.
Integrate once against the interface. Never against the provider.
Checkout buttons, webhooks and the customer portal ask for the same four things: start a checkout, verify an event, record it once, open the portal. Each provider implements those four.
Adding another provider means writing one adapter, not rebuilding billing.
Switch by setting, rehearsed on staging first.
Change the active provider.
Run a test purchase.
Replay the webhook.
Confirm one order.
Keep both providers' signing secrets configured through the transition week, so late events from the old one still verify and dedupe.
One catalog, three providers, same books
| Check | Stripe | LemonSqueezy | Dodo |
|---|---|---|---|
| Test purchase drill | One order, deduped | One order, deduped | One order, deduped |
| A refund removes access | Expected | Expected | Expected |
| The paywall sees | The same access switch | The same access switch | The same access switch |
| Monthly review | Compare payouts to orders | Compare payouts to orders | Compare payouts to orders |
| Switch rehearsal | Run on staging | Run on staging | Run on staging |
The cost
Maintaining three adapters costs more than maintaining one. Budget some time per provider per year, plus drill time.
The kit does not reconcile payouts for you, so the monthly review is a manual habit.
Billing optionality compounds.
Fee changes become business mail.
Tax-season panics become setting changes.
New buyer geography never forces a rewrite.
Know this first
Three providers means three adapters to keep. The kit runs one at a time. It does not reconcile payouts.
Budget some time per provider.
Why BoringPush is the way to do this
Choose without fear.
Stripe, LemonSqueezy and Dodo all sit behind one interface. Compare on your own numbers. Switch with one setting.
Your checkout is written once.
FAQ
Which wins for a brand-new solo SaaS?
US-only subscriptions: Stripe, for ecosystem, payout speed and subscription depth. A global lifetime template: Dodo, for one-time-native checkout, regional methods and merchant-of-record taxes.
A global mixed catalog: LemonSqueezy, for merchant-of-record plus subscription maturity. If you do not know your buyers yet, start on Stripe, the fastest to a first dollar, and switch when data arrives.
How do fees compare at small volume?
Directionally, Stripe has the lowest headline percentage and the merchant-of-record options cost more with the tax service bundled in. Headline percentages lie by omission, since your VAT hours, accountant and payout float all cost money. Decide on paperwork tolerance and buyer coverage, not decimals, and verify the current fee pages.
Can I run two providers at once?
BoringPush runs one active provider at a time, selected by a setting. Splitting by product or region means building that routing yourself. A common split elsewhere is Stripe for US subscriptions and Dodo for global lifetime deals.
What is the hardest part of switching mid-flight?
Keeping both webhook secrets live for a week, migrating subscriptions (they cannot teleport, so grandfather them or migrate with the customer's consent), and comparing payouts across two dashboards for a month. One-time catalogs switch in an afternoon, and subscription books take a quarter.
Do I need an accountant with a merchant of record?
Yes, a smaller one. A merchant of record removes VAT and GST registration, not income tax, bookkeeping or entity questions. Budget a yearly accountant call regardless.
How often should I re-evaluate the choice?
Yearly, or when buyer geography shifts a lot or fee and tax rules change materially. A staging flip, a test purchase and a replay drill take an afternoon.
Keep reading
- Next.js Stripe Trap: The Retry That Double-Charges You — the Stripe adapter in full
- Next.js LemonSqueezy: Delete VAT Homework in 1 Switch — the MoR adapter in full
- Next.js + Dodo $199 Once: Beat $15/mo Forever — the lifetime adapter in full
+ all the boring stuff (analytics, auth, SQLite ↔ Supabase, full marketplace, webhooks)
Command from your phone.
Built so autonomous AI agents build what you want without breaking what's already paying you.
- Built-in analytics — cookie-free mode, $0 forever, no PostHog bill
- SQLite ↔ Supabase: one setting, same field names
- Full digital marketplace & feedback boards included
- 3 payment rails: Stripe, LemonSqueezy & Dodo Payments
- Agent fences: lint gate, read-only data access, auto-rollback
- Ship from your phone via SSH & WireGuard/Tailscale in under a minute
$199
Get BoringPushOne-time payment · Lifetime updates · Unlimited projects.
Keep reading


