The Only Type of API Services I'll Use
rdegges.com
rdegges.com
Unfortunately, for big enterprises, this isn't true. They (as a company, maybe not the individual developers inside it) want to go through it. They're the ones who start the RFP process, and as the service provider, you'll either follow their process... or they'll buy from someone else, no matter how much better your API may be.
It depends on the scenario, but this isn't as insane as it may sound. It's less relevant for, say, a SMS API which is interchangeable, but if you provide an API service that is deeply intertwined with the processes in that enterprise, the company needs to evaluate the different providers. This process is time-consuming one way or the other... they might as well let the different providers do most of the work for them (which makes sense, because they know their services).
As for the price negotiation itself: I agree.
Also, an enterprise sales process and usage based pricing are not mutually exclusive! You absolutely can sell usage based pricing, and both parties hopefully get the benefits listed.
This is why there is a dearth of software in the middle of the market. You can sell something for less than $1000 because customers can expense it. After that the sales process forces up costs so much that you get "contact us for prices" and the hard sell.
> There’s no software priced between $1000 and $75,000. I’ll tell you why. The minute you charge more than $1000 you need to get serious corporate signoffs. You need a line item in their budget. You need purchasing managers and CEO approval and competitive bids and paperwork. So you need to send a salesperson out to the customer to do PowerPoint, with his airfare, golf course memberships, and $19.95 porn movies at the Ritz Carlton. And with all this, the cost of making one successful sale is going to average about $50,000. If you’re sending salespeople out to customers and charging less than $75,000, you’re losing money.
https://www.joelonsoftware.com/2004/12/15/camels-and-rubber-...
Monthly billing changes his numbers drastically - because now software priced at $1000 is sold as $100 per month instead.
Unfortunately enterprise sales are a self perpetuating cycle. Vendors do it because customers want it, and customers do it because that’s how the vendors are set up to work, because customers have been demanding it for so long.
What those customers actually want is long term stability and someone to blame when things go wrong. The drawn out sales cycle is just one manifestation of that, but doesn’t have to be the only one.
I haven't heard this before, and it's great. I always get a chuckle when customers are dumbfounded that they don't have to have a call with us before using Geocodio. They're so used to the self-perpetuating sales pattern you mentioned that they're confused it could be so straight forward.
> Usage-based pricing with automatic volume discounting incentivizes both parties to grow and win together.
Highly agree, especially if you're trying to see how viable a small project is. And if it grows quickly, I know I'll get even more value from the service provider and won't worry about leaving money on the table at the end of each billing cycle.
> Bucket-based pricing creates an adversarial relationship between you and the customer because the customer is always going to pay more for your service than they want to.
I do see the viewpoint from the service provider as well, as they know they have N number of users at P price point, and can more accurately estimate their monthly revenue, plan out growth budgets, or show higher profits on price increases.
If you're trying to charge for a service or set of services but your costs vary depending on your customers' mix of usage (imagine you're hosting files, and customers pay you both for storing the files and also for ingress/egress), suddenly you either have a complicated pricing model ($X per byte-month stored, $Y per egress byte) or you have to simplify the model down to one metric, but this has its own problems.
Say you simplify down to just charging for storage. A few customers are going to figure out that you have "free" ingress/egress and they're going to use your service as a CDN that's cheaper than any other CDN, and now your costs are misaligned with what you're charging. Or if you decide to just charge for ingress/egress but not for bytes stored, a few customers are going to figure out that you're a "free" AWS S3 Glacier service and again your costs are misaligned with what you're charging.
You can write a ToS that prohibits this and you can track down these users, but now you're engaging in adversarial behavior.
I agree with the author that it's best to charge based solely on usage with a pricing model that isn't too complicated, but if your service isn't amenable to a simple pricing model, the next best thing is enterprise pricing -- because you want to find customers who are going to be price- / billing- insensitive, who need your service.
I read about Michelin's case somewhere that I found interesting. Apparently Michelin doesn't sell tires to trucking companies - they sell miles. So they're incentivized to make better tires and miles is all their customers care about and they don't have to worry about whether Michelin is deliberately making bad tires just to make more money. Same "utility" logic here I think.
Personally, I like services that cap you to a "degraded" service level once you go over your limit, say you get 20TB at full speed, but after that you're either throttled to 10Mbit for the rest of the month or you pay extra to have the rate limit lifted.
While I agree with some of the mutual benefits of per-use pricing, as a customer I would like some control to set usage restrictions at the upper limit of what I am willing to pay, specifically for services where I don't have much control over the actual usage.
Either way bucket pricing is designed to work out better for the provider than the customer almost every time.
It's up to service providers to market themselves effectively to the 'right' audience if they want aligned customers.
My utility company pretty much does exactly that: they charge a fixed fee for the privilege of supplying me at all, and then they charge me for my metered usage. Different suppliers offer a variable balance between a larger fixed fee and a larger per-unit cost, so I can shop around and find the optimal supplier for my usage level.
Why aren't more APIs priced in that way?
They also tend to differentiate on other features and support levels too, which muddies it a little, but the concept is there.
Also utility is physically providing wherein the distribution of an api is already existant.
That’s the reason of upfront payment and the bucket usage payment model. An alternative would to pay upfront for a credit of usage, but this would require to monitor the usage and an action when the credit falls below a threshold.
The model to use depends on the type service we offer. If we can afford the loss due to people running away without paying the service, then it’s ok to bill after use. But that wouldn’t be a great business model.
To me, the upfront payment of a usage credit seam the best compromise.
Think of an address validation service. The cost to develop the service might amortize out to $0.50 a request while the infrastructure to run the service will cost a fraction of a penny per request. To make a profit the company would charge $0.75 an address. As a customer I might be willing to pay a dollar per address to validate a billing address. For addresses collected as part of a marketing campaign maybe it's only one cent. So there's a potential benefit from the service that isn't being realized due to the pricing.
I deal with this all the time at my job. The vendor of the software I implement has been offering a fixed price per ticket/process* created. This pushes us to implement a single big process when combining a bunch of smaller processes into one bigger one is the better way to do it. It also limits the problems we can solve to those worth more than X dollars per process where X is the cost the vendor charges per process executed.
*Stuff like credit card disputes or managing the employee onboarding process
> Usage-based pricing with automatic volume discounting incentivizes both parties to grow and win together. Neither party is in an adversarial position with the other.
As someone who runs a company with a pay-as-you-go, automatic-discounts pricing model, these points resonate strongly. We are always aligned with our customers and our metrics and incentives are very clear: do things that make it more useful for the customer.
We have had to add enterprise options because of customer demand, though. Enterprises really don't like unpredictable pricing and so we've had to create various flat-rate options for them.
We've found the pay-as-you-go freemium to be a great compliment to enterprise plans, though. People within a company can try out Geocodio for free or very cheaply (i.e., no PO required, just throw it on their boss's P card), make sure it's what they need, and then make the case internally. As a result, we don't have to do any outbound sales. The pricing model does it for us.
It's interesting to see this point under that angle, although it makes perfect sense: you only get paid after traffic has increased, therefore the service should scale first, then generate money to support infrastructure billing.
The bidirectional coupling of used resources vs revenue makes a lot of sense.
Now on the question of predictability of pricing (on the customer side), usage-based pricing, in some cases, should have caps to avoid over-spending. I'm not talking about rate limiting and DoS protections, but rather a way to tell your customers when they are about to hit a defined threshold, so they can plan their billing accordingly. This can give the customer the feeling of a bucket plan, but with optimal pricing and adapted resource usage.
Bitter customers are not good in the long run, and caps and alerts help avoid having bitter customers.
I'm looking into implementing this system in one of my projects, do you have good resources on this matter ?
A great point, but there's also a significant group of people who prefer flat predictable rates, rather than fluctuating bills.
Examples of popular services with fixed rates; Digital Ocean, Spotify, Netflix...
Although these aren't API services, they could be using usage based business models.
Does control/risk factor into your decisions? I mean when working with an external provider there's always the risk that the API will go down and disrupt your service. Do you have any criteria to evaluate the trustworthiness of a provider?
Example - you want to try out a service, you sign a contract that has some cost $X, up to 5 users. It goes well, you want to double usage of the feature, but you now need to pay $2*X + $Y in order to expand to 15 users, which really only encompasses a few choice teams.
Professional situation: that unexpected $20000 bill (expected $20) because of a bug that was causing spurious repetitive calls to a service that is billed monthly. That huge bill because someone has hacked your infra so they can abuse your account.
Personal situation: that $2000 phone bill due to unexpected roaming costs.
And it's not that you have to only use one pricing method. You can use have usage-based pricing for some customers and enterprise pricing for some customers.
Turns out it's possible to get billing alarms from AWS, but it's not something they make terribly easy. I don't know if it's possible to configure a kill-switch the same way.
My favourite AWS billing horror-story involves Glacier. Its pricing model used to be the stuff of nightmares, and caught plenty of people by surprise. [1]
When you can reduce your bill by sending 1 less SMS, you get an incentive to do so. If you are sending 2500 SMS, you cannot really scale down to 1000 in a meaningful way. On the other hand, having opportunity to grow to 5000 SMS a day without cost increase give the company opportunity to test out various ideas which may or may not bring revenue.
All pricing strategies have pros and cons and it is up to each to determine what fits them the best.
That's one way of looking at it I guess. The other way of looking at it is that every company that doesn't charge each customer exactly what they can pay rather than something possibly less, is leaving money on the table.
It’s analogous to selling tickets: if you charge less than the market will bear, scalpers will come along and buy them all up, and then make all the profit you could have made reselling the tickets for what they’re “actually worth.”
It took no effort on your part to get those additional users. It might be indirect, but for a purely API service, I don't think it makes a great difference.
The risk would be if they implement some layer over your API service and then down the road shift it to another provider. To avoid that, I would actually try to find and partner with any such resellers to make sure they stick with you.
I'm fairly sure they just let you out of your contract if you move somewhere you can't receive their service. Is that not the case?
I bet the answer is "nope".
Offer both
I feel all of his points imply a misunderstanding of basic business and microeconomics.
1) Businesses like predictability. Consistency is such an important concept that stocks that pay regular dividends are worth considerably more than those that pay irregular dividends. People with consistent credit payments are more creditworthy than those who are irregular.
This isn't just for the seller, it's also for the buyer. A financial manager would always prefer some type of easy, annual fixed fee all other things being equal.
It's why you pay less for longer-term AWS EC2 contracts.
Predictability usually reduces the operational burden, which reduces costs and enables a better deal.
Your own understanding of your own long term business objectives is an advantage that you can 'signal' down the value chain to your supplier by engaging in long term contracts. They do the same, and invariably competitive pressure means lower prices.
This notion of 'Enterprise plans being good for nobody' due to 'adversarial' notions is basically rubbish, makes no sense.
2) Often, price doesn't matter. In many cases, the surpluses yielded from a specific product is quite a lot, so much that nobody cares that much about the price. If your company with $2B revenues uses some service, if it costs $1k or $10k / year, it makes no difference at all. Nobody wants any kind of headache, it's like 'tranche pricing' for a haircut.
3) Combined with #2, we have the concept of 'Total Cost of Ownership'. The product 'features' that can matter more than price are usability and support. A cheap product that causes headaches is not cheap. A cheap product with extremely expensive support is not cheap. So consider 'total cost of ownership'.
On the seller side, they incur costs for giving free or cheap services. It may simply not be worth their while to deal with the tiny bits of incremental revenue.
4) The tiering models don't necessarily imply 'more or less value' for one or the other sides, it depends very much on the actual price - they could all be a ripoff or a great deal.
5) I don't think any particular pricing model is more or less 'adversarial' than the other.
6) Different pricing models are usually advantageous to the customer and the seller. Far from being 'adversarial', it's just the opposite: they enable customers and suppliers to engage on common ground, by building a financial premise that makes sense for both parties. Only each individual party understands their own needs, so more variety means more opportunity for common ground.