SaaS Billing System Design Guide: Subscriptions, Pricing, and Payment Integration
SaaS product's core business model is subscription billing. A well-designed billing system ensures recurring revenue while improving user experience and retention.
1. Pricing Model Design
1.1 Common Pricing Models
| Model | Example | Best For |
|---|---|---|
| Fixed | $19/month | Single-purpose tools |
| Tiered | $19/$49/$99 | Feature-layered products |
| Usage-based | $0.01/API call | API services, cloud |
| Per-seat | $10/user/month | Team collaboration tools |
| Hybrid | Base $19 + usage | Products with variable usage |
1.2 Pricing Best Practices
Tier Design:
Free → Limited features, attract users
Pro → Core features complete, most users
Business → Advanced features + team
Enterprise → Custom solutions
Key principles: Value anchoring, clear feature progression, meaningful free tier
2. Subscription Cycle Management
2.1 Billing Cycle Options
| Cycle | User Preference | Business Advantage |
|---|---|---|
| Monthly | Flexible, low barrier | More users |
| Yearly | 20-30% cheaper | Stable cash flow, lower churn |
| Quarterly | Compromise | Better cash flow than monthly |
| Usage-based | Pay for what you use | Higher revenue from heavy users |
2.2 Proration on Mid-Cycle Upgrades and Downgrades
Upgrading or downgrading mid-cycle is where subscription systems make the most accounting mistakes. Take a Pro user on $19/month who upgrades to Business at $49/month on day 10 of a 30-day month; two common approaches:
| Approach | Calculation | Result |
|---|---|---|
| Simple top-up (difference × remaining days) | ($49-$19) × 20/30 | Charge $20 |
| Refund used days + full prorated new plan | $19×(1-10/30) + $49×(20/30) | About $45.33 |
Most billing platforms (Stripe included) default to the "prorated top-up" approach: from the moment of upgrade you are billed at the new rate, with the remaining period converted by day, so the customer's invoice stays intuitive. The key principle: upgrades take effect immediately with prorated top-up; downgrades take effect next cycle — the former improves experience, the latter prevents customers from strategically downgrading right after paying. When implementing, normalize the proration factor to days rather than calendar months, or an upgrade near month-end will trigger "overcharged by a day" disputes.
3. Payment Integration
3.1 Platform Selection
| Need | Recommendation |
|---|---|
| Simple subscriptions, global | Stripe Billing |
| Tax compliance needed | Paddle / LemonSqueezy |
| China domestic | Alipay + WeChat Pay |
| Complex billing logic | Chargebee / Recurly |
3.2 Stripe Billing Setup
const product = await stripe.products.create({
name: 'Pro Plan',
description: 'For individuals and small teams',
});
const monthlyPrice = await stripe.prices.create({
product: product.id,
unit_amount: 1900,
currency: 'usd',
recurring: { interval: 'month' },
});
3.3 Customer Portal
Stripe provides a hosted customer portal for subscription management:
const session = await stripe.billingPortal.sessions.create({
customer: customerId,
return_url: 'https://yourdomain.com/account',
});
3.4 Tax and Compliance: Don't Let VAT Eat Your Margin
Cross-border subscriptions often overlook taxes. If you charge value-added tax (VAT) to European customers or sales tax in some US states, yet hard-code the rate as zero, the back-tax bill will come with interest and penalties. Choosing a "merchant of record" provider such as Paddle or LemonSqueezy means they fold tax into the price and remit it on your behalf — you simply split revenue at a fixed rate. If you integrate Stripe yourself, enable the Tax API and configure rate tables per country or region. And an invoice is not just a financial document; enterprise customers need it for reimbursement, so make sure it carries the customer's legal entity name and tax ID.
4. Key Metrics
| Metric | Meaning | Healthy Value |
|---|---|---|
| MRR | Monthly recurring revenue | Growing |
| Churn Rate | Cancellation rate | < 5%/month |
| LTV | Customer lifetime value | LTV > 3x CAC |
| CAC | Customer acquisition cost | CAC < 1/3 LTV |
| Net Revenue Retention | Revenue change from existing | > 100% |
5. Upgrade/Downgrade Handling
5.1 Upgrade Strategy
- Immediate upgrade (prorated billing) - better UX
- Next cycle upgrade - simpler billing
5.2 Downgrade Strategy
- Takes effect next cycle (keep current features until cycle end)
6. Dunning Process
Day 1: Payment fails → Email notification
Day 3: Auto retry → Fail → Reminder
Day 7: Auto retry → Fail → Warning
Day 14: Final retry → Fail → Freeze account
Day 30: Mark as canceled, clean up data
7. Summary
Balance UX and business needs. Start simple, increase complexity as you grow. For most SaaS startups, Stripe Billing + Customer Portal is the fastest way to launch.
Reference: Stripe Billing documentation: https://docs.stripe.com/billing; Stripe subscription lifecycle guide: https://docs.stripe.com/billing/subscriptions/overview