Method · 5 min read
How to build a revenue bridge that reconciles
A revenue bridge is only worth showing if the bars add up to the gap. Here is how to get there from a plain sales export, and where most attempts quietly go wrong.
What a revenue bridge is
A revenue bridge (or sales bridge) walks from the revenue of a baseline period to the revenue of the current period, one explanation at a time. It is drawn as a waterfall: two full bars for the two periods, and floating bars in between for each effect that pushed revenue up or down.
The bars are not a ranking, and not a decomposition of the total. They are a decomposition of the change. That distinction matters when you frame the axis: bar heights compare movements, not the size of the business.
Revenue bridge · 2025-H1 → 2025-H2
The four columns you need
Four columns are enough, and any export from a decent system already has them.
| Column | What it holds | What goes wrong without it |
|---|---|---|
| Period | A label: 2026-05, FY25, Q3. Never a guessed date. | Nothing to compare. |
| Product | A stable identifier, one row per product and period. | Price and mix collapse into a single average. |
| Quantity | Units sold. Negative values are returns, and are kept. | No volume effect, and no unit price. |
| Net revenue | The amount actually invoiced for those units. | No bridge at all. |
Two rules about the file itself cause more trouble than the arithmetic ever does. First, one row per product and period: if the same product appears twice in the same period, the rows have to be summed before anything is computed, or the average price is wrong. Second, the numbers must be read in the file's own convention, semicolons and decimal commas included, because a European export read as an American one is off by a factor of a thousand and still looks plausible.
Building it, step by step
- Classify every product. Sold in both periods: continuing. Only in the current one: new. Only in the baseline: discontinued. This step decides everything that follows, and it is the step spreadsheets skip.
- Price, on continuing products only. For each one, the change in average price times the quantity sold in the current period.
- Volume, on continuing products. The change in total units, valued at the baseline average price across those products.
- Mix, on continuing products. What is left of the quantity movement once uniform growth is removed, valued at the distance between each product's baseline price and the baseline average.
- New and discontinued. The current revenue of new products, and minus the baseline revenue of discontinued ones.
- Test it. Add the five effects. The result must equal the observed change, to the cent. If it does not, do not present the chart.
Round nothing along the way. Rounding belongs to the last step, the display. A bridge that only reconciles at two decimals is a bridge that does not reconcile.
Gross price and discount
If your export carries gross revenue as well as net, the price effect splits in two: a gross price effect, which is what your list prices did, and a discount effect, which is what your commercial policy did. The two add up exactly to the price effect, so nothing about the total changes.
This is usually the most uncomfortable pair of bars in the chart. On the sample data above, list prices added 26,129 while discounting gave back 17,256: a price increase that was, in large part, funded away. A single price bar of 8,873 would have hidden that entirely.
Build yours
Skip the template, keep the data
Drop your export, map four columns, read the bridge. Drill-down from total to group to product, top movers, Excel and image exports. It all runs inside your browser: nothing is uploaded, which you can check in the Network panel while you work.
Calculate PVM bridgeReading it to a committee
The bridge earns its keep in the room, not in the file. Four habits make the difference.
- Say the convention out loud. The price effect here is valued at current volumes. Someone will eventually recompute it the other way and get a different split; saying it first turns that into a footnote instead of an argument.
- Lead with the reconciliation. Before any interpretation: these bars add up to the gap, exactly. It buys the rest of the discussion.
- Name the axis if it is framed. When the two period bars are close, the axis has to be framed on the values or the effects become invisible. Heights then compare changes, not totals, and that has to be said.
- Stop at the first surprising bar. A bridge with five bars supports one decision, not five. Take the largest unexpected one and go down to the products behind it.
And when the bars do not add up, say that too. A named gap is a data problem someone can fix this week. A silent one becomes a number nobody trusts for a year.