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.
Tier seems to be solving a real problem that every company beyond MVP stage will face.
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.
Concerned about the number of lightweight marketing blog posts making it to the front page of HN. It’s like it’s part of the “marketing to devs” playbook at this point.
Is it really “lightweight”? Have you ever run a business and been responsible for pricing strategy? I have, and I thought the post made a good point—if pricing is tightly coupled to billing implementation, it discourages experimentation since pricing changes are technically non-trivial.
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.
None of that changes the fact that this is marketing for their product. Many similar posts have made the front page of HN recently and it’s getting a bit formulaic. It’s great that you like some of them, but are you ok with HN just being a bunch of covert marketing copy?
Most content is marketing in some form. Would you complain about a developer who blogs about open source so they can get consulting projects or a job? If the content is good and I can learn something useful from it, it seems like a win-win.
Social media users who have impracticably many dead authors’ books to read and choose not to are always going to complain about the impacts of cultural materialism, one comment at a time.
My main gripe with this article, is it mentions that their product was born as a result of a "painful expensive experience" of not creating a "Pricing Engine", but they don't at all elaborate on what that experience was.
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.
That’s fair. Having dealt with this myself, I’m very familiar with the pain involved, as I’d imagine most developers/entrepreneurs who have had to implement billing and then iterate on pricing are. It gets messy really fast.
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.
I noticed that that guy who posted his "I asked HN founder X and here is their top 10 responses" blog got flagged. I think that is a bridge to far in building a self brand with content marketing.
Is this product extensible beyond SaaS style tiered subscription models?
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.
My company is building in the same space as Tier - in fact our offering looks close to identical.
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.
I've got agree with your comment about the business stakeholders. The uncertainties around pricing and (at the moment) the even trickier problem of price increases can lead to inaction.
100%. The main reason we created https://priceops.org is that there's a real mind-shift that has to happen for someone to realize that there's even a "there" there. Most people who've been through it understand all too well, but even there, it's tempting to think "Oh, if only we'd just committed ignorantly to a better pricing model..." not realizing that you'll always get it wrong and the context will always be changing, so it's critical to have an implementation that can respond to new information.
> 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.
The problem most teams have with pricing is they think it’s a sales problem.
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).
The idea of splitting off payment plans into its own abstraction is super interesting. Personally I would really like if the abstraction layer also was independent of the payments processor, currently it seems heavily dependent on Stripe. Even though I currently use Stripe I find them to be untrustworthy and don't want anything that ties me to them even further. And more generally, using a platform built on top of a SaaS is a recipe for future headaches.
Agreed on not becoming too dependent on Stripe. Billing (or in this case, pricing) is the last thing you want under another entity's control.
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.
Is it just me or did the article just suddenly end after saying what amounted to "you need a separate pricing engine" and "we at tier learned this the hard way"?
It's looks cool. As someone who have been maintaining (among other thing, we also have our actual product) a home made pricing engine, I appreciate the value of this kind of thing.
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)
If pricing your product is so complicated that you need an entire separate product to manage it, you are probably indulging some MBAs in their own make-work projects too much. Non-transparent pricing is a huge red flag to potential customers.
The problem is not so much complicated pricing as grandfathering existing customers every time pricing changes (generally considered a best practice to avoid pissing off your customers). Then you end up with lots of gnarly conditional logic around anything that touches billing because you have to support a bunch of different pricing/billing versions, different upgrade/downgrade paths, etc. It gets even worse if your pricing model changes, like you go from tiers to per seat or usage-based.
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.
I've worked on pricing. There's a lot of complexity, even with a fairly simple product. Our product was a monthly subscription with 4 different tiers. Complications included:
- 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"
Hmm, I don’t know, what about products that have very thin margins? I suppose you would like to mirror the market price of that product as closely as possible, and that seems like it’s better to automate it.
A previous job was working at a supermarket's online store. Supermarket's have all sorts of weird specials eg "4 pies for $5" or "a pie and a coke for $3".
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.
I think they abstracted the problem so away that they have no idea what they are talking about. Having a single file that contains all your plans and make both your app, marketing pages, and Stripe work from it is trivial and is just good engineering. It's not a "Pricing Engine" or a "Pricing Stack".
I think recognizing it's a different problem than billing and have it as a different entity is important. And of course that knowledge needs to be materialized into a technical block.
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.
Did you previously get a new-customer discount on a previous order? What promotions are in effect? Are you eligible for that promotion based on your location or customer type? Are there bundle discounts that can apply? If you build an order, can we recommend eligible offers based on what is in the order already?
I am sure this doesn’t solve this though. It’s hard question to answer on individual basis, require some complex logic, and for sure some coding. You won’t be able to solve this with a “Pricing Stack”.
Unfortunately, pricing is unsexy, complex, full unknowns, no easily testable, and odd.
There are definitely easier and harder ways to handle pricing, but especially when you have higher touch sales “just use Stripe” stops working in a lot of cases.
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.
To expand, pricing engines also don't solve other product/licensing problems. At $dayjob, I work on a team that seems to have independently designed almost exactly what you've outlined in PriceOps.org (in January of 2022, right when PriceOps was being initially written), but we've also then had to use it for a year and change. The biggest thing we've learned is:
> 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 : )
We have probably more complex pricing than what Tier seems to handle, but, it's only a handful of tables and not a significant amount of code to handle it all. I didn't think this was a terribly hard problem and a custom solution seems better for tailoring the system to your particular needs?
I'm working on an internal pricing service that interacts with Azure. I'm not looking to use this service since I certainly would not want to create yet another external dependency, but will agree that pricing can be complex. For example, I was a bit shocked that there are over 450,000 individual things that Azure can charge you for.
Tier looks great. But unfortunately Tier's commit history on their main branch looks close to abandoned. I'd much rather pay money than risk picking unmaintained solo-dev OSS. If we're gonna end up having to manage the code ourselves I'd rather we write our own abstractions. Tough chicken and egg problem for them, I hope they solve it.
65 comments
[ 3.2 ms ] story [ 134 ms ] thread/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.
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.
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.
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).
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.
https://hyperswitch.io/
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.
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)
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.
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.
The idea that pricing and billing are separate concerns seems entirely obvious to me.
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 : )