SaaS Billing and Subscription Solutions

Challenges and General Rules

The problem seems easy at first when you have just one plan at $100/month, you’ll quickly have many more plans, all kind of discounts and special deals, custom “enterprise” plans for your larger customers and design partners, while having to grandfather your existing customer base and also allow easy upgrades/downgrades etc. A lot of SaaS pricing these days is built around tiers with certain usage limits on individual features, so you’ll need to built that as well. And if you are working on an application with a fixed underlying cost for certain features (like genai tokens), you’ll also have to implement metering. None of this is really part of your core product and yet most SaaS startups spent a lot of time building and maintaining (billing is hard!) the same functionality over and over again.

Keep it simple in the beginning just set up subscriptions/billing and a few basic plans to get users signing up and working out the flow if this your first time.

Use a MoR to sleep in peace. Also having a single revenue invoice for accounting makes things much easier. Otherwise, You may have to drop everything to get compliant with other countries and countless local jurisdictions you’ve made sales in.

Talk with an accountant or lawyer for your specifics regarding the state. They differ wildly so you want to make sure you are prepped and handling that from the beginning. Any good accountant should take about an hour to break this all down for you. Worth the $$.

Solutions

If you can code and here are some of the framework you can use:

SaaS in a box billing/subscription tools

an example of using LemonSqueezy

LemonSqueezy allows you to send custom data with a purchase, so I send the user token with the payment link users click on from inside my app when they make the purchase. You can then get this same custom data back in a webhook, which you can use to associate the purchase with a specific user account once it has been made along with the LemonSqueezy subscriptionId. It is a relatively minimal amount of work to achieve this, and LemonSqueezy has examples for how to verify their webhook data that you can just copy and paste into your own. I am sure other payment providers are similar as well. Once that data is in my local database, it’s a simple query lookup to see if a user has paid or not (be sure to also handle cases for subscription cancellation and expiration though - also webhook events!).

Outseta

https://www.outseta.com/

It handles everything: from authentication to help desk, to transactional emails, marketing emails to sales funnel, subscription management. Everything is basically no code so you don’t end up needing to build anything yourself that isn’t central to your value prop.

Outseta is nice, real problem solver, but I have some issues.