The value-based pricing trap

Software pricing

Sometimes pricing is easy. For example, the price of oil is pretty straightforward – there is a market and it sets the price. In many cases prices are just a little higher than production costs – this is the case for PCs or for some consumer electronics. Software is different and much more complicated.

Two things make software pricing complicated:

– It often isn’t directly substitutable. If C&H overprices their sugar, I’ll buy generic. What should I do when Microsoft overprices Excel? There are substitutes, but there is a significant switching cost.

– The marginal cost per unit to produce is very near zero. If Toyota sells extra minivans, they have to pay a lot to build them. If Oracle sells extra databases, they may have to pay a lot of sales commissions but they don’t incur additional cost to produce them.

Put these together and you get a pricing situation where there is a huge gap between the marginal production cost of extra units and the value to the user. Since the price should in general be somewhere between the marginal unit production cost (near zero in the case of software) and the value to the user (because above that nobody would buy), the range of possible prices to consider is very wide.

Given a wide range of possible prices at which you can make a profit and customers would buy, where should you price your product? Assuming your price must be the same for all customers, an economist would say to price your product so as to maximize the total profit generated. For a given price x, you can sell d(x) units. if they cost c per unit to produce, you select x to maximize d(x) * (x-c). In the case of software, c is near zero so you are maximizing d(x) * x. This is your total profit, and it is the same as the area of the largest rectangle you can fit under the curve that plots demand against price.

Custom per-deal pricing

Sounds good. Now you’re beginning to see why software is a great business (if you’re not sure on this point you will be if you visit Larry Ellison’s house). In fact the software business is even better than what we described: you can make even more money than you would using the maximization approach in the last paragraph. How? Your price need not be the same for all customers. Classically, you do this by segmenting the market. Airlines, for example, want to make prices as high as possible for business travelers who are viewed as price insensitive, and much lower for leisure travelers who are much more price sensitive; their great insight is that leisure travelers often stay over a weekend and business travelers often do not. Presto, the Saturday-night-stay requirement for discounted airfares. Not bad, but software does even better. Lets see how.

Regardless of the list price, each high end enterprise software deal usually winds up being negotiated by a sales person. I’ve seen many cases where the list price produced absurd outcomes. One of my favorites was a chain of pizza restaurants buying an order management package from Oracle that was priced based on the number of order lines processed – at a list price of 85 cents per order line including the advanced pricing option if I remember correctly. Try telling a pizza restaurant that it has to pay 85 cents to its software supplier whenever a customer adds pepperoni to their small pizza at a cost of 75 cents. They won’t like it very much.

Classically, enterprise software companies solve this problem with sales people who can offer big discounts. If your list price is effectively infinite and always needs to be negotiated (which naturally your sales people do perfectly) you will not just capture the largest box under the demand/price curve but you will capture the whole area under it.

Congratulations, you have achieved pricing nirvana. You are capturing all the value created by your software. Your sales team learns to work with the user to understand the value the software will create; this is wonderful because it makes them a “business partner” not sleazy sales people. But when it comes time to price negotiation, they understand what the value is and you can hold the line. There might be some slight inefficiencies: commissions to pay, customers hiring analyst firms to help them negotiate against you, you hiring business practices people to cross check the sales managers you hire, but this is all minor compared to the massive revenue you are extracting from your customers.

Caught in the trap

It sounds wonderful, doesn’t it? You get to capture every last drop of value created by your technology. Your shareholders should be very happy. But it’s not quite that simple. If you price your software at a level where you capture almost all the value in a deal, you create two problems:

– Your customers resent you

– Because your customers are capturing minimal value, they have very little incentive to grow their usage of your software. In fact, they have a strong incentive to find an alternative situation – even an inferior one – if they can capture even a little more of the value it creates.

Think about it. Imagine that new manufacturing software will save me $5,000,000 and costs $4,999,000 [assume both numbers are discounted for cash flow and adjusted for risk]. Would you buy it? Yes, because it saves you $1000. Did the vendor maximize their revenue in the transaction? Yes. Will you tell your friends that they absolutely should buy it or make it a top priority to install the same software in all your other manufacturing plants? No, because the net savings is very low so the project is barely worth the hassle. Would I switch to an inferior product that saves me $3,000,000 and costs $1,500,000? In a second. Don’t even talk about how fast I’ll switch when a competitor has a superior offering that is priced reasonably!

This is the trap most enterprise software companies are in. My use of the word trap is specific; I am not saying it is a mistake, rather something they have gotten stuck in and something which is very hard to get out of. Leaving money on the table will shrink revenues and the market will punish the stock price. The benefit of customers being more excited about your product and talking it up more is great for your future, but doesn’t help the business in the short term.

Enter open source

Now we’ve arrived at my challenge. I don’t want to fall into the trap. I want to price MongoDB subscriptions at a price point that customers love. I want to leave money on the table. That money that I leave on the table is what makes economic buyers excited about their purchase. I want to save a customer millions of dollars and charge them a modest fee. Why? Because when that happens they’ll be aggressively looking for the next place to use MongoDB. They will tell their friends not just about how great the product is, but how easy 10gen is to deal with and what great value we provide. Short term revenues may be less, but if this makes the business grow faster over time revenues will be much higher.

This fits perfectly with open source. MongoDB users don’t have to pay 10gen. They only pay us if we deliver value that they find compelling. They talk to each other about whether they got value from what they paid us. If they stop getting value, they won’t renew. Our reduced pricing power is, in my opinion, a huge benefit because it helps us avoid the trap of pricing too high.

