Construction WIP report: costs, earned revenue, and billing

A billing gap means little when posted costs, project forecasts, and contract changes use different cutoff dates.

Eric Mills··7 min read

Your month-end construction WIP report combines accounting costs through September 30, a project forecast revised October 4, and a billing export pulled the next morning. The schedule may calculate a percentage complete, but its inputs describe different moments. Align the cutoff and the approved reporting basis before using earned revenue to explain an overbilling or underbilling position.

A reviewable work-in-progress schedule connects each job to its contract value, cost to date, approved estimate of total cost, and cumulative billings. Keep the calculation beside the source records and the person responsible for each estimate. The controller can then explain whether a movement came from a posting, a forecast revision, a contract change, or a billing decision.

Establish a cutoff and an approved reporting basis

Specify the period, currency, cost scope, and transaction dates used by the schedule. An invoice posted after month-end may relate to earlier work; finance must decide how that affects the reporting period. Retain both the effective date and the extraction time so an export refreshed today cannot be mistaken for a snapshot approved last month.

Document which costs can enter the progress calculation under your approved accounting basis. A material purchase, deposit, or exceptional cost may need separate treatment rather than increasing reported progress. The example below uses a restricted cost-to-cost basis for illustration; your finance owner must approve its suitability for the contract and the costs included before using it for financial reporting.

Keep the approved schedule distinct from the latest operating forecast. A project manager may know about a scope change after the cutoff, while accounting needs a reproducible period-end view. Record the later information as an exception or a separate scenario until finance approves how it enters the schedule. Preserve prior snapshots so a reviewer can recover the basis behind an earlier result.

Join contract, cost, forecast, and billing evidence by job

Start with a company-scoped job key. A job number repeated in another legal entity must not pull that entity’s transactions into the schedule. Map the accounting job ID to the project-management ID, retain both original references, and leave ambiguous matches in a review queue. A similar project name is evidence for investigation, not permission to merge records.

Use the contract amount and changes authorized under your approved reporting policy. Keep pending or disputed changes in separate fields with their approval status and owner. Do not count a change twice because it appears in both the revised contract total and a separate change-order export. The schedule needs a declared source for the contract value used in its calculation.

Bring in posted costs and an approved estimate of total cost from the same job scope. The total estimate includes both costs incurred and the cost still expected to finish; adding actuals to that total again would overstate the denominator. Use the Construction job cost report: actuals and cost to finish when you need to assemble commitments and remaining work into that estimate.

Define cumulative billings before loading the invoice export. State whether the amount is gross or net of retainage and how credits, canceled invoices, and tax are treated, then use that definition for every job. Keep cash collected as a separate measure. An invoice establishes a billing event under the chosen definition; it does not establish that the customer has paid.

Calculate earned revenue and billing gaps on one basis

The following sample uses synthetic dollar amounts for two jobs in company C01 at September 30, 2026. Assume finance has approved a cost-to-cost basis for these illustrative contracts, all included costs qualify under that basis, and the approved contract amounts need no further adjustments. These assumptions make the arithmetic inspectable; they do not establish an accounting policy for another contract.

For this sample, percentage complete equals cost to date divided by estimated total cost. Earned revenue equals that percentage multiplied by approved contract value. Underbilling is the positive difference when earned revenue exceeds cumulative billings; overbilling is the positive difference when billings exceed earned revenue. Keep the two amounts in separate columns so opposite positions remain visible across the portfolio.

JobContract valueEstimated total costCost to dateCompleteEarned revenueBillingsUnderbilledOverbilled
J100$1,200,000$900,000$450,00050%$600,000$550,000$50,000$0
J200$800,000$640,000$480,00075%$600,000$640,000$0$40,000
Total$2,000,000$1,540,000$930,000Not a job percentage$1,200,000$1,190,000$50,000$40,000

J100 has incurred half its estimated total cost, so the example assigns $600,000 of earned revenue to the $1,200,000 contract. Billings of $550,000 leave $50,000 underbilled. J200 is 75% complete on the same basis and also has $600,000 earned revenue, but its $640,000 billing total produces $40,000 overbilled. Neither billing position alone establishes profitability or available cash.

The total row sums dollar amounts without adding job percentages. Netting the billing gaps would show only $10,000 underbilled, concealing J100’s $50,000 gap and J200’s opposite position. Review both jobs before using a net portfolio figure. Each amount needs its own explanation and the contract terms that govern the next billing event.

