Contractor WIP tracking schedule template

Contractor WIP Tracking: 5 Critical Setup Mistakes to Avoid

Most contractors find out they lost money on a job after the job is closed. The general ledger says profitable, the bank account disagrees, and nobody can tell which project ate the margin. The fix isn’t more spreadsheets. It’s WIP tracking that actually works.

Work in progress (WIP) tracking is how you see real-time margin on every active job. It catches losses while you can still do something about them. Done badly, it gives you false confidence and a year-end surprise. Done right, it tells you which jobs are bleeding, which superintendents to coach, and which proposals to stop accepting.

Here are the 5 mistakes that ruin contractor WIP setups, in roughly the order they show up.

1. Billing ahead of work, then calling it revenue

Progress billing is normal. Booking the full bill as revenue the moment you invoice is not. If you bill 60% of the contract but the job is only 40% complete, you’ve recognized revenue that hasn’t been earned. WIP gets distorted on the upside.

The technical name for this is overbilling, and it shows up as a liability on a properly built WIP schedule. Without that, you’re looking at financials that show you healthy while you’re actually borrowing future revenue to pay current bills.

What to fix: separate “billed to date” from “earned to date” in your job costing. Most contractors need both columns; bookkeepers who don’t set this up are doing cash-basis math on accrual books.

2. Treating change orders as separate jobs

A change order on a $400K project is a modification to that project, not a new project. When change orders get booked as standalone customer:jobs in QuickBooks, you lose the ability to see the project’s true total contract value. Your WIP percentage-complete math goes sideways immediately.

What to fix: change orders should be additions to the parent job, with their own line items but rolled up into one project total. Approved change orders update the contract value; unapproved ones get tracked separately but not counted as committed revenue.

3. No estimated cost at the line-item level

You can’t track variance if you didn’t budget by category. Plenty of contractors set up a single “Estimated Cost” total in QBO and call it done. Then halfway through the job, when materials are over budget but labor is under, the WIP report just shows “behind by $12K” with no breakdown.

This is one of the more common job costing setup mistakes, and it compounds with the next one.

What to fix: estimates broken down by major cost category: labor, materials, subs, equipment, other. The job costing report should show variance per category, not just per job.

4. Lumping all materials into a single COGS account

This one shows up in the chart of accounts. A contractor’s COGS should split, at minimum, into labor, materials, subcontractor costs, and equipment. When everything goes into “Cost of Goods Sold” as a single bucket, every WIP report ends up useless because you can’t separate the cost drivers.

This compounds with mistake 3. If your estimates are by category but your actuals aren’t, you have nothing to compare against. The whole point of a WIP schedule is the comparison.

What to fix: set the chart of accounts up so each cost type has its own COGS account, and make sure every transaction posts to the right one. This is a one-time bookkeeping decision that pays off for years.

5. Reviewing WIP quarterly instead of monthly

A monthly WIP review is the floor, not the goal. Quarterly is for accountants. By the time the quarter closes, the bad job is already done and the loss is already booked. The whole point of a WIP schedule is to spot problems while you can still adjust labor, push back on a sub, or have an honest conversation with a customer.

What to fix: monthly WIP review, with the bookkeeper producing a clean schedule by the 10th of the following month. For larger contractors with multiple active jobs, biweekly is reasonable. Anything slower than monthly defeats the purpose.

What a working WIP schedule actually looks like

For each active job, the schedule shows:

  • Contract value (including approved change orders)
  • Estimated total cost
  • Costs incurred to date
  • Percent complete (costs incurred divided by estimated total cost)
  • Earned revenue (contract value times percent complete)
  • Billed to date
  • Over- or under-billing (billed minus earned)
  • Estimated gross profit at completion
  • Variance from original estimate

That’s nine columns on the spreadsheet, but in QuickBooks Online with job costing turned on, most of them generate automatically once the chart of accounts and estimate setup are right.

The whole purpose of those nine columns is to answer two questions every month: which jobs are making the money we said they’d make, and which jobs are quietly losing money right now.

The bookkeeping setup that makes WIP tracking possible

None of this works if your books can’t produce the inputs. The QuickBooks Online setup that supports real WIP tracking looks like this:

  • Customer:Job hierarchy enabled (jobs nested under customers)
  • Estimates entered per job, broken down by cost category
  • COGS accounts split by labor, materials, subs, equipment
  • Time tracking for billable labor
  • Job costing reports run monthly, not just at year-end

If any of those pieces are missing, fix them before you build a WIP schedule on top. A WIP report built on bad data is worse than no WIP report; it produces confident-looking numbers that mislead decisions.

The good news: setting this up is mostly a one-time bookkeeping project. Once the structure is right, the monthly WIP review takes a couple of hours and produces a number you can actually trust.

If you want to talk through what that setup would look like for your jobs, book a free 15-minute call. We’ve cleaned up plenty of contractor books that looked profitable on paper and weren’t.

Similar Posts