Price volume mix analysis: why you grew but margin fell
Price volume mix analysis with a fully worked example: an additive decomposition where price, volume and mix sum exactly to the revenue change.
Price volume mix analysis splits a revenue change into three effects: price (new price minus old price, times current units), volume (prior revenue times total unit growth) and mix (each line's units above or below its proportional share, at prior prices). The three sum exactly to the change — in our example, $11,400 + $624,000 − $496,000 = $139,400.
Key takeaways
- Price volume mix analysis breaks a revenue change into three additive effects that must sum exactly to the total change. If they do not, the decomposition is wrong.
- Volume is the growth every line would have had at the overall unit growth rate. Mix is each line's deviation from that proportional share, valued at prior prices.
- Mix is the effect that explains "we sold more units and made less money": in the worked example, 15% unit growth produced only 3.4% revenue growth because mix cost $496,000.
- State your convention in writing. Price × current volume and price × prior volume give different splits, and both are defensible — but only one can be yours.
- New and discontinued products have no comparable price. Give them their own column rather than forcing them into the price effect.
Revenue was up. Units were up more. Gross margin percentage was down. Nobody changed a price list. This combination shows up in board packs constantly, and "it's mix" is the answer that gets muttered without being measured. Price volume mix analysis measures it, and does so in a form that has to tie to the total revenue change exactly, which makes it hard to fudge.
- Price volume mix analysis
- A decomposition of the change in revenue between two periods into three parts: the effect of selling at different prices, the effect of selling a different total number of units, and the effect of those units being distributed differently across products. Together the three account for the whole change.
State your convention before you calculate anything
There is no single correct decomposition. The cross term — the interaction between a price change and a volume change — has to be allocated somewhere, and different companies allocate it differently. What matters is that you pick one, write it down, and use it every period. Here is the convention used throughout this article:
For each product line i, with prior period 0 and current period 1:
g = total units in period 1 ÷ total units in period 0
Price effect = (P1 − P0) × Q1
Volume effect = P0 × Q0 × (g − 1)
Mix effect = P0 × (Q1 − Q0 × g)
Sum of all three, across all lines = Revenue1 − Revenue0Why it closes: the price and volume effects for one line collapse algebraically to P1Q1 − P0Q0, because (P1 − P0)Q1 + (Q1 − Q0)P0 = P1Q1 − P0Q0. Splitting that (Q1 − Q0)P0 term into a proportional part (volume) and a residual (mix) leaves the total untouched, since P0·Q0(g − 1) + P0(Q1 − Q0·g) = P0(Q1 − Q0). No plug, no rounding line, no residual bucket.
| Convention choice | What it means | Trade-off |
|---|---|---|
| Price × current volume (used here) | The cross term is attributed to price | Price effect reflects money actually earned or given away this period. Slightly overstates price when volume grew. |
| Price × prior volume | The cross term is separated as a fourth 'price/volume' effect | Cleaner in theory, four columns to explain instead of three. Commercial teams find the fourth column unownable. |
| Mix measured on revenue share rather than unit share | Mix reflects shifts in revenue weighting, not unit weighting | Avoids nonsense when products have wildly different prices or units are not comparable. Harder to reconcile to a volume story. |
Worked example: three product lines
A distributor with three lines. Unchanged unit costs, so the margin story below is entirely price and mix.
| Line | Prior units | Prior price | Prior revenue | Current units | Current price | Current revenue |
|---|---|---|---|---|---|---|
| A — Standard | 40,000 | $50.00 | $2,000,000 | 44,000 | $48.50 | $2,134,000 |
| B — Premium | 10,000 | $180.00 | $1,800,000 | 9,000 | $186.00 | $1,674,000 |
| C — Accessory | 30,000 | $12.00 | $360,000 | 39,000 | $12.60 | $491,400 |
| Total | 80,000 | — | $4,160,000 | 92,000 | — | $4,299,400 |
That gap is the whole story: 15.0% more units produced 3.4% more revenue. Total unit growth g = 92,000 ÷ 80,000 = 1.15. Now compute each effect.
Price effect: (P1 − P0) × Q1
- A: ($48.50 − $50.00) × 44,000 = −$1.50 × 44,000 = −$66,000
- B: ($186.00 − $180.00) × 9,000 = $6.00 × 9,000 = +$54,000
- C: ($12.60 − $12.00) × 39,000 = $0.60 × 39,000 = +$23,400
- Total price effect = −$66,000 + $54,000 + $23,400 = +$11,400
Volume effect: prior revenue × (g − 1)
- A: $2,000,000 × 0.15 = +$300,000
- B: $1,800,000 × 0.15 = +$270,000
- C: $360,000 × 0.15 = +$54,000
- Total volume effect = $4,160,000 × 0.15 = +$624,000
This is the counterfactual: if every line had grown 15% at last year's prices, revenue would have risen $624,000. It did not, because the growth was not proportional.
Mix effect: P0 × (Q1 − Q0 × g)
- A: proportional share = 40,000 × 1.15 = 46,000 units; actual 44,000; shortfall 2,000 × $50 = −$100,000
- B: proportional share = 10,000 × 1.15 = 11,500 units; actual 9,000; shortfall 2,500 × $180 = −$450,000
- C: proportional share = 30,000 × 1.15 = 34,500 units; actual 39,000; surplus 4,500 × $12 = +$54,000
- Total mix effect = −$100,000 − $450,000 + $54,000 = −$496,000
The reconciliation
| Line | Price | Volume | Mix | Total change | Check |
|---|---|---|---|---|---|
| A — Standard | −$66,000 | +$300,000 | −$100,000 | +$134,000 | $2,134,000 − $2,000,000 ✓ |
| B — Premium | +$54,000 | +$270,000 | −$450,000 | −$126,000 | $1,674,000 − $1,800,000 ✓ |
| C — Accessory | +$23,400 | +$54,000 | +$54,000 | +$131,400 | $491,400 − $360,000 ✓ |
| Total | +$11,400 | +$624,000 | −$496,000 | +$139,400 | $4,299,400 − $4,160,000 ✓ |
Enter prior and current price and volume for up to five lines and get the price, volume and mix split, with the reconciliation to total revenue change.
The one-sentence narrative
The point of the arithmetic is to produce a sentence a non-finance executive can repeat. From the table above: revenue grew $139,400 because 15% unit growth added $624,000, offset by $496,000 of mix as 1,000 Premium units at $180 were replaced by 9,000 Accessory units at $12, with net pricing roughly flat at $11,400.
Note what that sentence does. It names the driver, gives the number, and identifies the physical event behind it. It does not say "unfavourable mix variance". This kind of construction is the backbone of a defensible budget vs actual variance analysis too — the arithmetic is the same, with budget in place of the prior period.
Extending it to gross profit
Revenue mix is interesting. Margin mix is what the CFO wants. Add unchanged unit costs — A $32.00, B $99.00, C $8.40 — and recompute.
| Line | Prior contribution/unit | Prior gross profit | Current contribution/unit | Current gross profit |
|---|---|---|---|---|
| A — Standard | $18.00 (36.0%) | $720,000 | $16.50 (34.0%) | $726,000 |
| B — Premium | $81.00 (45.0%) | $810,000 | $87.00 (46.8%) | $783,000 |
| C — Accessory | $3.60 (30.0%) | $108,000 | $4.20 (33.3%) | $163,800 |
| Total | — | $1,638,000 | — | $1,672,800 |
Check the blended margins: $1,638,000 ÷ $4,160,000 = 39.38%, and $1,672,800 ÷ $4,299,400 = 38.91%. Two of the three lines improved their own margin percentage: B rose from 45.0% to 46.8% on a $6 price increase, and C rose from 30.0% to 33.3% on a 60-cent one. Only A fell, from 36.0% to 34.0%, because its price dropped $1.50 against a flat cost. Yet the blend fell half a point despite gross profit dollars rising $34,800.
If your unit costs also moved between the periods, the margin story needs a fourth effect for cost, and the cleanest way to keep it honest is to compute each line's margin from the same cost basis in both periods — the gross margin calculator does the per-line arithmetic, and the contribution margin calculator does it after variable selling costs, which is the version that tells you which line to push.
Practical rules for building this in a real system
- Choose the grain deliberately. Price volume mix at SKU level on 40,000 SKUs produces a mix effect that is real but unusable. Run it at the level someone owns: product family, brand, channel or customer segment. You can always drill.
- Use realised price, not list price. Average selling price should be net revenue ÷ units after discounts, rebates and credit notes. If your list price is in the calculation, every rebate shows up as mix and the analysis misleads. Model stacked discounts separately with the discount cascade calculator.
- Handle new and lost products explicitly. A line with zero prior units has no prior price, so price and mix are undefined for it. Give new and discontinued products their own columns: a new line's whole current revenue (current price × current units) is incremental, and a lost line's whole prior revenue is a deduction. Forcing either into mix makes mix meaningless.
- Separate currency before you separate mix. In a multi-currency business, translate both periods at the same rate to get a constant-currency price volume mix, then report FX as a fourth effect. Otherwise every devaluation appears as a price cut.
- Units must be comparable within a line. Cases, eaches and pallets in the same unit column produce a mix effect that measures packaging, not commercial behaviour. Normalise to a base unit of measure first.
- Always print the reconciliation row. If price + volume + mix does not equal the revenue change to the dollar, do not publish. A closing check is the cheapest quality gate in reporting.
What each effect tells you to do
| Effect | Owner | What a negative number usually means |
|---|---|---|
| Price | Commercial / pricing | Discounting has drifted, or a price increase never reached the price file. Check realised vs list price by customer. |
| Volume | Sales / demand planning | Lost accounts, lost distribution, or demand softness. Volume is the effect least likely to be a reporting artefact. |
| Mix | Product / category management | Growth is coming from cheaper or lower-margin lines. Either the premium line lost, or promotion pushed the wrong product. |
Getting price and volume by line out of your ERP
The maths is a few multiplications. The effort is assembling matched pairs: net revenue and units by line for two periods, on the same product hierarchy, after credit notes, excluding intercompany, with returns netted against the right period. Product hierarchies change between periods, which is usually where the reconciliation breaks — and it is why this analysis often runs quarterly instead of monthly. Building the ranked revenue base for it is the same exercise as a top customers by revenue report, with the grouping swapped from customer to product.
This is exactly the shape of question was built for. Ask "net revenue and units by product family for this quarter and the same quarter last year, excluding intercompany" and get both periods computed live from your own account, with the query shown underneath so you can confirm how returns and credit notes were treated before you decompose the change.
Frequently asked questions
What is price volume mix analysis?
It is a decomposition of a revenue change into three additive parts: how much came from selling at different prices, how much from selling more or fewer units in total, and how much from those units shifting between products. The three effects must sum exactly to the revenue change, which is what makes the analysis auditable.
What is the formula for the mix effect?
Mix effect = prior price × (current units − prior units × overall unit growth factor). It measures how far each line's units sit above or below its proportional share of total growth, valued at prior prices. A line that grew slower than the total contributes a negative mix effect even if its own units increased.
Why did our margin fall when revenue and units both grew?
Usually mix. Blended margin is total gross profit ÷ total revenue, so it is revenue-weighted. If growth comes from lower-priced or lower-margin lines, the blend falls even when every individual product improves its own margin. In the worked example above, all three lines improved and the blend still dropped 0.5 points.
Do price, volume and mix have to add up to the total revenue change?
Yes, in a properly built decomposition. If they do not, there is an unallocated cross term or a data mismatch — usually new products with no prior price, a changed product hierarchy, or returns posted to a different period. Print the reconciliation line every time and refuse to publish a version that does not close.
How do you handle new products in price volume mix analysis?
Give them a separate column. A new product has no prior price, so price and mix effects are undefined for it; its entire current revenue is incremental. The same applies in reverse to discontinued lines. Forcing either into the mix column inflates mix and destroys the ownership value of the split.
Should price volume mix use list price or realised price?
Realised price: net revenue ÷ units after discounts, rebates and credit notes. Using list price pushes every discount into the mix effect and makes the price column meaningless. If rebates are settled in arrears, accrue them into the period they relate to, or the price effect will swing for reasons nobody can explain.
Calculators for this
Split a revenue change into price, volume and mix effects across up to five product lines. The three effects reconcile exactly to the total variance.
Chain up to four sequential discounts to see the net price, the effective single discount, and the gross margin left at every step of the cascade.
Calculate gross margin from revenue and COGS. Get gross profit, margin %, markup %, margin per unit, and the price you need for a target margin.
Calculate contribution margin per unit and as a ratio, split contribution across product lines, and see which line to push against a capacity constraint.
Keep reading
Build a budget vs actual variance analysis that holds up: materiality thresholds, price/volume/mix drivers, and timing versus permanent.
Margin vs markup, settled: both formulas, a checked conversion table, and the pricing error that quietly costs you dollars per unit.
Build a top customers by revenue report in NetSuite, and see why revenue, invoiced and collected give three different rankings of the same customers.
Break-even analysis explained with real numbers: contribution margin, break-even units and revenue, margin of safety, and the multi-product trap.