- Split the contract value into one allocation per calendar year, by when its work will be accepted.
- The allocations must add up to the contract value, exactly.
- Each year's allocation counts as committed against that year's budget, whatever the signing date.
- Actuals in a year should not exceed that year's allocation. When they would, re-phase.
The problem with the signing date
Project ALPHA signs a data platform contract on 10 December 2025, worth 1,500,000 EUR. Work starts in January 2026 and ends in June 2027. Here is the same contract counted two ways against ALPHA's budgets:
| Year | Budget | Committed by signing date | Uncommitted | Committed, phased | Uncommitted |
|---|---|---|---|---|---|
| 2025 | 100,000 | 1,500,000 | −1,400,000 | 0 | 100,000 |
| 2026 | 1,100,000 | 0 | 1,100,000 | 1,000,000 | 100,000 |
| 2027 | 500,000 | 0 | 500,000 | 500,000 | 0 |
By signing date, 2025 is over-committed by 1.4 million, and 2026 appears to have 1.1 million free for new contracts. Neither is true. Phased, each year shows what is really left: 100,000 in 2025 and 2026, and nothing in 2027.
How to phase a contract
- Start from the delivery schedule. List the contract's deliverables or milestones, each with an amount and the month you expect to accept it. Use the contract's own payment or milestone schedule where it has one.
- Sum the amounts by calendar year of expected acceptance. That gives one allocation per year.
- Check the total. The allocations must add up to the contract value. A difference of even one euro means money counted twice or not at all.
- Record the allocations with the contract, not in a separate budget sheet, so they change together.
| Milestone | Expected acceptance | Amount | Year |
|---|---|---|---|
| Design | March 2026 | 300,000 | 2026 |
| Build, release 1 | July 2026 | 400,000 | 2026 |
| Build, release 2 | November 2026 | 300,000 | 2026 |
| Rollout | March 2027 | 350,000 | 2027 |
| Hypercare | June 2027 | 150,000 | 2027 |
| Annual phasing | 2026: 1,000,000 · 2027: 500,000 | 1,500,000 | = value |
Phase by the same document you use for actuals. If actuals are accepted work, phase by expected acceptance. If they are paid invoices, phase by expected payment. Mixing the two moves money between years.
Keep the contract value and the budget on the same basis, both with VAT or both without.
Tracking actuals per year
Once a contract is phased, there are two balances to watch:
- Per year: actuals dated in a year against that year's allocation. Accepting 1,100,000 in 2026 against an allocation of 1,000,000 means either the phasing is out of date or work was accepted early, and 2026's committed figure is understated by 100,000.
- Over the contract's life: the open balance, contract value − all acceptances to date. If it goes negative, more was accepted than was contracted.
Also check each acceptance date against the contract's start and end dates. A certificate dated before the contract started, or after it ended, usually means a typing error or a certificate posted to the wrong contract.
When delivery slips
Suppose release 2 slips from November 2026 to February 2027. Move its 300,000 to the next year, keeping the total:
| Phasing | 2026 | 2027 | Total |
|---|---|---|---|
| Before | 1,000,000 | 500,000 | 1,500,000 |
| After | 700,000 | 800,000 | 1,500,000 |
Two consequences are easy to miss:
- 2026 now shows 300,000 more uncommitted budget. It isn't free money. The work still has to be paid for, in 2027. Whether 2026's budget can be released depends on your organisation's rules.
- 2027 now needs 800,000, not 500,000. If the 2027 budget was approved at 500,000, the project is over-committed next year. Better to know before that budget is approved.
Once the books for a year are closed, leave that year's allocation alone. Changing it rewrites a year that has already been reported.
In a spreadsheet
Give the contracts sheet one column per year and a check column. With a table named Contracts that has the columns Project, Value, 2026 and 2027:
And for the actuals of one contract in one year, from a Certificates table with Contract, Date and Amount columns:
Add a column per year when a contract runs longer, and remember to extend every formula that sums across the year columns. Our free portfolio budget tracker has this layout ready, including one contract whose phasing deliberately doesn't add up, so you can see the check fire.
Five rules to keep
- The year allocations add up to the contract value.
- Acceptances on a contract don't exceed its value.
- Acceptances in a year don't exceed that year's allocation.
- Every acceptance is dated within the contract's start and end dates.
- Committed for a year (the sum of that year's allocations) doesn't exceed the year's budget.
Breaking a rule isn't always wrong: work does get accepted early. But each break should be a decision someone made, not something nobody saw.
Annual phasing in Jira
In Ledgerman, every contract carries its annual phasing, and each year's allocation counts as committed against that year's budget. Ledgerman checks the five rules above for every contract and project, shows the problems on the project page and the portfolio, and locks the allocations of years whose books are closed.