Dashboard

What goes in a cash flow and runway dashboard?

A cash flow and runway dashboard combines bank or treasury balances with categorized cash movements and a clearly defined burn rate. It should show today's liquidity separately from forecast assumptions.

For:CFO, FP&A, treasury, and founders. Refresh:daily; intraday when treasury decisions require it.Source: modeled finance tables in a Metabase-connected database.

Which cards belong on this dashboard?

  • Available cash by account and currency
  • Base-currency cash balance
  • Weekly inflows, outflows, and net cash flow
  • Net burn and gross burn
  • Cash runway in months
  • 13-week cash movement and forecast
  • Largest unexpected cash movements
  • Restricted cash and transfers in flight

What data does this dashboard need?

  • Daily account balance snapshots with native currency
  • Posted bank or wallet transactions with consistent inflow/outflow signs
  • Approved FX rates for the reporting date
  • Budget or forecast cash movements for the forward-looking view
  • Restricted-cash and minimum-balance classifications

How do you build it?

  1. Sync the source systems into a database and retain raw IDs, timestamps, status, and currency.
  2. Build reconciled models at the business grain this dashboard requires.
  3. Create one saved question per card and certify the shared models and definitions.
  4. Add dashboard filters for Legal entity, account, currency, cash category, date range.
  5. Show refresh time and the latest complete or reconciled period.

Example card SQL

Cash runway from trailing three-month net burnPostgreSQL
WITH monthly_cash_flow AS (
  SELECT
    date_trunc('month', movement_date) AS month,
    SUM(reporting_currency_amount) AS net_cash_flow
  FROM modeled_cash_movements
  WHERE is_posted = TRUE
  GROUP BY 1
), burn AS (
  SELECT AVG(-net_cash_flow) AS average_monthly_net_burn
  FROM monthly_cash_flow
  WHERE month >= date_trunc('month', CURRENT_DATE) - INTERVAL '3 months'
    AND net_cash_flow < 0
)
SELECT
  SUM(reporting_currency_balance) AS available_cash,
  burn.average_monthly_net_burn,
  SUM(reporting_currency_balance)
    / NULLIF(burn.average_monthly_net_burn, 0) AS runway_months
FROM latest_cash_balances
CROSS JOIN burn
WHERE is_restricted = FALSE
GROUP BY burn.average_monthly_net_burn;

Dashboards

Integrations

Metrics

Analytics

FAQ

Should runway use gross or net burn?
Show both. Net-burn runway is common, while gross burn is useful when inflows are volatile or not yet repeatable.
Should restricted cash count?
Only if it is genuinely available for operating obligations. Otherwise show it separately and exclude it from runway.