What else can we do to avoid keeping all the value for ourselves and not leaving enough with customers?  We start with a reasonable list price. If list price is actually a great deal for most customers, much of this problem goes away. Second we are standardizing volume discounting – with very aggressive discounts on large deals, so that even in volume the standard price is a great deal. And finally, we need to explain to our sales team and our customers what we are trying to do.

— Max

8 comments so far

  1. J. Cliff Elam (@cliffelam) on

    Max –

    Thoughtful, as always.

    However, you may be forgetting the most rational of actors in a sales transaction – the salesman (person, whatever). Remember that they aren’t pricing to maximize the company’s profit but their commission. Like a real-estate agent, they are maximizing deal flow and revenue and pricing in golf and family time at a marginal rate. They also discount current sales with the expectation of future sales – at their current or future companies.


    • Max Schireson on

      Yes, good point.

      That’s a fun topic for a future blog post. A big part of the disconnect is that they apply a much higher discount rate to future revenue due primarily to greater uncertainty about how it translates into commissions.

      — Max

  2. demosbot on

    The catch about this whole article is that 10gen doesn’t actually sell software at all.

    10gen sells services and therefore, you actually do have a marginal cost per license sold.

    Customers pay 10gen support fees so that they can have someone answer the phone at 2am on a Sunday when their sharding cluster breaks. Plus they expect QA to be running regression tests so that new versions of the software are not the cause of their cluster going down. They also expect new software changes to be in their favor, especially when they are big clients. And with open source they can see the code you are producing, so they know the work that you are outputting.

    If a million dollar client needs $200k in support & QA staff on top of commissions, then that’s clearly a non-trivial marginal cost.

    Obviously, that’s still a great margin, but it’s also a temporary margin. At some point, a 5 million dollar client will have enough issues that it’s worth just spending 1 million dollars to buy their own experts and keep them on staff.

    You can already see this with MySQL. They have competitors like Percona, but they also have Facebook basically paying their own staff and developing their own fork. Facebook should be paying MySQL/Oracle tons of money, but instead they’re operating one of the largest MySQL deploys in the world for pennies on the sales dollar.

    How does 10gen keep the sales momentum going once the available pool of experts exceeds the 10gen staff?

    • Max Schireson on

      Good comments.

      The reason we made mongodb open source was to get rapid adoption – similar thinking to the post. In a way you could say we sell software with a price of 0 (which was a choice, when we developed mongodb we could have chosen to make it expensive enterprise software; I am very glad we didn’t) and support at a much lower price.

      You are right that the marginal cost of adding a support customer is not zero. That said, when you sell support at ~95% gross margin (as many software companies do), a lot of the same logic applies. We have chosen to sell our support subscriptions at a much lower price – we think it will still be nicely profitable, but we will share the value with our customers. Ours support deliver costs are significant, and will remain so, and I think that is a good thing – a sign that we are selling something with value.

      MySQL has many business challenges. We expect we will share some, but hope to avoid others. That’s a long conversation for another post or over beers.

      For us to continue to grow and prosper we need there to be lots of experts beyond our staff and we need to deliver offerings that have great value – surviving based on scarcity of knowledge is not a long term plan. Lots of work to do in the coming years, but I am very confident in the team here!
      — Max

  3. […] cheaper than Oracle’s RDBMS) for a few projects slated for Oracle? As 10gen president Max Schireson notes of his company’s MongoDB customers, they’re almost certainly going to buy more MongoDB. Lots […]

  4. cajoel on


    I found a bug with MongoDB replication of capped collections, and it seems this might force me to get a support contract to get it fixed.

    Once I started talking to a sales rep our discount was fluxuating wildly depending on what I purchased. There was also an ‘act now’ incentive to buy in before the end of the month.

    It’s this type of pricing pressure that drives a customer crazy and really makes me question the value I would be getting.

    In addition, pricing per server is very awkward.
    If you want more resiliency of three servers you have to pay /more/ for support?? That just feels like protection money.

    How about a flat price per incident or hour?
    Paying for what I use/need is why the cloud model is appealing. It would be great if 10gen could follow suit.

    • Max Schireson on


      Thanks for contacting me with your feedback.

      I am disappointed that we’re doing wildly fluctuating discounts and understand why those frustrate you and lead you to question the value of support.

      That said, if you feel like the only reason you need support is one bug, it probably doesn’t have much value for you. We try to provide a service where we understand your system and your needs and can assist you with product issues, performance issues, diagnosing complex situations which may or may not be mongodb problems, and answering questions about mongodb. If your bug is a bad one, we’ll need to fix it whether you’re a customer or not; anyone can report issues in JIRA and the resultant maintenance releases are available for free.

      I understand your notion of pay for what you use. We’ve found a lot of customers like the predictability of knowing what they will pay. There are also situations where an hourly or incent charge just wouldn’t work; for example last week our CTO and I spent the night at a customer’s office working through a particularly gnarly issue (though I will confess to a quick nap on a couch around 4am so that I would be able to drive home). I don’t think we would have been able to agree on an hourly rate, but it was the right thing for us to do for a subscriber and that’s the type of service we want to provide.

      Feel free to contact me by email, my first name at 10gen dot com to discuss further.

      — Max

  5. […] When established vendors dominate a market, an open source company has an opportunity to disrupt the market by offering a high-value alternative at a lower price point. Vendors like 10gen can afford to charge lower prices because they benefit from shorter sales cycles and reduced R&D costs through community feedback. Closed source companies cannot afford to lower their pricing as their whole business model depends on charging customer licensing fees. (For more on this topic, you should read Max Schireson’s excellent blog on the value-based pricing trap.) […]

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: