Surviving Month-end: Validating a Construction ERP on Real Projects
Month-end is where a construction ERP earns its keep — or falls apart. Here's how Construct365 rolls job costing, subcontractor billing and labour into a defensible WIP schedule, then locks the period with the exceptions surfaced, not buried.
Month-end is where a construction ERP earns its keep — or quietly falls apart. The individual modules can each look fine, and the month can still be wrong: a cost sitting unapproved, a week of labour stranded on a draft timesheet, a subcontractor certified for work that never hit the job. By the time that surfaces, the profit you reported was borrowed from a future that never arrives.
That's the job the WIP & Month-end Close module does in The ERP Experiment. It's the capstone — it doesn't capture new data, it reconciles everything the other modules captured into a position you can defend.
A WIP schedule, job by job
For every job, the module pulls cost-to-date from job costing, divides it by the current budget to get percentage complete (the cost-to-cost method), and multiplies that by the contract value to get earned revenue — the revenue you've genuinely earned by doing the work.
Then it compares earned revenue to what's actually been billed:
- Over-billing — you've invoiced ahead of the work done. Cash today, a hole tomorrow.
- Under-billing — you've done work you haven't billed. Profit you've earned but not claimed.
Billing on a job here is subcontractor certification from subcontractor billing, with retention still withheld reported alongside. One schedule, every job, the real position.
The close surfaces exceptions — it doesn't bury them
Before you lock anything, the close recomputes the WIP as at the period end and runs the checks that catch a month that only looks finished:
- Undecided costs — actual cost entries still awaiting an approval decision, understating cost.
- Unposted labour — captured hours sitting on draft timesheets that never reached the ledger.
- Unposted cost — certified subcontractor billing that exceeds the cost recorded on the job.
- Retainage anomalies — retention released beyond what was ever withheld.
The first two are blocking — they distort the numbers an executive signs off, so they stop a clean close. The rest are warnings: surfaced, not suppressed.
Locking a period you can defend
Closing freezes the full WIP report as a snapshot against the period, so the figures you signed off are reproducible later — not recomputed from data that has since moved. It also locks the window: costs and labour can't be back-dated into a closed month.
If blocking exceptions remain, you can still close with an explicit override — and that override is written to the period's audit trail with the exception counts. A decision on the record, not an accident.
Reopening, on the record
Sometimes you have to reopen. Construct365 lets you — but never silently. You give a reason, the reopen is logged to an append-only audit trail with who, when and why, and the window unlocks so corrections can post. Re-closing recomputes and re-freezes the snapshot. Every close and reopen stays in the history.
One subscription
WIP & Month-end Close is part of the single ERP Experiment subscription, alongside every other module. Subscribe once and the capstone is unlocked.
👉 Explore the ERP hub, or see how the data it reconciles is captured in job costing, subcontractor billing and labour allocation.
Frequently asked questions
Related resources
We're Building a Construction ERP — The Safe Way
AI can generate a construction ERP. It still shouldn't be trusted with job costing, retainage or month-end close. Here's how Construct365 is building one for UK SMEs — low-risk modules first, the financial core last, validated on real projects.
Read guideFrom Approved PO to Paid Supplier: the Construction Purchase Ledger
A purchase ledger only earns trust when every supplier invoice ties back to an approved order, posts a balanced double entry, and pays out cleanly through BACS. Here's how Construct365 closes that loop.
Read guideGet Labour Costs Onto the Right Job, Every Time
Labour is the cost line that quietly sinks construction jobs — because the hours never make it onto the right job. Here's how Construct365's timesheets module allocates labour cost accurately, with corrections you can defend.
Read guide