# Power BI waterfall chart: from revenue to net income, step by step

> Get started with Waterfall Plume: prepare your data, build a waterfall like Power BI's, rename the total, then move on to the price-volume-mix bridge.

- Language: English
- Web page: https://plumevisuals.com/en/tutorials/pont-prix-volume-mix
- Published: 2026-10-04
- Visual: Waterfall Plume, technical reference: https://plumevisuals.com/ai/visuals/waterfall.md
- If an option name in this tutorial differs from the technical reference, the reference is right (it is generated from the visual's code).

## In short

**What is a waterfall?** A waterfall (or bridge) chart shows how you get from one value to another, step by step: a start bar, one bar going up or down for each step, an end bar. Each step bar "floats": it starts where the previous one ends.

Mini example: a simplified income statement.

| Account | Amount |
|---|---|
| Revenue | 1,000 |
| Cost of sales | −400 |
| Staff costs | −250 |
| Rent | −80 |
| Other income | +30 |
| **Result** | **300** |

The waterfall starts at 0, climbs to 1,000, drops by 400, then by 250, then by 80, rises by 30 and ends at 300: you see at a glance where the money goes.

**Waterfall Plume draws two charts:**

- the **classic waterfall**, like Power BI's waterfall chart, plus what users have been asking for for years: a start value, a budget-to-actual bridge, **subtotals** ★ ("Gross margin", "EBITDA"), horizontal bars ★, a hidden or renamed total, a custom order, grouping of small steps ★;
- the **price-volume-mix bridge**, which explains a revenue change between two periods by three effects: you sold more (volume), you sold more expensive products (mix), prices changed (price). The visual computes it product by product, without complex DAX.

The visual picks by itself: as soon as a measure is in **Quantity (price-volume-mix)**, it is the price-volume-mix bridge; otherwise, it is a waterfall. **Format › Waterfall › Chart type** forces one or the other.

- **When to use it:** income statement, cash flow (opening balance → flows → closing balance), variance to budget by department or region, year-over-year change by channel, revenue or margin change explained by price, volume and mix.
- **When to use something else:** to compare values that do not add up (rates, averages), use Bar Plume; to follow a trend over many periods, Line Plume.
- **By the end, you will know how to:** build a waterfall from a table; add a start value and a renamed total; build a budget-to-actual bridge; explain the year-over-year change by channel (Breakdown); add subtotals ★; build a price-volume-mix bridge.
- **What you need:** Power BI Desktop, the Waterfall Plume visual installed (see [the shared basics](/en/tutorials/bien-demarrer-visuels-plume)), a table with a category and an amount. The **PlumeWaterfall-Sample-EN** sample report, in your [**Downloads**](/en/account/downloads) space, shows the waterfall ("3 · Waterfall (new in 1.3)" page) and the price-volume-mix bridge (pages 1 and 2).

## The data to provide

**The expected shape: one row per step.** The **category** (account, department, region…) is a **column**; the **amount** is a **measure** (a calculation that Power BI redoes according to the filters, written in DAX; see the [glossary](/en/tutorials/bien-demarrer-visuels-plume#glossary)). The sign matters: a cost is negative.

Sample dataset (`Result` table, fictitious data):

| Account | Order | Amount |
|---|---|---|
| Revenue | 1 | 1000 |
| Cost of sales | 2 | -400 |
| Staff costs | 3 | -250 |
| Rent | 4 | -80 |
| Marketing | 5 | -60 |
| Other income | 6 | 30 |
| Taxes | 7 | -50 |

In Power BI Desktop, on the **Modeling › New table** tab, paste:

```dax
Result =
DATATABLE (
    "Account", STRING,
    "Order", INTEGER,
    "Amount", DOUBLE,
    {
        { "Revenue", 1, 1000 },
        { "Cost of sales", 2, -400 },
        { "Staff costs", 3, -250 },
        { "Rent", 4, -80 },
        { "Marketing", 5, -60 },
        { "Other income", 6, 30 },
        { "Taxes", 7, -50 }
    }
)
```

Then the measure (**Modeling › New measure**):

```dax
// Adds up the amounts of the filtered rows
Total amount = SUM ( Result[Amount] )
```

To show the accounts in income statement order, select the `Account` column, then **Column tools › Sort by column › Order**. The visual keeps the model order (**Step order** = *Data order (model)*).

**Preparation pitfalls:**

- **The sign.** A cost entered as a positive number goes up instead of down: multiply it by −1 in the measure, or in the table.
- **The order.** Without "Sort by column", Power BI sorts the accounts alphabetically.
- **A subtotal row in your data** ("Gross margin"): either remove it, or declare it as a subtotal ★ (its value is then replaced by the running total; see the how-to guides).
- **Values that do not add up** (rates, averages) make no sense in a waterfall.

For the price-volume-mix bridge, you also need a **quantity**: see the [how-to guide "How do I explain a revenue change by price, volume and mix?"](/en/tutorials/waterfall-plume-cas-pratiques).

## Step by step: your first waterfall in 10 minutes

Start from the `Result` table and the `Total amount` measure.

1. In the **Visualizations** pane, click the **Waterfall Plume** icon. Enlarge the empty frame.
2. Drag the `Account` column to the **Category (or Product)** field.
3. Drag the `Total amount` measure to the **Values (amount)** field. The waterfall appears: 7 step bars, green going up, red going down, then a **Total** bar at 190. The axis starts at zero, like in Power BI.
4. Hover the "Rent" bar. The tooltip gives the amount, its **Share of total** and the **Running total** reached after this step.
5. In the **Format** pane, **Waterfall** card, **Start, subtotals and total** group, type `Net income` in **Total label**.
6. In the **Data labels** card, type `$` in **Prefix**.
7. In the **Bars** card, set **Connector style** to *Solid*.
8. Click the "Marketing" bar: the other visuals of the page are filtered on this account (cross-filtering). Click an empty spot of the visual to clear.
9. In the **Title** card, type `From revenue to net income`.

**Expected result:** a readable waterfall from revenue ($1,000) to net income ($190), in income statement order, with no watermark: this whole walkthrough uses free features.

## Troubleshooting

| What you see | Likely cause | Fix |
|---|---|---|
| A price-volume-mix bridge instead of a waterfall | A measure is in **Quantity (price-volume-mix)** | Remove it, or set **Waterfall › Chart type** to *Waterfall* |
| "Add a "Period" field (at least two values), or the "Reference quantity" and "Reference value" measures." | Price-volume-mix bridge with no period and no reference | Add a Period, or both reference measures |
| Accounts in alphabetical order | No "Sort by column" on the category | **Column tools › Sort by column**, or **Step order** = *Custom list* |
| A cost goes up instead of down | Amount entered as a positive number | Flip its sign in the measure |
| Red "Subtotals not found (unknown step name)" message | Misspelled step name in **Subtotals ★** | Copy the exact name (case does not matter) |
| A "Gap" bar before the end | The measured end value differs from start + steps | Expected: it is the check; review the data or remove **End value (check)** |
| Total bars cut by a zigzag mark | **Start at zero** is off (broken axis) | Turn on **Value axis › Start at zero (otherwise: broken axis)** |
| No percentage in the labels | Waterfall without a start: a share of the total would be misleading | Add a Start value or a Reference value; the share stays in the tooltip |
| A watermark appears | A ★ feature is in use | See the [how-to guide "avoid the watermark"](/en/tutorials/waterfall-plume-cas-pratiques), or add a key |
| Warning icon at the top of the visual | More than 10,000 rows (or products) or 60 periods | Filter the page, or group small steps ★ |

## Key takeaways

- Category + Values = a waterfall from zero with a total at the end, like Power BI; a Quantity = a price-volume-mix bridge.
- Reference value = budget-to-actual bridge; Start value and End value = cash flow with a gap check.
- Breakdown = the change from one category to the next, item by item, like the native visual.
- Subtotals, horizontal bars and grouping of small steps are ★; start, total, order and connectors are free.
- Direction is always written with ▲▼, never shown by color alone.

## Learn more

- [Waterfall Plume how-to guides](/en/tutorials/waterfall-plume-cas-pratiques): recipes for common needs.
- [Waterfall Plume fields and settings](/en/tutorials/waterfall-plume-champs-et-reglages): every field well and every setting.
- [Getting started with Plume visuals](/en/tutorials/bien-demarrer-visuels-plume): installation, license, styles and shared settings.
- The visual's page: [Waterfall Plume](/en/visuals/waterfall). A question? [Support](/en/support).
