Audit monetization
Pricing, packaging, expansion and lifetime value.

Monetization is where an audit finds money that needs no extra traffic. A price or packaging change applies to every new customer from the day it ships, and an expansion path applies to a base you already paid to acquire. The audit has one question to settle: does what you charge rise with what the customer gets, and does each segment pay back what it costs?
This chapter comes after the retention audit for a reason, since the lifetime value you are about to compute depends on it. Throughout, say a B2B SaaS at 2M ARR sells three plans at 49, 149 and 499 per month. The numbers are invented to show the method.
What to collect before you touch pricing
| Source | What to export | What it tells you |
|---|---|---|
| Billing tool | Subscriptions, invoices, plan changes, discounts, refunds and failed payments, by account and month | Real MRR and the price actually paid |
| CRM | Deal size, discount granted, lost reason, competitor named | What sales concedes and why deals die |
| Product data | Usage per account on each candidate value metric, distance to plan limits | Whether price follows value |
| Finance | Hosting, third-party API, support and onboarding costs, by plan if possible | Gross margin per segment |
| Website | The pricing page today, its past versions, the dates of every price change | What the market has been told |
| Calls | 8 to 10 customers and lost prospects, on how they decided and what they compared | The reference points behind the price |
Then build one table, mrr_by_account, with account, month, plan and MRR. Divide annual contracts by twelve, exclude VAT and one-off fees, and reconcile last month’s total with accounting. Billing and CRM rarely agree, and a pricing argument built on the wrong one goes nowhere.
Compute unit economics by segment
| Metric | Formula |
|---|---|
| ARPA | MRR / active paying accounts |
| Monthly margin | ARPA × gross margin |
| CAC | Sales and marketing spend / new paying accounts |
| Payback | CAC / monthly margin |
| Lifetime | 1 / monthly churn, capped at 60 months |
| LTV | Monthly margin × lifetime |
Keep the cap. With low churn, 1 / churn gives a lifetime longer than the company’s own history. Where you have enough old cohorts, replace the formula with what those cohorts really paid.
| Plan | Accounts | ARPA | Gross margin | Monthly churn | CAC | Payback (months) | Capped LTV | LTV / CAC |
|---|---|---|---|---|---|---|---|---|
| Starter | 900 | 45 | 70% | 5% | 400 | 12.7 | 630 | 1.6 |
| Team | 450 | 140 | 80% | 2.5% | 1,500 | 13.4 | 4,480 | 3.0 |
| Business | 150 | 420 | 85% | 1% | 6,000 | 16.8 | 21,420 | 3.6 |
A blended average would hide the story. Starter holds 60% of the accounts and 24% of the MRR, and it takes nearly 13 months to pay back a customer who stays 20. I won’t give you a universal LTV / CAC threshold. Compare payback with the real lifetime of that segment and with the cash you can afford to tie up, then watch the trend over time. If you cannot split CAC by plan, say so in the deliverable and give a range.
Separate net and gross revenue retention
Net revenue retention tells you whether the base grows without new customers. Gross revenue retention, capped at each account’s starting MRR, shows the leak that expansion covers up. Assuming mrr is numeric:
WITH base AS (
SELECT account_id, plan, mrr AS start_mrr
FROM mrr_by_account
WHERE month = DATE '2025-10-01' AND mrr > 0
),
later AS (
SELECT account_id, mrr AS end_mrr
FROM mrr_by_account
WHERE month = DATE '2026-10-01'
)
SELECT
b.plan,
SUM(b.start_mrr) AS start_mrr,
ROUND(SUM(COALESCE(l.end_mrr, 0)) / SUM(b.start_mrr), 3) AS nrr,
ROUND(SUM(LEAST(COALESCE(l.end_mrr, 0), b.start_mrr)) / SUM(b.start_mrr), 3) AS grr
FROM base b
LEFT JOIN later l USING (account_id)
GROUP BY b.plan
ORDER BY start_mrr DESC;
Run it on several start months and look at the distribution behind it. A strong NRR driven by five accounts is a concentration risk, and it says nothing about your packaging.
Audit pricing and packaging
| Area | What to check | Warning sign |
|---|---|---|
| Value metric | Whether the bill grows when usage and results grow | Heavy users pay the same as dormant ones |
| Plan limits | Share of accounts above 80% of a limit, and what they do next | Nobody gets near a limit, or accounts churn when they hit one |
| Feature fences | Use of each paid feature, by plan | The main upgrade argument is a feature few people open |
| Plan mix | New paying accounts by plan, over time | One plan takes nearly everything and the others are decoration |
| Discounts | Distribution by rep, deal size and reason | Discounts given by habit, with no counterpart |
| Billing term | Share of annual contracts, churn by term | Annual is offered with no reason to choose it |
| Price history | Date of the last change, legacy plans still billed | Old cohorts on prices nobody sells anymore |
| Pricing page | A cold read as a first-time visitor | You cannot estimate your bill without a sales call |
For willingness to pay, start with the calls and with win and loss notes. A Van Westendorp survey gives a usable range if you can collect enough answers from the right segment. The cleanest test is a change of list price for new customers, read before and after or by market. Showing two prices to identical visitors tends to get noticed by buyers who compare.
Before testing, compute the break-even: maximum loss of conversions = 1 − old price / new price. Moving Starter from 49 to 59 stays positive on revenue as long as you lose fewer than 17% of conversions. Starter needs about 45 new accounts a month to stay flat (900 × 5%). With 10% fewer conversions, 40.5 accounts at 59 bring 2,390 of new MRR against 2,205 today. Then watch churn on those cohorts, because a price that sells and doesn’t hold is a loss delayed.
Changes for existing customers are a separate decision, with contract terms and notice periods involved. I flag those and leave contract, tax and revenue recognition questions to finance and legal, who are better placed.
Map expansion and revenue leaks
| Expansion path | What to measure | Trigger to look for |
|---|---|---|
| Seats | Accounts adding users, time to the first addition | A second team starts using the product |
| Usage or credits | Share of accounts buying above their allowance | Limit reached with a purchase path on that same screen |
| Plan upgrade | Upgrades by origin plan, and what they did the month before | Repeated attempts to use a gated feature |
| Add-ons | Attach rate by plan and segment | A specific use case appears in support or sales notes |
Each path needs an owner and a visible moment in the product. Expansion left to chance shows up as a few large accounts upgrading on their own initiative.
Leaks are the fastest wins of this chapter. Go through them one by one:
- failed payments with no retry sequence or card update request
- discounts that should have expired and are still applied
- usage above plan limits that is never billed
- free or test accounts nobody remembers granting
- legacy plans with features since moved to a higher tier
What a finding looks like and what to deliver
| Field | Example |
|---|---|
| Finding | Starter pays back in 12.7 months for a 20-month lifetime |
| Evidence | Unit economics table, 12 months of billing data |
| Consequence | 60% of accounts absorb acquisition budget and support for 24% of MRR |
| Action | Raise the list price for new Starter customers to 59 |
| Test | Before and after over 8 weeks, then read churn on those cohorts |
| Guardrail | Stop if conversions fall by more than the 17% break-even |
Your deliverable fits on a few pages: the unit economics table by segment, NRR and GRR by plan, the pricing and packaging grid filled in, the list of leaks with an amount next to each, and the tests you propose. Each finding then goes into the prioritization grid with the others.
Your next step: export 12 months of invoices, build mrr_by_account and fill the unit economics table for your own plans. Anything you can’t compute, CAC by plan being the usual suspect, goes straight to the data reliability list.