BooksGPT

How Contractors Read a WIP Report (and Stop Financing the Customer's Job)

For contractors and subs on fixed-price jobs: read a construction WIP report, catch underbilling before it drains your cash, and keep retainage in view.

A house under construction with its steel wall and roof frame up and the site still open

The short answer

  • For contractors on fixed-price jobs, a construction WIP (work in progress) report compares what each job has earned, measured by how much of its estimated cost you've spent, with what you've billed. The gap is overbilling or underbilling.
  • Underbilled means you did the work and haven't sent the invoice. On a $500,000 job that is 60% complete, $300,000 is earned; if you've billed $245,000, you are $55,000 under billed and carrying that cost yourself.
  • Underbilling often hides a problem: cost that ran over the estimate shows up as progress. Re-estimate the job's cost every month, or the WIP will tell you you're ahead while the job is fading.
  • Run the WIP every month, act on every underbilled job, track retainage you're owed and retainage you hold as separate balances, and collect lien waivers before you release a sub's payment.

What is a WIP report in construction?

You know the feeling. Every crew is busy, the calendar is full through spring, every job was bid at a decent margin, and you're still checking the bank balance on Thursday night to see whether Friday's payroll will clear. Nothing looks wrong. So where's the money?

Most of the time it's sitting inside your customers' buildings, and a construction WIP report is how you find it. WIP stands for work in progress. It's one page with one row per open fixed-price job, and it asks the same question of each one: has the money caught up with the work?

Your invoices tell you what you've billed. Your bills and payroll tell you what you've spent. Neither one tells you what you've earned, and on a fixed-price job that's the number that matters, because you earn the contract a little at a time as the work goes in. The WIP puts all three side by side, for every job, every month.

Each row carries seven numbers:

  • Contract: the price, including change orders the customer has approved.
  • Estimated cost: what you now expect the whole job to cost, not what you bid.
  • Cost to date: what you've actually spent on it.
  • Percent complete: cost to date divided by estimated cost.
  • Earned: the contract times percent complete.
  • Billed: everything you've invoiced so far.
  • Over or (under): billed minus earned.

If you already track profit per job (our guide to tracking profit per job, property or client covers the basics), good. That tells you how a job did. The WIP tells you how a job is doing, while there's still time to do something about it.

How do you calculate percent complete and earned revenue?

Don't let the accounting name put you off. Most contractors use the cost-to-cost method, and it's two lines of math straight out of your books:

  • Percent complete = cost to date ÷ estimated total cost
  • Earned = contract × percent complete

Say you figured a job to cost $400,000 and you've spent $240,000. You're 60% complete. On a $500,000 contract, that's $300,000 earned. Nobody has to walk the site with a clipboard and guess.

Now the catch, and it's a big one. This math thinks every dollar you spend is progress. If drywall runs $20,000 over, your cost to date goes up, your percent complete goes up, and the job looks further along than it is. The worse a job is going, the better it looks.

So sit down every month with whoever is running each job and ask one thing: what is it really going to cost to finish? A WIP built on the number you bid will flatter exactly the jobs that are hurting you.

Go line by line: labor, materials, subs, equipment. For each one, take what you've spent and add what it will take to finish. If your super tells you framing labor is going to run over, write the new number down, even if you don't like it. That one number is the most honest thing you'll do all month, and everything the WIP says about the job moves with it.

A job's Budget tab listing labor, materials, subcontractors and equipment with original, committed, actual, projected and to complete columns, and the Forecast choice open on Estimate at completion In BooksGPT, each job's budget shows what you've committed, what you've spent and where each line is projected to land, and you can update the forecast line by line.

What do overbilling and underbilling mean?

Line up billed against earned on each row. You'll land in one of two places.

  • Overbilled (billed more than earned): the customer has paid ahead for work you haven't done yet. Your accountant calls it a liability, billings in excess of costs and estimated earnings, and that's fair, because you owe that work. It isn't a bad place to be. A front-loaded schedule of values puts you here on purpose, and it means the job is running on the customer's money instead of yours. Just make sure the cash is still there when it's time to finish.
  • Underbilled (earned more than billed): you've done the work and haven't sent the invoice. Your accountant calls this one an asset, costs and estimated earnings in excess of billings. On paper it's money you're owed. In your checking account it's money that's already gone.

Here's a month end across five jobs:

A work in progress schedule for five jobs showing contract, estimated cost, cost to date, percent complete, earned, billed, over or under billing and profit, with one job under billed by $55,000 and one heading to a loss In BooksGPT, the WIP report is worked out from each job's own costs and invoices, as of any date you pick.

Read it the way you'd walk a job. Elm Street is under billed by $55,000, so that's the one to chase today. Harbor View is over billed by $12,500, which is fine as long as that cash is set aside for the rest of the roof. And Cedar Lane's estimated cost is higher than its contract. No billing fixes that one. It's going to lose money, and the sooner you know, the more options you have.

A worked example: one job, $55,000 under billed

Let's put numbers on it. Say you sign a $480,000 retail fit-out. The customer approves a $20,000 storefront change order, so the contract is now $500,000. You figure the job will cost $400,000, a 20% margin.

Here's where you stand at October 31:

Amount
Cost to date (payroll, materials, subs) $240,000
Percent complete ($240,000 ÷ $400,000) 60%
Earned ($500,000 × 60%) $300,000
Billed on three pay apps $245,000
Under billed $55,000
Retainage held at 10% of $245,000 $24,500
Collected, if every pay app was paid in full $220,500

Stop and look at that for a second. The job is making money. Every pay app was paid in full and on time. And you've still paid out $240,000 and collected $220,500. That's $19,500 of your own cash sitting inside the customer's building, on a job where nothing went wrong. The $55,000 you haven't billed is the reason.

Bar chart for one job: $240,000 of cost paid, $300,000 earned, $245,000 billed and $220,500 collected after 10% retainage

Why does underbilling cost you money?

Because you've already paid for the work. Payroll went out Friday. The supply house wants its money in 30 days. Your sub's invoice is on your desk. And until you bill, nothing is even on its way back to you. Every underbilled dollar is a loan to your customer at zero interest, one they never asked for and don't know they got.

If that sounds like your shop, you have plenty of company. In Siteline's 2026 survey of 492 construction finance and operations professionals, reported by Contractor magazine:

  • 92% of subcontractors floated payroll from their own pockets during the past year while waiting for payment, and 28% did it most months.
  • 43% of subcontractors waited more than 90 days to collect final payment and retainage, compared with 15% of general contractors.
  • Respondents named pay applications submitted with errors or omissions as the biggest internal driver of their own late payments.
  • 56% of respondents said they had missed a critical mechanic's lien deadline during the past two years.

Look at the third one again. You can't make an owner pay faster, but a clean pay app that goes out on time is entirely yours to control.

And underbilling stacks on top of retainage. Retainage takes a slice of every invoice you do send. Underbilling is the work you haven't invoiced at all. Put the two together and you get the contractor everybody knows: slammed with work, profitable on paper, and short on cash.

Don't wait for month end to find out

You won't read the WIP every morning. Nobody does. So decide ahead of time what makes a job worth a look, and check for it on a schedule instead of when you happen to feel uneasy. Three tripwires cover most of it: a job under billed by more than about 10% of its contract, a job whose estimated profit dropped a couple of points since last month, and a job whose estimated cost has passed its contract.

A Job watch message listing three jobs that need a look: one under billed by $55,000, one heading to a loss of $13,000, and one whose estimated profit fell $6,200 since the last close In BooksGPT, Job watch checks your jobs every night and tells you when one is under billed, losing profit or heading to a loss.

Underbilling can hide profit fade

This is the part that gets good contractors in real trouble. Profit fade is when a job's estimated profit shrinks as actual costs come in over the estimate. On the WIP it usually shows up first as underbilling that keeps growing, because cost that ran over looks like progress. It's easy to tell yourself "we're just behind on billing" when the truth is the job is over budget.

A surety underwriter at Old Republic Surety described exactly this in NASBP's Pipeline newsletter: one job was 97% complete at year end with $296,000 in underbillings. Six months later, at 99% complete, the underbillings had grown to $419,000 despite ongoing losses. There were ten more jobs like it. In their analysis, underbillings inflated that contractor's working capital by nearly $3 million, and the surety disallowed them.

If an underbilled job doesn't turn into an invoice next month, assume the estimate is wrong until you've proved it isn't.

Why do banks and sureties care about your WIP?

Because your bonding capacity and your line of credit are sized from your working capital and net worth, and underbillings sit in current assets, where they raise both. Your surety knows some of that "asset" may never turn into an invoice. So they read your WIP to decide how much of it to believe.

The same article says sureties look at the trend: whether a contractor's underbillings turn into receivables over time. Old Republic says it would disallow an underbilling unless there was a sound reason for it and the job was still profitable. In the case above, the surety compared the contractor's year-end WIP schedule with its later financial statements.

Expect yours to be read the same way. Walk into that meeting able to explain every large underbilling, job by job, and you're the contractor they want to say yes to.

And send them the WIP as it stood at month end, not a version you've touched up since. They'll compare it with your next statement, and the numbers need to still be the numbers.

What should you do about an underbilled job?

An underbilled job is always one of three things. Figure out which, then move.

  1. Work you can bill. The field got ahead of the paperwork. It happens to everybody. Send the next pay app now, for everything completed. In the example above, billing the full $300,000 earned less 10% retainage and the $220,500 already certified makes $49,500 due this period. That's real money for an afternoon of paperwork.
  2. A schedule of values that doesn't match the work. If the line items were front-loaded on one trade and back-loaded on another, percent complete by cost and percent complete by line can disagree for months. Fix the schedule of values with the customer, or at least know why the two differ.
  3. An overrun or unapproved change. The extra cost is real, but the customer hasn't agreed to pay for it. This is the uncomfortable one. Get the change order signed, or lower the job's estimated profit now. Waiting doesn't make the fade smaller. It just moves the bad news to a month when you can do less about it.

A pay app that gets paid is built the same way every time. Go down the schedule of values and update each line's percent complete through the period end. Completed to date, less retainage, less what's already been certified, is what's due this period. Then check the math twice before it leaves your office, because a pay app with an error doesn't get paid late. It gets sent back.

A pay application summary for one job beside its continuation sheet: a $500,000 contract, $300,000 completed to date, $30,000 retainage and $49,500 due this period In BooksGPT, you bill the period by percent complete and print the pay application with its continuation sheet, retainage already held back.

There's the $49,500 from the example, with no math for the owner's rep to kick back.

A roofer nailing asphalt shingles onto a new roof with a nail gun

How do you track retainage without losing it?

Retainage is the easiest money in this business to lose track of. It's yours, but it isn't payable yet, so it drops off everyone's radar until months after the punch list is done. Keep two balances, never one:

  • Retainage receivable: what your customers are holding back from your invoices. Track it per job and per invoice, and keep it out of your normal receivables aging so it doesn't look overdue. When the customer releases it, it becomes an ordinary receivable with its own due date, and you chase it like one.
  • Retainage payable: what you're holding back from your subs. It's money you owe, just not yet. Track it per subcontract so you release the right amount to the right sub when the owner releases yours. Your subs will remember who paid their retainage without being asked.

One more habit, and it will save you someday. Before any payment to a sub, especially a retainage release, collect a lien waiver that covers what you've paid so far. A payment without one can leave the property exposed to the sub's lien, and that becomes your problem with the owner. And put every lien and retainage deadline on a calendar the day the job starts, not the day you start worrying about it.

A retainage panel for one job showing $24,500 held by the customer across three pay apps, $14,550 held from two subcontractors, and a payment held until a lien waiver is added In BooksGPT, you can see the retainage your customers are holding and the retainage you're holding from subs, job by job, and hold a sub's payment until a lien waiver covers it.

A monthly WIP checklist

Architectural floor plans spread across a desk

None of this works as a once-a-year exercise. Block out a morning in the first week of every month and run this:

  1. Enter every cost for last month: bills, payroll, card charges, each labeled to its job.
  2. Re-estimate every open job with the person running it: cost to date plus cost to complete.
  3. Run the WIP as of the month end and compare percent complete with what the field says.
  4. Sort by underbilling and decide for each job: bill it, fix the schedule of values, or re-estimate.
  5. Book the over and under billing entry at month end and reverse it on the 1st, so revenue matches the work.
  6. Tie retainage receivable and payable to the invoices and bills behind them.
  7. Check lien waivers before you release any sub payment.
  8. Save the closed WIP. Your bank and surety will ask for it, and next month you'll want to compare.

Step 5 is the one that scares people off, because it's a journal entry. It's simpler than it sounds. Your under billings go on the books as an asset and add to revenue. Your over billings go on as a liability and come out of revenue. The whole thing reverses on the 1st so next month starts clean. If you don't book it yourself, make sure your accountant does, and every month, not once a year.

The Close October window: it freezes October's schedule and shows the entry, with $55,960 of costs in excess of billings, $18,100 of billings in excess of costs and a $2,600 provision for a job heading to a loss In BooksGPT, closing the month freezes that month's WIP and books the over and under billing entry for you, reversed on the 1st.

You can run every step in this post on paper or in a spreadsheet, and plenty of good contractors do. The screens along the way are BooksGPT with the Business Max add-on, which does all of this and more: progress billing and retainage and the WIP schedule.

Where to start this month

Don't try to fix the whole company this week. Start small and do it honestly:

  1. Pick your three largest open fixed-price jobs.
  2. Get an honest estimated cost for each from the person running it. Not the bid. What it will really take.
  3. Work out percent complete, earned and over or under for each, by the formulas above.
  4. For any job under billed by more than a few percent of its contract, decide this week whether you're billing it, fixing the schedule of values or re-estimating it.
  5. Add up the retainage you're owed and the retainage you're holding. If you can't get both numbers from your books right away, that's the next thing to fix.

Do that for three jobs and you'll know more about your cash than most contractors your size. Then do it again next month. You did the work. Make sure the money catches up with it.

Questions

Is underbilling an asset or a liability?

An asset. On a balance sheet it is usually called costs and estimated earnings in excess of billings: work you earned and can still invoice. Overbilling is the opposite, a liability called billings in excess of costs and estimated earnings, because you owe the customer that work.

Is overbilling bad?

Not by itself. Billing slightly ahead keeps the job funded with the customer's money instead of yours. It turns into trouble when the cash is spent on something else, because the work it paid for still has to be done.

How often should I run a WIP report?

Monthly, after every bill and payroll for the month is entered and before you send the next pay applications. A quarterly WIP finds problems after another three months of cost has gone into the job.

How much underbilling is too much?

There is no single number. What a surety watches is the trend: whether last month's underbilling turned into invoices and cash, or kept growing. A job that stays under billed month after month usually has a cost problem, not a billing problem.

Do I need a WIP report if I don't have a bond?

If you run fixed-price jobs that last longer than a month, yes. The WIP is how you see that a job is losing money while you can still change the order, bill a change order or talk to the customer.

What is the difference between retainage receivable and retainage payable?

Retainage receivable is the money your customer is holding back from your invoices until the job or a phase is done. Retainage payable is the money you are holding back from your subcontractors. Keep them as separate balances; they are released on different dates.

Sources

  1. Subcontractors are Still Financing Their Own Jobs, 2026 Survey Finds, Contractor, September 4, 2026
  2. A Surety's Perspective of Underbilling and Its Impact on Contractor Financials, NASBP Pipeline (Old Republic Surety), June 24, 2025

General information for US businesses, not tax or legal advice for your situation. Last updated .