River
Y CombinatorBacked by Y Combinator
FREE TEMPLATE

Zero-Based Budget Review Template

Two documents and three sheets that build every cost package from the ledger itself, then carry a promise forward until it is kept.

Free download  ·  No account needed

Every zero-based budgeting template hands a manager the same blank decision-package form: a description field, a cost field, a justification field. The manager still has to know, or go find out, what the package actually costs before typing anything in. A review built on declared numbers spends its first round fact-checking a guess against the ledger rather than challenging it. The zero in zero-based only means something once the starting number is real.

Ridgemont Instruments, Inc., an illustrative precision-instruments manufacturer, ran this cycle's review on its IT and Software cost center. Ten packages, built directly from the trailing-twelve-month general ledger rather than declared by anyone, came to 427,800.00. IT's own declared understanding of those same ten packages, before the ledger was pulled, totaled 410,700.00, a 17,100.00 gap. Part of it was a 9,600.00 e-signature contract that no manager's declared budget claimed at all, set up by an employee who left in 2023 and auto-renewed ever since.

Salesforce's declared 88,200.00 turned out to be 94,500.00, once a Q3 true-up invoice for 18 unused add-on seats surfaced in a separate account. A legacy CRM contract closed last cycle as justified but temporary, on a promise to finish a migration by March 2026. This cycle's log surfaced it the moment that date passed, and closed it once IT confirmed the work was done. Zero-based budgeting shifts the burden of proof to the manager, and a decision package is built to be ranked against competing units.

Every package priced from the ledger, every promise tracked until it is kept

The register with its declared-versus-actual gap, the challenge log carrying a promise across cycles, and the savings tracker by cause.

Cost Package Register

Ridgemont Instruments, Inc., an illustrative precision-instruments manufacturer. IT & Software cost center, ten packages, all ten built from trailing-twelve-month general ledger detail.

PackageVendorGL ActualDeclaredDecisionApproved
Cloud HostingAWS186,400186,400Keep186,400
CRM LicensesSalesforce94,50088,200Reduce90,650
Design SuiteAdobe CC22,80022,800Reduce14,250
Video ConferencingZoom14,30014,300Keep14,300
Team MessagingSlack31,20031,200Keep31,200
Legacy CRMLegacyLeads Inc.18,60018,600Eliminate0
E-Signature (dup.)Adobe Sign9,6000, undeclaredEliminate0
E-SignatureDocuSign16,80016,800Keep16,800
Support DeskZendesk27,40027,400Keep27,400
WhiteboardingMiro6,2005,000Keep, flagged6,200
TOTAL427,800410,700387,200

The register is built from the ledger first: 427,800 of real trailing-twelve-month spend. IT’s own declared understanding of the same ten packages totaled 410,700, a 17,100 gap, 4 percent of the real baseline, that included a 9,600 e-signature contract nobody had declared as theirs at all.

Challenge Log

Every question is logged against the exact dollar gap that raised it. One row carries a promise from last cycle back into this one.

CyclePackageRaisedAnswerResolution
FY2026Legacy CRMWhy still pay for LegacyLeads eighteen months after Salesforce was licensed?Migration blocked on data cleanup; will finish by March 2026, cancel then.Justified, temporary · re-challenge Mar 2026
FY2027Legacy CRMRe-challenge date passed. Did the March 2026 migration complete?Yes, completed February 2026; contract terminated April 1, 2026.Confirmed · Eliminate
FY2027CRM LicensesActual is 94,500 against a declared 88,200, a 6,300 gap. What accounts for it?18 add-on seats from a Q3 true-up invoice; only 7 in active use.Reduce to 7 add-on seats
FY2027E-Signature (dup.)No owner on file. Who requested this, and is it still needed?No current owner; set up in 2023 by an employee no longer here, auto-renewed since.Eliminate, consolidate
FY2027WhiteboardingDeclared ~5,000; actual is 6,200 on 40 paid seats. Confirm usage.Active count not yet tracked; audit to run before next cycle.Keep, re-challenge Aug 2027

The FY2027 Legacy CRM row does not open a new question. It quotes the FY2026 promise back and asks only whether it was kept, which is why the log carries a re-challenge date at all rather than a plain status.

Savings Tracker

Every dollar here is actual minus approved. A package being reduced contributes only the difference; only a package going to zero contributes its full spend.

