All chapters Part V · Money
Chapter 26

Pricing Strategy

You are not inventing a number. Your market has already trained your customer what this costs. Your job is choosing a defensible position on an existing scale, and then making the annual plan the obvious choice.


The concept

Pricing paralyses founders because it feels permanent and unknowable. It's neither:

Almost every first-time founder underprices, usually from a fear of rejection that gets rationalised as strategy. Underpricing costs you margin, attracts your worst customers, and signals low value.

Three approaches

ApproachMethodWhen
Cost-plusCosts + marginAlmost never for software, your marginal cost is near zero
CompetitivePosition against comparablesGood default; the market did your research
Value-basedA fraction of value deliveredHighest ceiling; needs quantifiable value

Value-based is strongest where you can quantify the outcome. If your tool saves a customer 10 hours a month at $50/hour, that's $500 of value, and $99/month is an easy conversation. Consumer products rarely have quantifiable value, so consumer pricing is mostly competitive positioning.

Finding your anchor

  1. List 3-5 comparable products with monthly and annual pricing.
  2. Find your closest structural comp, same customer, same shape, not just the same topic.
  3. Note the range, the median, and the outliers.
  4. Position deliberately: below your closest comp, at or above the category median, is a comfortable and defensible place to sit.

Users tell you the anchor for free. Complaints like "they charge $50/year for a glorified quote app" contain the number your market already accepts.

⭐ The annual plan is the product

The most under-thought decision in subscription pricing.

Monthly at $10Annual at $50
Cash at signup$10$50
Churn decisions per year121
Realistic LTV~$30 (3-month median)$50+
Cash for acquisitiondripupfront

Three implementation details do the work:

  1. Annual is default-selected. They must actively choose monthly.
  2. Show the per-month equivalent, "$4.17/mo" makes annual look cheaper, not more expensive.
  3. Show the saving as a percentage, computed from the two real prices.

Compute the savings badge; never hard-code it. A hard-coded "58% off" becomes a lie the day you change a price.

Typical annual discounts run 20-60%. Below 20% doesn't motivate; above 60% suggests your monthly price is wrong.

Psychological pricing that actually works

Regional pricing

$50/year is trivial in San Francisco and prohibitive in Jakarta, Lagos or Buenos Aires. Options:

⚠️ Never display a hard-coded currency. Platforms charge users in their local currency; showing "$9.99" to someone billed in rupees is wrong, confusing, and a store-rejection risk.

Raising prices

Easier than lowering, and always underdone:

Launching high and cutting signals desperation. Launching low and raising is normal. When in doubt, start higher.

B2B specifics


📐 Best practice

Find the anchor from 3-5 real comparables before choosing anything.

Price against your closest structural comp.

Make annual the default, with a per-month equivalent and a computed saving.

Render prices from your store or billing system, never hard-coded.

Charge more than feels comfortable. Your first instinct is too low.

Show your prices.

Start higher; you can discount.

Grandfather on increases.

Instrument the pricing funnel before optimising anything.

Test with real users, not with reasoning, once you have volume.


💀 Common mistakes

Underpricing from fear. The default mistake, rationalised as "getting traction."

Cost-plus pricing software. Your marginal cost is near zero; it tells you nothing.

Inventing a number without checking comparables.

Monthly as default. Costs you cash and adds eleven churn decisions.

Hard-coded prices and savings badges. Wrong in every other currency; false the day you reprice.

Too many tiers. Choice paralysis.

Hiding prices below enterprise ACV.

Discounting reflexively. Teaches customers to wait for a sale.

Never raising prices. Your product improves; your price should.

Changing prices without measuring. You have no idea whether it helped.

Ignoring regional affordability, then wondering why conversion outside the US is near zero.


The professional workflow

 1. COLLECT COMPARABLES — 3-5, monthly and annual

 2. IDENTIFY YOUR CLOSEST STRUCTURAL COMP

 3. CHOOSE A POSITION and write down why
    (below closest comp, at/above category median is defensible)

 4. DESIGN THE PACKAGE
    ~3 tiers · annual default · per-month equivalent · computed saving

 5. CHECK REGIONAL AFFORDABILITY — PPP pricing or restrict availability

 6. IMPLEMENT PRICES FROM THE BILLING SYSTEM — never hard-coded

 7. INSTRUMENT
    paywall views · plan selected · conversion · trial→paid · churn by plan

 8. LAUNCH, then leave it alone long enough to get signal

 9. TEST ONE VARIABLE AT A TIME once you have volume

10. RAISE PRICES for new cohorts as the product improves

Tools, websites & costs

