Blogmark

You should separate your billing from entitlements

via jbranchaud@gmail.com

https://arnon.dk/why-you-should-separate-your-billing-from-entitlement/
System Design Domain Modeling

The last two products I worked on benefited greatly from adding a separate concept of entitlements so that access to features could be mediated with more flexibility than a billing_status == 'active' check.

So herein lies the problem: if you ever want to make any change to your company’s offering, or if you find yourself expanding to new territories, you really should have a separate mechanism to handle entitlements.

In blunt terms:

  1. If you will change what features are included in a plan, you should have a separate entitlement system.
  2. If you think you won’t want to force customers onto new plans, you should have a separate entitlement system.
  3. If some features are optional add-ons, you should have a separate entitlement system.
  4. If you ever hope to expand to new countries and markets, you should have a separate entitlement system.
  5. If you want to let customers experience features separately from their billing status, you guessed it… You should have a separate entitlement system!