Guides
Stripe and SaaS billing, built to hold up
The Stripe demo is one Checkout call. Production billing is webhooks you trust, proration that reconciles, dunning that recovers cards, entitlements that gate features, and disputes you can actually win. These are the guides for that second part.
Billing is the one subsystem where a bug is a refund, an angry email, or a chargeback — so it earns more rigor than the rest of your app. The mistake I see most is treating Stripe as the source of truth for your product. It is not: Stripe owns the money movement, your database owns who-can-do-what. The webhook is the bridge between them, which is why verifying its signature and processing it idempotently is the foundation everything else sits on.
From there it is mostly about being honest with state. A subscription is not 'active' because Checkout returned — it is active because a verified webhook said so. A customer keeps access until the period they paid for ends, not the second a card fails. Usage-based billing only works if your meter is the authority and Stripe is told, not asked. Get those agreements right and the advanced pieces — Connect payouts, metered + Metronome, quota enforcement, Radar rules — become variations on the same disciplined pattern.
The guides

How to Integrate Stripe Into Your SaaS in 2026 (Subscriptions Done Right)
Integrate Stripe subscriptions the right way: webhook-as-source-of-truth, the full lifecycle (trials, dunning, proration), real 2026 fees, and the bugs to avoid.
Read →
Stripe vs Paddle vs Lemon Squeezy: Who Handles Your SaaS Sales Tax? (2026)
Stripe vs Paddle vs Lemon Squeezy in 2026: who is the Merchant of Record and files your sales tax/VAT? Real fees, the effective-cost gap, and a pick-by-stage verdict.
Read →
Stripe Webhook Signature Verification Failed? Every Cause and Fix (Node, Next.js, Python, 2026)
No signatures found matching the expected signature for payload? The cross-framework fix for Express, Next.js, Flask and FastAPI — plus idempotency and replay protection.
Read →
Out-of-Order Stripe Webhooks: Fixing the "Active but Incomplete" Subscription Bug
Stripe doesn't guarantee webhook order, so subscription.updated can land before created and freeze your DB at "incomplete." The robust fix: re-fetch, dedupe, guard on time.
Read →
Usage-Based Billing for AI SaaS with Stripe: Meters, Tokens, and Your Margins
Flat pricing quietly kills AI margins. Here's how to wire usage-based billing with Stripe Billing Meters: meter events, per-unit/tiered prices, idempotency and margin guardrails.
Read →
Stripe Bought Metronome: Usage-Based Billing Goes Native (and What It Does to Your CFDI)
Stripe completed its Metronome acquisition Jan 14 2026. Usage-based billing is now native in the Stripe Dashboard. Here is what shipped — and the CFDI reconciliation nobody mentions.
Read →
SaaS Entitlements & Usage Limits: Turn a Stripe Plan Into Enforced Features and Quotas (2026)
A code-first, vendor-neutral guide to the entitlements layer: feature gates with Stripe Entitlements, usage quotas with meters and atomic counters, plus the middleware.
Read →
Marketplace Payments with Stripe Connect: Account Types, Charges & Payouts (2026)
Build a marketplace that pays out sellers with Stripe Connect: pick Standard/Express/Custom, onboard sellers (KYC), choose direct vs destination charges, and take your cut.
Read →
Stripe Connect in Production: Onboarding, KYC, Payouts & Reserves (2026)
Run Stripe Connect for real: onboard sellers with Account Links, clear KYC and capabilities, configure payout schedules and instant payouts—and survive reserves.
Read →
Failed Payments and Dunning: Recover the Subscription Revenue You're Quietly Losing (Stripe, 2026)
A full Stripe playbook for involuntary churn: Smart Retries, dunning emails, Card Account Updater, the self-serve portal, and the past_due state machine. With code.
Read →
Stripe Disputes, Chargebacks & Fraud: Fight Them and Prevent Them with Radar (2026)
How Stripe disputes and chargebacks really work in 2026: the lifecycle, the fee math, fighting with evidence off charge.dispute.created, and preventing with Radar and 3DS.
Read →
SaaS Billing Metrics That Actually Run the Business: MRR, Churn, LTV & NRR (and How to Pull Them From Stripe) (2026)
The SaaS metrics that actually run a business: MRR and its components, logo vs revenue churn, LTV and NRR — plus how to pull them from Stripe without fooling yourself.
Read →
Better Auth vs Clerk vs Supabase Auth for a Mexican SaaS (2026): The Honest Decision
A decisive 2026 auth comparison through a Mexican/LATAM-SaaS lens: data residency, cost at 100k MAU, multi-tenancy, and who owns breach response.
Read →
Work with me on this
FAQ
- How should I sync Stripe subscriptions with my database?
- Treat Stripe as the billing authority and your database as the access authority, connected by verified webhooks. On each event (checkout.session.completed, customer.subscription.updated, invoice.paid/failed) you upsert the plan and status into your own tables, idempotently by event id. Your app reads access from your tables — never by calling Stripe on the request path.
- Why is webhook signature verification non-negotiable?
- Your webhook endpoint is a public URL that grants paid access. Without verifying the Stripe-Signature header, anyone who finds it can POST a fake "subscription active" event and unlock your product for free. Verify the signature, then make the handler idempotent so Stripe's retries do not double-apply.
- Stripe, Paddle or Lemon Squeezy — which do I need?
- Stripe gives you the most control and the lowest fees but leaves you to handle sales tax/VAT yourself. Paddle and Lemon Squeezy act as merchant of record, handling global tax for a higher cut. If you sell worldwide and do not want to own tax compliance, an MoR is worth the percentage; if you want control and your tax situation is simple, Stripe wins.