All guides

Guide

The construction month-end close, step by step

A contractor’s close is harder than a distributor’s or a services firm’s because the biggest number on the income statement, contract revenue, is calculated rather than invoiced. Everything that feeds that calculation has to be in before you run it, and nothing can move afterward. This checklist is the order that makes that work.

Updated October 2026

Why the order matters

Earned revenue on a job is percent complete times contract value, and percent complete is cost to date over estimated total cost. So a vendor bill that arrives on the 5th for work done on the 28th changes revenue, not just expense. A change order approved but not entered changes contract value. A forecast nobody updated changes estimated total cost. The close has to sweep all of that in before the WIP entry posts, then freeze it.

Week 1: cutoff and cost

  1. Post all vendor bills dated in the period, and accrue bills for work performed but not yet invoiced (subcontractor pay applications in review, material received without an invoice)
  2. Approve and post subcontractor pay applications for the period, including the retainage withheld, so the full cost is on the job
  3. Confirm payroll for the period has landed in job cost with burden, including the final partial week if it crosses month end
  4. Post equipment charges and internal allocations to jobs
  5. Clear the receiving and matching queue: anything received but unmatched is cost the job has incurred
  6. Review committed cost: open purchase orders and subcontracts, and close out any that are complete so they stop inflating projected cost

Week 1: contract value and billing

  1. Enter and approve change orders that were executed in the period; leave pending change orders pending, they do not belong in contract value yet
  2. Certify and invoice the period’s pay applications, with retainage accrued
  3. Post retainage releases and any credits
  4. Reconcile billed-to-date per job to the AR subledger

Week 2: forecasts and WIP

With cost and contract value in, project managers update the cost to complete per job, and someone other than the preparer approves it. That approved forecast is the estimated total cost in the percent-complete calculation. Then run the WIP schedule, review it job by job for fade and for percent complete that moved more than the work did, and post the over/under billing entry.

  • Jobs with no approved forecast this period are the first thing to fix; a stale forecast silently carries last month’s margin forward
  • Compare percent complete by cost to the superintendent’s view of physical progress; large gaps usually mean a missing cost accrual or a forecast that is wrong
  • The WIP entry should be cumulative: reverse last period’s entry and post this period’s, so the balance sheet always shows the current position

Week 2: reconcile, review, lock

  1. Bank, AR, AP and retainage subledgers to the general ledger
  2. Job cost total to the GL cost-of-revenue accounts; any difference is a cost posted without a job
  3. Balance sheet review: costs in excess and billings in excess agree to the WIP schedule
  4. Income statement review: gross margin by job compared with last period, with an explanation for every job that moved
  5. Close the period so nothing else can post into it, with a documented path for the rare adjustment that must

Where the close breaks

  • Posting into a closed period because the software allows it and nobody notices until the WIP no longer ties
  • WIP calculated in a spreadsheet from exported job cost, so the balance sheet entry and the job cost report come from different data
  • Forecasts updated by the controller instead of the project manager, because the system has no approval step
  • Subcontractor retainage picked up at release instead of at pay application
  • A close that depends on one person remembering the sequence

How Forge ERP runs the close

Fiscal periods in Forge move from open to soft closed to hard closed. A hard close and a reopen each require a reason, and the status only changes when the governed transition succeeds on the server, so the period record and the posting rules cannot disagree. Entries posted while a period was closed are reported, not hidden. Close tasks and a certification step give the sequence a home instead of a checklist on someone’s desk.

The month-end WIP close is its own governed step: every included job needs a current approved forecast, Forge computes percent complete as actual cost over approved estimated total cost, and the controller prepares a dated snapshot, submits it, a second person approves it, and it posts. If anything in the source data changes after preparation, the snapshot is invalid and must be prepared again. Each close reverses the prior cumulative WIP journal in the current period before posting the new one, so prior periods stay closed. What stands in the way is listed at the job it concerns.

Forge ERP covers projects, purchasing, accounts payable, billing and receivables, job cost and WIP, reporting and close. Payroll runs in your payroll provider and lands in Forge as job-costed labor with burden. Forge is in beta with a 14-day free trial.

Frequently asked

How long should a contractor’s month-end close take?
Ten business days is a common target for a contractor with a few dozen active jobs; the limiting factor is usually subcontractor pay applications and forecast updates, not accounting. Firms that close in five days have moved the cost accruals and forecast review into the normal weekly rhythm so the close is a confirmation rather than a scramble.
Should I post WIP every month or only at year end?
Monthly, if you manage by job margin or report to a bank or surety. Year-end-only WIP means eleven months of income statements that are wrong by the change in over/under billing, and a large surprise in December.
What is the difference between a soft close and a hard close?
A soft close stops routine posting while review is still underway and can be reopened easily; a hard close is the final lock after reconciliations and the WIP entry, with reopening treated as an exception that needs a reason and leaves a record.

Related guides

See it on your own cost codes.

Start a 14-day trial, or send us your chart of accounts and cost-code list and we will walk you through Forge on them.

Request Early Access