Setting Up Recurring Billing for a SaaS Business
Recurring revenue is the whole point of building SaaS, but the billing side is where most early-stage products bleed money. Failed cards go un-retried, prorated upgrades get mis-calculated, annual customers churn silently when their renewal fails, and the founder ends up spending half a Sunday a month reconciling MRR. A clean recurring billing setup gets all of this right from day one. This guide walks through the design choices that matter — plans, trials, proration policy, dunning, and the customer-facing surface — so you can build something that scales without rebuilding it at $50k MRR.
Plan structure: keep it simple at first
The most common early-stage mistake is launching with too many plans. Three plans (Starter / Growth / Scale, or Free / Pro / Business) covers 95% of pricing scenarios. Each plan should have a clear differentiating axis (seats, usage, features) and a 5-10x gap in price between adjacent tiers — too close together and customers won't bother upgrading; too far apart and you lose mid-market deals. Annual plans should be priced at 10-20% below the monthly equivalent (12 months ÷ 10-10.8) — this is the standard SaaS prepayment incentive and customers expect it.
Trials: free, card-required, or none?
There's no universal right answer. Free trial (no card) maximizes signups but conversion rates run 10-20%. Card-required trial cuts signups by 50% but conversion runs 50-70%. Reverse trial (full access on day one, automatic downgrade after N days) gets the highest engaged conversion. The right choice depends on your activation curve — if users typically see value in the first 24 hours, card-required is fine; if it takes a week of usage to demonstrate value, free trial wins. Make the trial length match your typical activation window plus a small buffer (usually 14 days).
Proration: the rule that surprises customers
When a customer upgrades mid-cycle (e.g. they were on Starter at $29/mo and switch to Growth at $99/mo on day 15 of a 30-day cycle), Stripe by default prorates: it charges them the difference for the remaining days. The default math: ($99 - $29) × (15/30) = $35.00 charged immediately, and the next renewal is at the full new plan rate. This is industry-standard but can confuse customers who expected to be billed the full new rate immediately. Make sure the upgrade UI shows the prorated amount before they click confirm.
- Upgrades: prorate immediately, charge the difference, next cycle at full new rate
- Downgrades: most SaaS schedule the downgrade for the end of the current cycle (no refund for unused days)
- Cancellations: schedule for end of cycle, but offer immediate cancel for support cases
- Annual to monthly: usually schedule at the end of the annual term — no refund of unused months
Dunning: don't lose money to expired cards
Roughly 5-15% of card charges on file fail on any given month — expired cards, hold for fraud, insufficient funds. Without a dunning sequence (automated retry + email), you'll silently lose 1-3% of MRR every month to involuntary churn. A solid dunning sequence:
- Day 0: card declined → retry in 3 days, email customer with payment-update link
- Day 3: retry → if fails, retry in 4 days, second email
- Day 7: retry → if fails, retry in 7 days, third email (clearer urgency)
- Day 14-21: if still failing, downgrade or suspend the account
- Win-back email 30 days after suspension
What to expose to customers
Self-service billing reduces support load dramatically. The customer-facing surface should include: current plan, next billing date and amount, payment method on file (with update link), invoice history (PDF download), and an upgrade/downgrade/cancel flow. Stripe's Customer Portal is the fastest way to get all of this in production. Once you're past $20-30k MRR, most SaaS migrate to a custom billing page to control branding and to add usage details that the generic portal can't show.
Frequently asked questions
Should I use Stripe Subscriptions or build my own?
Always start with Stripe Subscriptions. The build-your-own option only makes sense at scale (multi-currency, complex contract billing, regulated industries). Stripe handles the heavy lifting — proration, dunning, tax, invoices — out of the box.
How do I handle a customer who wants to pause their subscription?
Stripe supports subscription pause via the pause_collection field. Set a resume_at date; during pause, no invoices are generated. Most SaaS limit pauses to 3 months and remove the feature from self-service (require contacting support) to discourage abuse.
What's the right metric for involuntary churn?
Involuntary churn = subscriptions canceled due to payment failure ÷ total active subscriptions, measured monthly. A healthy SaaS keeps this under 1% per month. If you're above 2%, your dunning sequence is the first thing to fix.
Should I offer monthly or only annual billing?
Offer both. Monthly attracts more signups and lower commitment; annual locks in revenue and reduces churn. About 30-40% of SaaS customers will pick annual if it's available with a discount. Pure-annual pricing limits your top-of-funnel.
How do I handle taxes on recurring invoices?
If you have nexus in US states that tax SaaS, you need to compute and collect sales tax on each renewal, not just the first invoice. Stripe Tax handles this automatically, as does any sales-tax automation tool integrated with your billing system.
What about ACH for B2B SaaS?
ACH is great for higher-ticket B2B subscriptions ($500+/month). Failure rates are lower than cards, fees are flat ($0.80 per transaction vs 2.9%+$0.30), but the auth/verify flow takes 2-3 business days and ACH can be reversed for up to 60 days. Most B2B SaaS offer both: card for small accounts, ACH for larger ones.

