How to choose and implement SaaS billing models with Stripe, LemonSqueezy, seats, credits, trials, webhooks, and customer portals.
Billing is product strategy expressed in code. If your starter only handles a single checkout link, you will rebuild it as soon as pricing changes.
This article breaks down the billing models a SaaS foundation should support.
The simplest model is one plan, one recurring price.
Use it when:
Implementation needs:
Most SaaS products need at least two paid tiers.
Typical differences:
Store planId in your subscription table and map it to a local plan catalog. Do not rely on provider price IDs as your product logic.
Seat billing is common for B2B SaaS. It aligns price with customer team size.
You need:
Screenshot placeholder: billing screen with current plan, active seats, and max seat cap.
Usage credits work well for AI, API calls, file processing, or metered workflows.
Track:
Credits should be visible to the customer before they become a billing surprise.
Add-ons let you expand revenue without forcing every customer into a higher tier.
Examples:
Your checkout and subscription state need to support multiple line items, not just one plan.
Trials are useful when activation requires product usage. They are less useful when setup is complex and a sales conversation is needed.
If you support trials, store:
Some developer products sell lifetime access or source code licenses. That model needs different state than recurring SaaS:
Do not mix one-time license logic into recurring subscription code without clear types.
Checkout success pages are not enough. Provider webhooks should update your database.
At minimum, handle:
Log webhook delivery and errors. Silent billing failures are expensive.
Your admin panel should show:
Support should not need direct database access to answer a billing question.
The best billing model is not the most sophisticated one. It is the one customers understand and your system can enforce.
Start with the simplest model that matches value, but choose a codebase that can add seats, credits, add-ons, and trials when your pricing evolves.