PackageCategoryActualApprovedSavings% of package
CRM LicensesSeat right-size94,50090,6503,8504.1%
Design SuiteSeat right-size22,80014,2508,55037.5%
Legacy CRMElimination, migration done18,600018,600100.0%
E-Signature (dup.)Elimination, duplicate tool9,60009,600100.0%
TOTAL, IT & Software427,800387,20040,6009.5%

40,600 of savings on a 427,800 real baseline, 9.5 percent, split three ways: two seat right-sizes, one finished migration finally acted on, and one duplicate tool nobody had noticed was still running.

What's in the pack

01

Cost Package Register

Every package's trailing-twelve-month actual, pulled from the ledger by vendor and account before anyone is asked a question, with what was declared for it recorded alongside so the gap between the two is visible rather than assumed away.

02

Challenge Log

Every question raised, the answer that came back and who gave it, and a re-challenge date on anything closed as temporary. A promise resurfaces on its own the moment its date passes, not after someone remembers it was made.

03

Savings Tracker

The dollar and percentage savings behind every package that changed, grouped by cause: a seat right-sized to usage, a duplicate tool retired, or a package eliminated outright, against the real ledger-built baseline rather than a guess.

04

ZBB Instructions

What goes out to cost-center owners before the review: which packages get challenged, and how to answer one with a real date rather than 'soon.' What happens to a package with no answer by the deadline is covered too.

05

Cost Package Review Note

The memo for whoever approves the budget: the real baseline, the approved total and the savings between them, findings largest first, and any package still held open named specifically rather than folded into the total silently. Once approved, that total is what the annual budget attributes against the ledger.

06

Space rule

A package's number comes from the ledger, never from what a manager reports it costs, and a challenge past its stated re-challenge date is not allowed to go quiet. It governs every prompt in the space.

How to use it

  1. 1

    Open in River, or download it

    Open the pack in River and let the agent build the register from your own ledger, or download the blank Word and CSV files instantly with no account.

  2. 2

    Send the trailing-twelve-month ledger

    General ledger detail for the cost center under review, by vendor and account. This builds the Cost Package Register before anyone answers a single question about it.

  3. 3

    Run the challenge round

    Only packages that need a question get one: new packages, unowned packages, seats paid beyond what is active, and anything carried forward from last cycle with a passed date.

  4. 4

    Close the Savings Tracker

    Once every package has a decision, the tracker totals the savings by cause and states it against the real baseline, ready for the memo that goes to whoever approves the budget.

Frequently asked questions

Is this template free?

Completely. Take the Word documents and CSV sheets with no signup, no card and no trial. Edit with AI is an optional second path for anyone who would rather the agent build the register from a real ledger export than start from a blank form. More packs sit in the template library.

What counts as a package that needs a challenge?

One whose actual spend materially exceeds what was declared for it, one with no owner or justification on file, one whose paid seats materially exceed its active ones, or one new to the register with no history yet. A package that clears all four carries forward with no action needed.

How is this different from a decision-package spreadsheet?

A spreadsheet still needs someone to type in a package's cost before it can be challenged. This pack reads that number from the ledger first, so a declared figure is a cross-check, not the only number on file. Two related packs sit elsewhere: the cost reduction plan for an immediate cut, the department budget request for what a department wants to spend.

What happens to a promise from last cycle's review?

It carries a re-challenge date. When that date passes, the same package resurfaces with the exact promise quoted back, asking only whether it was kept, rather than opening a fresh question that erases the history already on file.

Does eliminating a package always count as full savings?

Only when it goes to zero. A package that is reduced, like a seat count right-sized to usage, contributes only the difference between its old and new levels to the Savings Tracker, never its whole prior spend.

What if I do not have ledger detail broken out by vendor?

Account-level detail with vendor names in the description field is enough; the register groups transactions from there. What is harder to substitute is the trailing twelve months of it, since a shorter window understates anything billed annually or quarterly rather than monthly.

What format are the downloaded files?

Two .docx documents, ZBB Instructions and the Cost Package Review Note, plus three .csv sheets, all in one zip, filled in for the sample company so the structure is visible before a real ledger is sent. Everything opens natively in Word, Pages, Google Docs, Excel, Numbers and Sheets.

Review a cost center against its own ledger

Download the blank pack as a Word document and CSV files, or open it in River and let the agent build the register from your ledger.

Edit with AI