Patterns for Subscription-Based Billing

There are only so many ways you can bill for things on a recurring basis before people start to look at you like you’re crazy. Ever seen somebody’s face the first time they see the EC2 pricing page? Even their free offering is complicated!

In preparation for writing some code to model subscription billing in any possible situation I’m attempting to reduce all of the common patterns to a single backend model. Here are the patterns I’ve found, are there any I missed?

The “Membership”

Sites that follow the “membership” pattern generally have exactly one method of extracting money from you. At every $interval they charge you $cost. A super-duper advanced version of this might have two membership terms: at 12*$interval they may charge you 10*$cost.

The “Upsell”

Sites that follow the “upsell” pattern have grouped sets of features and you get to choose which subset of them you wish to pay for. This is usually displayed in a chart with feature checkboxes. You only get $widget1 for $cost, but if you spend 2*$cost you also get $widget2 and $widget3. At 4*$cost we’ll even throw in a unicorn! (Also known as $widget4.)

The “Limited Supply”

Sometimes it is hard to distinguish the “limited supply” pattern from the “upsell” pattern. This mostly occurs in lower-level subscription plans where some advanced features may not be available. However, in general the primary differentiation of “limited supply” plans is based upon how much of each $widget you may use on a particular plan. For example, you may have $widget1 available on both plans, but you can only have $quantity of $widget1 on $plan1 where as you can have 2*$quantity of $widget1 on $plan2.

The “Build Your Own Plan”

The “build your own plan” pattern assigns a price to every feature. Each $widget checkbox in the feature comparison on the site’s chart is an additional $cost to you. If you only need $widget1, $widget3, and $widget4 you can get it for their individual $costs.

The “Addons”

Depending upon which plan you are currently on you can purchase a higher limit of $widget1 or an opportunity to play with the unicorns ($widget4) at an additional charge.

The “Pay-Per-Use”

Sites that follow the “pay-per-use” pattern are generally completely free to sign up for as they want to encourage you to use as many of their services as possible. At the end of the month they send you a bill based upon what you used. You can think of the pay-per-use model as each $widget that you use will run you $cost.

The “Graduated Pay-Per-Use”

This is merely a “pay-per-use” subscription model that has finished higher education. To help retain the heaviest users of their service and discourage you from building out your own version of their tool a site can give what amounts to volume discounts. For the first $quantity1 of $widget you pay $cost. For the next $quantity2 of $widget you pay $cost/2.

The “Utilization”

Commonly seen in datacenters, your utilization of their services is tracked. Then they do some fancy math and output a number that you have to pay. Commonly seen approaches are 95th percentile and average usage.


Parting Thoughts

You know, it sure would be nice if there were a WordPress for building SaaS websites…

One thought on “Patterns for Subscription-Based Billing”

Comments are closed.