Billing Engines Don't Solve Pricing Problems
tier.run
tier.run
There is surprisingly little in the OSS space around this, but I can recommend KillBill (no affiliation). Although it is one component that does combine billing and pricing model, they are separate abstractions within KillBill, that provide the exact benefits the article describes (the ability to quickly iterate on pricing model). Stripe and co. are relegated to simply processing payments when they are due, which avoids the lockin of their value-add services. I'd love to see more in this space but honestly KillBill is the most rounded that I've found.
Now, I'm totally with you that calling that an "engine" is misleading for 99.9% of businesses. In most cases that's a configuration file, or a business class if they're dealing with more user behavior check, calculations or conversions.
That'll be a fun config file.
Unfortunately, pricing is unsexy, complex, full unknowns, no easily testable, and odd.
Ultimately bespoke sales deals show up, and you need to be diligent in your tooling and pricing design to make it work well (especially if you have any form of metering or dynamic pricing you want to take effect “immediately”)
It’s easy to have the handful of price points and fixed billing. But there’s a lot of ways for things to get more complicated.
> Just because you have this new "can represent and track everything system" does not mean a customer can transition from one plan to another plan without massive problems.
Big new plans that are very different from previous plans often come about because of large-scale reorganizations of the product. The issue is that with a big change in the way the product is organized, there might be application state under plan A which is literally unrepresentable under plan B, requiring the customer to manually migrate their application state from plan A to plan B, since it's impossible to do safely in an automated way.
I'm currently living through this fundamental oversight : )
What I would love to see is a tool that would make it easy to run multi-variant pricing experiments and give me the optimal pricing down to geo, platform etc. "Optimal" being the maximum cash collected.
The idea that pricing and billing are separate concerns seems entirely obvious to me.
In our case, stripe support wouldn't be enough though (we also need playstore & apple IAP, PayPal, other CC billing engine), and the truth is even if support excited, migrating would probably so painful that it would probably not be worth it (even though I'd happily throw away all those lines of code)
I love the pricing space, but at first glance, the limitation in your company's scope seems depressingly limited and is essentially hard-coded into the name of your company (Tier).
I have grandiose ideas, hopes and dreams of what the pricing space will look like in the future, and it doesn't involve immutable JSON files.
But I can see why this would be really useful right now. Looks great.
The problem we've faced so far is catching buyers who want to solve this problem, the deeper, underlying issue, rather than the problem that's in front of their face.
For technical contributors, they're usually tasked to throw up a paywall, and you can do that quickly and easily using your billing engine and some lightweight hard-coded logic.
For the business stakeholders, they're usually paralyzed by an inability to decide what the pricing should be, and implementation is an engineering problem. I spoke to one buyer recently who was doing a re-pricing exercise (which Tier and Stage both promise to make easier going forward), but even he believed that this re-pricing would be the last, and that further adjustments would be minimal.
It's nice to see other, credible people enter the space - I think it actually is a problem worth solving, and it's neat to see how their approach rhymes with ours. Of course I don't wish them too much success, since I'd like to have some customers too.
> 5. Pray that no one ever has to touch it again. (Or failing that, hope you've got a new job somewhere else before that happens.)
So many otherwise smart people make this foolish bet. It is an exceptionally long shot.
> Of course I don't wish them too much success, since I'd like to have some customers too.
Feeling is mutual, I'm sure <3 I think it's potentially a very big space with a lot of work to be done, so there's room for plenty of players in it.
It’s not.
It’s a cross-functional problem that mostly has to do with product (how it’s bundled, which features are on which tiers, and how customers move between tiers) and customer segmentation (how different customers value the features).
Bit stuck in progress following Vercel template here https://vercel.com/templates/next.js/tier
But I've already built out my own stripe usage-based billing app b4, and it sucks way more to debug that, so I get what you're trying to do here.
No wonder sometimes such posts get upvoted as useful or even insightful.
I see what you did there ;)
If you don’t relate to that, maybe the post just isn’t for you? HN is a forum for engineers and entrepreneurs—it’s run by a startup accelerator, after all. Not everything on it has to be purely technical.
I want to know what problems that they built this to solve specifically, so that I can foresee future problems that I may run into. But they don't elaborate at all, and instead just mention that their product solves those unmentioned problems.
Perhaps they’re more targeting people like me who have experienced this issue and don’t really need it explained, but I agree going into more detail on the specific challenges is probably a good idea to appeal to a wider audience.
You could just never change your pricing, but you’ll almost certainly be leaving significant money on the table as you’re highly unlikely to get it right on the first try. It could even kill your business, since the right product with the wrong pricing can be as much of a non-starter as the wrong product. Iterating on price can be as important as iterating on the product.
- Annual plans that include a discount vs paying month to month.
- Introductory pricing (and how long that lasts)
- Promo codes
- Dealing with multiple currencies
- Pricing on iOS, where you have to pick on of their "pricing tiers"The real complexity comes from when you need to make changes to your pricing and have to manage grandparenting, upsells, etc.
Another vector of complexity comes from the need to make different pricing and packaging offers for different markets, geographies, etc.
You can have a very simple pricing model, but that doesn't mean that there isn't complexity that emerges pretty quickly.
We were running into problems when we had large test baskets ( $500 always, $200 sometimes ) that there would be so many combinations of specials that calculating the best way to apply them was causing CPU load and timeouts.
Fix was somebody sat down, remembered their CS classes and applied a more scalable algorithm. Problem fixed.
/s in case it isn't obvious
We do have Tier Cloud with customers actively using it, but it has been invite only so far. It's a fair point though and I think we can put pricing up now in advance of making it publicly available.