NeedToolCost
Mobile pricing + experimentsRevenueCat, Adapty, SuperwallFree tiers
Web billingStripe Billing, Paddle, Lemon Squeezy2.9%+30¢ / ~5%
BenchmarksRevenueCat State of Subscription Apps, OpenViewFree
Competitor paywallsAdapty Paywall LibraryFree
PPP pricingParityDeals, platform tiers$0-29/mo
Price research (B2B)Van Westendorp survey, Wynter$0-$$$
Funnel analyticsPostHog, AmplitudeFree tiers
ReadingMonetizing Innovation (Ramanujam & Tacke)~$25

Alternatives & trade-offs

Simple vs sophisticated. One price is easy to explain and leaves money on the table. Tiers capture more and add complexity. Start simple; add tiers when you can name who each is for.

Per-seat vs flat vs usage. Per-seat is predictable and penalises adoption (teams share logins). Flat is simplest and mismatched at extremes. Usage aligns with value and makes bills unpredictable. Hybrid, base plus overage, is the current default in developer tools.

Freemium vs paid-only. Covered in Chapter 25; the pricing consequence is that freemium requires a much clearer felt gap.

Discount vs added value. Discounting trains customers to wait. Adding value at the same price protects your position.

Introductory pricing. A genuine, time-boxed launch discount is honest and effective. A permanent "sale" is neither, and platforms treat fake urgency as a violation.


Checklist


📓 Case Study: positioning on an existing scale

Project: SOLIS, a consumer subscription app.

The research came before the number. Three independent sources:

SourceMonthlyAnnual
Closest structural comp (same audience, same shape)$19.99$59.99-79.99
A philosophy-first competitor$9.99$89.99
A habit app in the adjacent space,$39.99
Category norm (platform-wide data)~$9.99$29.99-39.99
Health & Fitness median annual,~$39.94
The complaint quote's implied anchor,"charge $50/year"

That last row is the interesting one. The universal complaint found during market research (Chapter 03) contained the number the market had already trained users to accept. You don't have to educate anyone about a price they already expect.

The decision: $9.99/month, $49.99/year, 3-day trial.

The position is defensible and can be explained in a sentence: $9.99 is exactly the category norm (no education required), $49.99 is above the median but well below the closest comp's $59.99-79.99, premium without being the most expensive option, which is a comfortable place to sit. And it matches the anchor users already carry.

The framing followed from the product: a full 90-day course for less than a month of coaching, roughly 11¢ per item.

Annual was made the product, correctly:

That last detail is worth stealing. A hard-coded "58% off" becomes false the moment you change a price in a dashboard, and nobody notices until a user does.

⚠️ Deviation 1: prices were hard-coded in the interface.

The paywall shipped with $9.99 and $49.99 written into the markup. Platforms charge every user in their own storefront's currency, so those numbers were wrong everywhere outside the US, and a displayed price that doesn't match the charged one is a rejection risk.

The trial had the mirror-image problem: the copy promised "3 days free" unconditionally, even though the offer only exists once configured, and a user who had already used their trial would be shown it again.

The fix rendered everything from the store: localised price strings, a per-month equivalent computed in the currency the user is actually charged in, a savings badge derived from the two real prices, and trial copy taken from the actual offer, dropping every mention of a trial when there isn't one.

Verified against fixtures for the US, India (different currency and price tiers), a one-week trial, a paid intro offer, an annual that isn't a saving, and a monthly-only configuration. That's the right test matrix, the interesting cases are the ones your home storefront never shows you.

⚠️ Deviation 2: a statistic nearly drove the trial length.

Early research collected: "longer trials convert ~2× better (17-32 days ≈46% vs 3-7 days ≈27%)." A large claim, pointing at a much longer trial.

Adversarial verification later refuted it, it couldn't be traced to a reliable source. It had already influenced planning.

The decision fell back to product logic instead: the free tier already opened the first seven days fully, so the free tier was effectively the long trial, and a 3-day paid trial on top wasn't the user's only chance to evaluate.

That's defensible reasoning, but it also exposes a design smell nobody resolved: the free tier and the trial were doing overlapping jobs. The honest answer is that this is an A/B test, not an argument, and it was never testable, because nothing was instrumented.

📐 Never change a pricing decision on the strength of a statistic you haven't verified. Decide on product logic; test with users.

🚩 Unvalidated. No users, no conversion data. The position is well-reasoned and entirely untested.


Lessons

  1. You're picking a position on an existing scale, not inventing a number.
  2. Price against your closest structural comp, not the category median.
  3. Users tell you the anchor for free, it's in their complaints.
  4. Annual is the product. Default-selected, per-month equivalent, computed saving.
  5. Compute the savings badge. Hard-coded percentages become lies.
  6. Never hard-code prices or currency. Render from the billing system.
  7. Test the storefronts you'll never see, other currencies, no-trial, no-saving configurations.
  8. Verify statistics before designing around them.
  9. Charge more than feels comfortable. The first instinct is too low.
  10. Price is easy to change; the model isn't. Spend your thinking on the model.

Next: Chapter 27: Payments, Billing and Subscriptions →

Useful? Share this chapter