The customer sells a parts ordering tool, priced per order across a ladder of volume tiers. The structure hadn’t changed in two years and had outgrown their fast-growing product. By the time they reached out, their largest customers were underpaying and their own resellers were undercutting them on their own product.
Big customers paying less per order is normal. The problem was how far down the curve went and what it was buying.
A volume discount is supposed to buy something. Commitment, protection against a competitor, insurance on an account you can’t afford to lose. Theirs was set once as a pure function of volume and never checked against any of that. A small shop paid roughly two dollars an order. A large account paid around fifty cents.
Three things in their own data said that gap was far too wide. They had never lost a large account on price, not once. The closest competitor charged about what their smallest customers paid, for a result roughly ten points less accurate. And churn at the top of the base was near zero and almost entirely involuntary, expired cards rather than angry customers.
The accounts with the most negotiating leverage were getting the deepest discount for leverage they had never actually used.
That gap fed a second problem. Resellers buying bulk at discounted rates were selling orders lower than my client with a more attractive expiration policy. The company was losing deals to its own distribution channel.
The pricing model also gave customers nothing for growing. One plan, a volume ladder, monthly credits that expired end of month. In a seasonal industry that meant paying for peak capacity all year or eating overage every summer.
Here’s how we changed their pricing:
New pricing went live for new signups only, for a month, while everyone existing stayed on legacy. That pilot did roughly what we wanted: fewer customers, more MRR, with almost all of the customer loss coming from pay-as-you-go. That was a trade well worth making, but we wanted to make sure our predictions were right.
The pilot also surfaced two things the model got wrong. Customers sitting between the 5,000 and 10,000 order plans fell into a dead zone and got punished on overage, so we added a tier in the middle. And the largest legacy accounts were staring down a 3x increase, which we capped at 2x. Not because 3x was unjustified, but because a customer who leaves at 3x can’t be ratcheted up later.
Migration then ran in cohorts. Roughly 10% of the base first, then everyone else a month later. The second wave went out in the middle of the industry’s slow season, which is not when anyone would choose to send a price increase. But the first cohort had already gone through with no change in cancellations, and waiting for spring would have cost more in delay than it saved in risk. Complaints across the whole base stayed in the single digits.
Going in, they weren’t convinced they had enough functionality to justify more than one plan. After looking it over we decided to build a premium tier around two data-enhancing features. Over 30% of new signups chose the new higher tier.
"We decided not to drag it out. The notice went to the whole remaining base in one send. A handful of people got in touch and some of them were annoyed, but it was inside the range we had planned for, and not one of them left."
CEO, automotive technology SaaS
Hands-on consulting to realign your pricing with how your business has evolved and where it's headed.
Let's talk