Blog · How-to guides · Finance and FP&A teams
Create a Google Sheets revenue waterfall from monthly customer revenue and signed changes. Reconcile every bridge component to independently reported closing revenue before formatting the chart.
Create a revenue waterfall chart in Google Sheets by arranging opening revenue, signed changes and a final subtotal that represents closing revenue. Prove the bridge against an independent revenue total before formatting it. The chart should explain the change; it cannot establish whether the source revenue is complete.
This example compares August and September 2026 recognized revenue for a US distributor in USD. Both periods cover the same entity, revenue accounts and customer scope. Retain the invoice, credit and journal references behind the monthly customer totals.
Use one customer ID across both months and include the union of the customer lists. A customer appearing in only one export still needs a row. Enter zero only after confirming that the missing month has no revenue; an incomplete export is not evidence of a zero.
On a Customers tab, use A for customer ID, B for August revenue, C for September revenue, D for movement and E for driver. These are the complete monthly balances for the example:
| Customer | August revenue (USD) | September revenue (USD) | Movement (USD) | Driver |
|---|---|---|---|---|
| A | 400,000 | 540,000 | 140,000 | Expansion |
| B | 0 | 60,000 | 60,000 | New |
| C | 300,000 | 255,000 | -45,000 | Contraction |
| D | 35,000 | 0 | -35,000 | Lost |
| E | 265,000 | 265,000 | 0 | Unchanged |
| Total | 1,000,000 | 1,120,000 | 120,000 |
The totals sit below the data and must stay outside all customer ranges. In D2 enter this formula and fill through D6:
=C2-B2
For this nonnegative revenue example, E2 can classify each customer:
=IF(AND(B2=0,C2>0),"New",IF(AND(B2>0,C2=0),"Lost",IF(D2>0,"Expansion",IF(D2<0,"Contraction","Unchanged"))))
Fill through E6. Review customer IDs with negative net revenue separately, because refunds can make these simple rules misleading. Also validate new and lost labels against customer records before presenting them as business events.
On Bridge, put the independent September revenue report total, 1120000, in E2. The August control report must separately agree with the opening customer total. Use the following layout in A1:B6, including headers:
| Row | A: Label | B: Amount (USD) | Formula in B |
|---|---|---|---|
| 2 | August revenue | 1,000,000 | =SUM(Customers!B2:B6) |
| 3 | Expansion | 140,000 | =SUMIFS(Customers!$D$2:$D$6,Customers!$E$2:$E$6,A3) |
| 4 | New | 60,000 | Copy B3 down |
| 5 | Contraction | -45,000 | Copy B3 down |
| 6 | Lost | -35,000 | Copy B3 down |
Google's SUMIFS documentation supports conditional sums; here the driver label selects customer movements. Keep labels identical to the classification column. A typo can omit an entire movement category without creating a formula error.
The revenue change is 140,000 + 60,000 - 45,000 - 35,000 = $120,000. Adding that to opening revenue gives $1,120,000. Growth is 120,000 / 1,000,000 = 12.0%, rounded to one decimal place.
These categories describe changes in customer revenue, rather than separate price and volume effects. Do not add another price effect on top of expansion that already contains it. The Excel waterfall guide covers the corresponding workbook approach when the source file uses that application.
Select Bridge!A1:B6, choose Insert > Chart, and choose Waterfall chart under the chart type settings. The first column supplies labels and the numeric column supplies amounts. Google's waterfall chart guide describes this layout and how values add to or subtract from a starting value.
Under Customize > Series, add a final subtotal after the Lost movement and label it September revenue. The subtotal should show $1,120,000 from the baseline. Opening revenue also begins at the baseline; movement bars float between successive running balances. Covirage is not affiliated with Google or Microsoft.
Use the running balances below to inspect the picture:
| Position | Running revenue (USD) |
|---|---|
| Opening August revenue | 1,000,000 |
| After expansion | 1,140,000 |
| After new customers | 1,200,000 |
| After contraction | 1,155,000 |
| After lost customers | 1,120,000 |
Show dollar labels and a title naming the measure and comparison periods. Keep the business sequence rather than sorting bars by size. Do not include an additional closing-value row as an ordinary movement; that would add the ending revenue again.
For charts built from grouped summaries, the separate pivot chart walkthrough covers that workflow. A burndown chart in Google Sheets answers a different question about remaining work, rather than revenue movements.
The main reconciliation compares the calculated close with the independently supplied September total:
=B2+SUM(B3:B6)-$E$2
That returns 1,000,000 + 120,000 - 1,120,000 = $0. Google's SUM reference documents adding a range; the range here contains only movements, excluding the opening balance and chart subtotal.
A second check compares grouped movements with all customer changes:
=SUM(B3:B6)-SUM(Customers!D2:D6)
This also returns zero. Review row-level classifications as well: offsetting omissions can pass a total check. All dollar figures here are whole dollars, so the reconciliation needs no rounding allowance. When updating the workbook, extend every range together and retain the independent control report.
Upload the revenue workbook or Google Sheet with its customer IDs, period totals and supplied driver classifications. Covirage maps the columns, its tools compute and check the figures, and the external AI model explains the results with every figure traced to its rows. Create a free Covirage account, then set up your business and bring a sample of your own data.
See Covirage for spreadsheet analysis for the related file-based work.
No. Closing revenue is the balance after the movements, not an additional increase. In this layout, chart the opening balance and signed changes, then add a final subtotal through the chart's Series settings. Keep independently reported closing revenue in a separate control cell.
Yes. Compare matched customer IDs between periods, distinguish genuinely new and lost accounts from changes on continuing accounts, and sum the signed differences. Confirm that renamed or merged IDs are mapped consistently so an administrative change does not appear as churn.
Common causes are missing customers, duplicate movements, inconsistent credit treatment or different period scopes. Compare the source totals first, then check that every customer-level change appears in exactly one driver category. Keep any unresolved difference visible until its cause is identified.
No. A revenue waterfall explains a change between comparable revenue totals. A recognition schedule determines when amounts are recognized under the company's accounting policy. Build this bridge from the reported revenue measure, with the recognition treatment already applied consistently across periods.