Download the sample construction WIP report to inspect these inputs and calculated outputs. The CSV is a synthetic worked example with named columns, not a live accounting workbook. Recalculate after replacing the inputs, retain the finance-approved basis and source references, and confirm that every cost and billing amount uses the selected cutoff.

Separate mixed exports from an approved period-end schedule
Mixed exports

Different dates and unapproved estimates

Approved schedule

Shared cutoff, named basis, source evidence

Keep a later forecast visible as an exception until its treatment is approved; a refresh time cannot substitute for a reporting cutoff.

Inspect the inputs behind one job

Bring the approved forecast and corresponding accounting records into a workspace. Check the job mapping and reporting scope before relying on the schedule.

Assign billing and estimate exceptions to an owner

Investigate an underbilled job with the billing owner. Check whether the next contractual milestone has been reached, a submission is waiting for approval, or the billing export is incomplete. Retain the relevant application, approval, or dispute reference with the explanation. A positive gap on the schedule does not by itself establish an immediate right to invoice the customer.

Review overbilling with the project manager and controller together. Compare the invoice basis with the work and costs still expected, and check whether the contract permits advance or milestone billing. Keep the collection status separate. Spending decisions require a cash view alongside remaining obligations, because a cumulative billing amount can include unpaid invoices.

An increased cost estimate can change earned revenue even when no invoice or new cost has posted. If J100’s approved estimated total cost rises from $900,000 to $1,000,000 while other sample inputs stay fixed, completion falls from 50% to 45%. Earned revenue becomes $540,000, changing the position from $50,000 underbilled to $10,000 overbilled. Store the estimate revision and approval that explain this movement.

Stop the affected calculation when estimated total cost is missing or zero. Flag a negative remaining estimate, unmatched job records, or costs beyond the approved total for review instead of capping progress or inserting a balancing amount. Give each exception an owner and status. Unresolved rows should remain visible beside the reported totals (with their affected amounts) so an incomplete schedule cannot pass as an approved one.

How Permute supports recurring WIP reporting

Permute sells connected data and custom reporting software for businesses with fragmented financial and operating records. We combine supplied project and contract records with accounting data, preserve their source references, and apply approved company and job mappings. Unmatched records stay available for review rather than disappearing inside a portfolio total.

We encode the chosen cutoff, billing definition, and finance-approved calculation in reusable reporting logic. A construction controller can inspect which posted costs, contract revision, and approved estimate produced a job’s billing position. Subsequent reporting uses the same declared definitions, with refreshed inputs and the evidence needed to explain a change.

Access to the underlying records follows configured permissions. A project manager should receive the job evidence authorized for their role, while finance can review the approved portfolio scope. See how the data is handled when deciding who can inspect contract, cost, and billing records alongside the schedule.

Keep accounting treatment and source corrections with finance

This reporting workflow does not choose revenue recognition policy, determine which costs measure progress, approve estimates, or post accounting entries. We execute declared calculations using the approved inputs; finance supplies the accounting judgments. Contracts with loss estimates, disputed changes, unusual cost treatment, or other exceptions need that review before the illustrative formula can be applied.

The workflow reads project and accounting records for reporting. It does not correct invoices or write changes back to the ERP or project system. The responsible owner resolves those records at their source, and the next report should show the correction with its refreshed evidence. A recurring schedule also needs displayed source freshness; it cannot make a missing estimate current.

A construction WIP report becomes reviewable when costs, contract value, approved estimates, and billings describe the same period. Its earned-revenue calculation follows the basis chosen by finance, with overbilling and underbilling shown by job. Source references and estimate approvals explain why a position changed. At month-end, that evidence lets the controller resolve the mixed-cutoff schedule before using it in the reporting package.

Map your WIP schedule to its source evidence

Bring one reporting period, its contract records, accounting costs, billing export, and approved forecasts. We will review the mappings and recurring reporting logic your schedule needs.

Questions about construction WIP reporting

Can the same schedule be sent to a lender or surety?

Confirm their required format, reporting basis, and approval requirements before reusing it. They may need supporting schedules or explanations beyond the management view. Preserve the approved period-end inputs when you adapt the presentation so changing the format does not change the reported amounts.

Can jobs from different companies be combined?

Keep company-scoped job keys and show the reporting entity on every row. Combine amounts only after finance approves a comparable basis, including currency and cost scope. This management rollup does not determine consolidation treatments or replace the accounting review required for financial statements.

What happens when someone edits a CSV output?

Treat the edited file as a separate working copy and preserve the original approved export. Record which input or calculation changed and obtain approval before using it in the reporting package. A downloaded CSV does not carry live source updates or enforce the approval rules of the originating workflow.