Use case · Month-end
Month-end cost reporting on a construction project
The close comes round whether the numbers are ready or not. The work is rarely the reporting itself — it is assembling a cost position from a diary, a set of registers and a Finance export, then defending the differences between them under time pressure.
Foras is built so the position exists before the close starts, and every difference between site and Finance carries a recorded decision.
Northgate Logistics Park — Phase 2
Position · Aug 2026 · Demo data
Captured
£11.85m
Finance
£10.47m
Adjusted CTD
£11.97m
| Cost code | Captured | Finance | DiffDifference | Adjustments | CTDAdjusted CTD | Decision |
|---|---|---|---|---|---|---|
| 150Project Management | £1.84m | £1.78m | £60k | — | £1.84m | Timing |
| 210Labour | £2.96m | £2.70m | £262k | — | £2.96m | — |
| 311Shoring | £1.43m | £1.54m | −£115k | +£115k | £1.54m | Match Finance |
| 707Subcontract | £3.18m | £3.02m | £158k | — | £3.18m | — |
Difference = Captured − Finance. A negative difference means captured cost sits below Finance. Shoring shows a Match Finance adjustment of +£115,000, so adjusted CTD equals the Finance position to date. Values rounded for display.
Why the close is hard
It is not a reporting problem. It is a reconciliation problem with a deadline.
Most of the effort in a month-end pack goes into making two records of the same project agree, then explaining where they still do not.
Two clocks run at once
Site works to the day the work happened. Finance works to the period the invoice was posted. At the close those two views are compared as if they measured the same thing, and they never quite do.
The inputs arrive last
Subcontract applications, supplier invoices and plant hire charges land in the final days before the pack is due. The report is written while the numbers underneath it are still moving.
Differences get absorbed, not explained
When captured cost and posted actuals disagree, the pressure is to make the total look right rather than record why the two differ. A month later nobody can reconstruct the reasoning.
The forecast is rebuilt from scratch
Because the position is assembled by hand each month, the forecast that sits on it is also reassembled. Movement between periods becomes very hard to attribute.
How it usually goes
A workbook, a Finance export and a long evening
The common approach is a project cost workbook maintained by the QS or Commercial Manager. Site activity is typed in from diaries or timesheets, subcontract and supplier commitments are tracked on separate tabs, and a Finance export is pasted in once the ledger closes.
It works, until it does not. The coding on the Finance export drifts from the coding in the workbook. Cost that cannot be matched gets parked in a balancing line. Two people hold slightly different versions. And the reasoning that resolved last month — why a £40,000 difference was treated as timing rather than a real overspend — lives in someone’s memory rather than in the file.
None of that is carelessness. It is the predictable result of the record of the work and the record of the cost living in different systems, joined by hand once a month.
Northgate Logistics Park — Phase 2
Forecast · Aug 2026 · Demo data
Approved Budget
£18,420,000
Original Budget + Approved Variations
Adj CTD
£11,964,300
Raw CTD + Adjustments
Forecast CTC
£6,941,100
Qty × Rate × Util%
Forecast Final Cost
£18,905,400
Adj CTD + CTC
Forecast Variance
£485,400 over
2.6% over Approved Budget
Actual Foras interface pattern. Figures are illustrative demo data from the Northgate Logistics Park demo project.
How Foras supports the close
Four things that are already done before the deadline
Captured cost is already there
Labour, plant, materials, subcontract and management cost have been recorded through the month against cost codes, dated to when the work occurred. There is no consolidation exercise to start the close with.
Finance actuals come in beside it
Posted actuals are imported and set alongside captured cost per cost code. Finance stays authoritative for what has been posted; Foras does not write anything back to the ledger.
Every difference gets a decision
Where captured cost and Finance disagree, the difference is resolved with a recorded decision — Timing, or Match Finance — and an adjustment where one applies. The reason and the author stay with the record.
The forecast is built on the reconciled position
Adjusted cost to date feeds cost to complete and forecast final cost, so the number reported is the number the reconciliation produced rather than a separate estimate.
Finance remains authoritative for posted actuals throughout. Foras imports and reconciles against the ledger; it does not post to it, and it does not replace your accounting process.
What changes in practice
Month to month
The pack starts from a position, not a blank sheet
Consolidation happens continuously through the month, so the close is a review and a set of decisions rather than a rebuild.
Differences are on the record
Each reconciliation decision carries a reason and an author, so a question in November about the September pack has an answer.
The reported forecast has a lineage
Forecast final cost traces back through adjusted cost to date to the captured records and the Finance actuals it was reconciled against.
Late postings do not invalidate the story
Cost posted after the fact is handled as a difference with a decision attached, instead of quietly changing a number nobody re-explains.
Related capabilities
Bring last month’s pack. We’ll walk the same close through Foras.
Use your own cost codes and a real Finance export. We’ll show the position, the differences and the decisions that would have resolved them.
Who this matters to