Burn Rate & Cash Runway - revised
Burn Rate & Cash Runway - revised: a 6-step workflow for QuickBooks / spreadsheet data over columns like section, account, 2025-09, 2025-10. Every step is plain SQL you can read — open it, connect your data, and make it your own. No data is shared in this template, only the recipe.
6 steps · September 1, 2026
No data is shared in this template. It contains only the recipe — column names and SQL logic. When you run it, your data is processed in your own browser and never leaves your machine.
What data it expects
QBO_ProfitAndLoss_Month.csv
section · VARCHARaccount · VARCHAR2025-09 · DOUBLE2025-10 · DOUBLE2025-11 · DOUBLE2025-12 · DOUBLE2026-01 · DOUBLE2026-02 · DOUBLE2026-03 · DOUBLE2026-04 · DOUBLE2026-05 · DOUBLE2026-06 · DOUBLE2026-07 · DOUBLE2026-08 · DOUBLETotal · DOUBLE
Connect QuickBooks Online or drop a CSV / Excel export with a similar layout — the AI adapts the workflow if your columns differ.
How it works — every step, readable
- 01Load 12-month P&L
SELECT * FROM read_csv_auto('QBO_ProfitAndLoss_Month.csv', header=true) - 02Unpivot to monthly lines
WITH typed AS ( SELECT section, account, TRY_CAST(COLUMNS(* EXCLUDE (section, account)) AS DOUBLE) FROM input_1 ) UNPIVOT typed ON COLUMNS(* EXCLUDE (section, account)) INTO NAME period VALUE amount - 03Monthly income, spend, netaggregates rows into summary totals · buckets values by condition · sorts the output
SELECT period, ROUND(SUM(CASE WHEN section ILIKE 'income%' THEN amount ELSE 0 END), 0) AS income, ROUND(SUM(CASE WHEN section NOT ILIKE 'income%' THEN amount ELSE 0 END), 0) AS spend, ROUND(SUM(CASE WHEN section ILIKE 'income%' THEN amount ELSE -amount END), 0) AS net FROM input_1 GROUP BY period ORDER BY period - 04Burn trend (3-month average)computes running / windowed totals · sorts the output
SELECT period, income, spend, net, ROUND(AVG(net) OVER (ORDER BY period ROWS BETWEEN 2 PRECEDING AND CURRENT ROW), 0) AS net_3mo_avg FROM input_1 ORDER BY period - 05YOUR cash balance - edit me
SELECT 50000 AS cash_on_hand - 06Months of runwaybuckets values by condition · sorts the output
WITH burn AS (SELECT -AVG(net) AS avg_monthly_burn FROM (SELECT net FROM input_2 ORDER BY period DESC LIMIT 3)) SELECT c.cash_on_hand, ROUND(b.avg_monthly_burn, 0) AS avg_monthly_burn_last3, CASE WHEN b.avg_monthly_burn <= 0 THEN NULL ELSE ROUND(c.cash_on_hand / b.avg_monthly_burn, 1) END AS months_of_runway FROM input_1 c, burn b
Run this on your books
Free to try — no sign-up, no card. The workflow runs in your browser; your data never leaves your machine.
Make it your own →