A CFO KPI dashboard fits on one page and answers five questions: how much cash do we have, are we on budget, what is our margin, who owes us money, and how reliable is the forecast. Ten numbers cover those questions. The rest belongs on drill-through pages.
Below are the ten, the layout that keeps them readable, and the DAX for the three people most often ask about.
Which ten numbers belong on a CFO KPI dashboard?
- Cash balance and the 13-week cash forecast.
- Revenue against budget and prior year.
- Gross margin %.
- Operating expenses against budget.
- EBITDA against budget.
- Days sales outstanding (DSO).
- Days payable outstanding (DPO).
- Working capital.
- Forecast accuracy: how far last month's forecast was from the actual.
- Top risks: the three accounts or lines furthest from plan.
Each number needs one written definition and one owner. If two teams calculate revenue differently, settle that before anyone designs a chart.
How should the page be laid out?
Put the answer to "are we okay?" in the top row: cash, revenue vs budget, margin and EBITDA as four cards, each with a variance against plan and a colour that means something. Put trends in the middle row. Put the working-capital block (DSO, DPO, working capital) in the bottom row, because a CFO scans for a problem there, not a story.
Show variance as a number and a percentage, never colour alone. Fix the colour rule once: red when the variance hurts, green when it helps, and agree the thresholds with the finance team, not the designer.
How do you calculate margin, DSO and budget variance in DAX?
Three measures cover most of the first two rows. Assume a date table marked as a date table, and base measures [Revenue], [COGS], [Closing Receivables], [Credit Sales], [Opex Actual] and [Opex Budget] already defined.
Gross Margin % =
DIVIDE ( [Revenue] - [COGS], [Revenue] )
DSO =
VAR DaysInPeriod = DISTINCTCOUNT ( 'Date'[Date] )
RETURN
DIVIDE ( [Closing Receivables], [Credit Sales] ) * DaysInPeriod
Opex Variance % =
DIVIDE ( [Opex Actual] - [Opex Budget], [Opex Budget] )
DIVIDE returns blank instead of an error when the denominator is zero, which keeps a visual from breaking in an empty month. DSO uses the days in the selected period, so the same measure works for a month, a quarter or a year. [Closing Receivables] must be a closing-balance measure, for example one that reads the balance on the last date of the period, so that multi-month totals never add balances together.
How do you check the numbers before the CFO sees them?
Test each measure against a figure finance already trusts. Worked example, with made-up numbers, for a 30-day month:
| Measure | Inputs | Result |
|---|---|---|
| Gross margin % | Revenue 1,000,000; COGS 640,000 | 36.0% |
| DSO | Closing receivables 420,000; credit sales 700,000; 30 days | 18 days |
| Opex variance % | Actual 212,000; budget 200,000 | +6.0% |
Work each one by hand: (1,000,000 - 640,000) / 1,000,000 = 0.36. 420,000 / 700,000 = 0.6, and 0.6 x 30 = 18. (212,000 - 200,000) / 200,000 = 0.06. If the dashboard shows anything different for the same inputs, the measure or the data is wrong, and you find out before the meeting.
How often should it refresh?
Match refresh to the decision. Cash and receivables move daily, so refresh them daily. Margin and budget variance depend on month-end close, so a daily refresh adds nothing until the books are final. Show the last refresh time on the page, so nobody argues about whether a number is current.
I have built this pattern as a CFO budget-vs-actual tracker. The KPI frameworks service page describes how the scope is set, and the article on designing effective KPIs covers choosing the metrics themselves.
What is the short version?
Pick ten numbers, define each once, show variance against plan, and test every measure against a figure finance trusts. A dashboard built this way gets used in the board pack, not just admired.
Frequently asked questions
What KPIs should a CFO dashboard show?
Cash and cash forecast, revenue against budget, gross margin, operating expenses, EBITDA, DSO, DPO, working capital, forecast accuracy and the top risks. Keep it to ten numbers on one page. Everything else sits one click away on a drill-through page.
What is a good DSO?
It depends on your payment terms and industry, so compare DSO with your own terms first. If you invoice on 30-day terms and DSO is 45, customers pay 15 days late on average. Track the trend month to month, because a rising DSO signals trouble earlier than a single month does.
Should the dashboard show budget or forecast?
Show both, labelled clearly. Budget is the original plan and does not move. Forecast is the current best view and changes each month. The gap between them is itself a KPI: forecast accuracy tells the CFO how much to trust the next number.
Can this be built from Excel?
Yes, as a first version. Power BI reads Excel files, and many finance dashboards start there. The risk is manual copying, so move the source to the ERP or accounting system once the definitions are agreed. The Excel-to-Power BI readiness check scores how ready your files are.
How long does a CFO dashboard take to build?
It depends on the number of sources and how clean the data is, so a fixed number before discovery is a guess. One accounting system with agreed definitions is a smaller job than several systems with competing ones. Agree the ten metrics first; it shortens everything after.
Phoenix Solutions, the Power BI and analytics consultancy in Ahmedabad, builds finance and KPI dashboards for teams worldwide. See KPI frameworks or Book a free 30-minute call.
