Billing & draws
The subcontractor WIP report: how over- and underbilling is actually calculated
For the controller or office manager who assembles the WIP schedule by hand every quarter, and for the owner who has to explain it.
Your CPA usually asks for it at year end. If you are bonded, your surety may ask for it every quarter. The first time you ask a bank for a bigger line of credit, they ask for it before they ask for anything else.
The work-in-progress schedule. One row per open job, a handful of columns, and one number at the end that tells a stranger whether your company is making money or borrowing it from your own customers.
Most commercial specialty subs build it by hand in a spreadsheet, four days after it was due, from four numbers that live in four different places. This article is about the arithmetic, and then about why the arithmetic is the easy part.
What a WIP schedule actually is
Strip away the accounting language and a WIP report answers one question per job:
Have I billed more than I have earned, or less?
“Earned” is the word that does the work. Under percentage-of-completion accounting — the cost-to-cost method many contractors’ CPAs use for long-term contracts, though your CPA decides which method applies to you — you earn revenue as you incur cost, not as you invoice. So the report compares two things that are easy to confuse:
- Billed to date. What you have actually asked the GC for, cumulative, across every draw.
- Earned to date. What the accounting says you have genuinely produced.
Those two numbers are almost never equal, and the gap has a name in each direction.
The four inputs
Every WIP schedule in the world is built from these four, per job:
- Total contract value — your original subcontract, plus every approved change order.
- Cost to date — everything spent on the job so far: labor, material, equipment, lower-tier subs.
- Estimated cost to complete — your honest judgment of what is left to spend.
- Billed to date — cumulative billings, including retainage held.
Everything else is derived. There is no fifth number, and no software can produce number 3 for you.
The arithmetic, worked
Take a mechanical sub with an $880,000 contract and two approved change orders worth $70,000 together.
| Input | Value |
|---|---|
| Contract value (incl. approved COs) | $950,000 |
| Cost to date | $520,000 |
| Estimated cost to complete | $280,000 |
| Billed to date | $684,000 |
Step 1 — total estimated cost. Cost to date plus cost to complete.
$520,000 + $280,000 = $800,000
Step 2 — percent complete. Cost-to-cost: what you have spent over what you expect to spend in total. Not percent of time elapsed, and not the percent complete you negotiated line by line on the draw.
$520,000 ÷ $800,000 = 65.0%
Step 3 — earned revenue. Percent complete times contract value.
65.0% × $950,000 = $617,500
Step 4 — the answer. Earned minus billed.
$617,500 − $684,000 = −$66,500
Billed exceeds earned by $66,500, so this job is overbilled by $66,500. On a formal WIP that appears as billings in excess of costs and estimated earnings — a liability on the balance sheet, because it is work you have billed for and still owe.
Flip it. Had the same job billed only $560,000, earned would exceed billed by $57,500 and the job would be underbilled — costs and estimated earnings in excess of billings, an asset, and operationally a much more interesting problem.
Which direction is bad?
Both, differently, and the instinct most owners have is backwards.
Underbilled is the one to act on this week. It means you performed work and did not ask to be paid for it. The causes are nearly always operational, not accounting:
- Work done against a change order that is approved but never added to the schedule of values, so the draw had no line to bill it on.
- A line billed at a conservative percent complete because the PM did not want an argument with the GC’s project engineer.
- T&M work performed, signed, and never rolled into a change order.
- A draw that missed the GC’s cutoff and slid a full month.
Every one of those is cash you are owed, sitting in a folder. When a GC is not paying a subcontractor covers the escalation side; underbilling is the quieter version, where nobody is withholding anything because nobody ever asked.
Overbilled is not a win, even though it feels like one. Front-loading mobilization, billing a generous percent complete early, and billing stored material you have not installed all put cash in the bank ahead of the work. That cash is real, and it is also spoken for. A heavily overbilled job going into its last 20% has to fund the finish out of the next job’s draw — which is how a profitable company runs out of money. Sureties tend to watch the overbilled column for exactly that reason.
What a surety is really checking is whether the two columns move in a pattern. Modest, consistent overbilling across a portfolio is common and is often read as normal. A job that swings from $200,000 overbilled to $150,000 underbilled in one quarter suggests your cost-to-complete estimate was off, and that estimate drives the rest of the schedule.
Why a sub’s WIP is always a scramble
The formula is five minutes of arithmetic. Gathering the inputs is two days, because for most subs they live apart:
- Contract value is in the executed subcontract PDF — and the approved change orders that belong in it are in an email thread, a GC portal, and a folder on somebody’s desktop. This is the single most common error in a sub’s WIP: billing a change order while leaving the contract value at the original amount. Billed-to-date then runs toward or past a contract value that is too small, percent complete is computed against a cost basis that already includes the CO work, and the report shows a wildly overbilled job that is nothing of the kind.
- Cost to date is in QuickBooks, and it is late by however long it takes supplier invoices to arrive and get coded. Committed cost — material on open purchase orders, received and not yet invoiced — is usually missing entirely. See QuickBooks job costing for subcontractors for where that line falls, and the purchase order process for why an open PO is money already spent.
- Billed to date is in the GC’s portal, one portal per GC, and in your own records only if somebody logged each submission. Fifteen concurrent jobs across six GCs means six different places to look.
- Cost to complete is the one number that is genuinely yours to judge, and it is the one most often produced by subtracting cost to date from the original estimate — which quietly assumes nothing has gone wrong. On a job with 300 hours of unplanned rework, that assumption is the error.
Three habits that make the quarter easier
Keep one schedule of values per job, and keep approved change orders in it. The SOV is where contract value lives. If approved COs are added to it as they are approved, input 1 is never a reconstruction. Schedule of values for subcontractors covers how to build one that survives.
Log every draw against that SOV when you submit it, not at quarter end. Input 4 then exists as a record rather than a portal crawl. The GC billing cycle deadlines article is about the submission calendar; the logging habit is the other half of it.
Decide, once, whether your cost-to-date is burdened. Labor at bare wage and labor at a burdened rate can differ a lot, and a WIP that compares bare-wage cost to date against a burdened estimate understates percent complete on every labor-led job. Pick one basis, apply it everywhere, and tell your CPA which one you used. How to calculate a labor burden rate is the arithmetic.
What SubMark does here, and what it does not
SubMark does not produce a WIP schedule. There is no WIP report, no over/under column, no surety-ready export. If that is what you are shopping for, this is not it, and your CPA’s workpapers probably remain the right place for it.
What SubMark does is hold two of the four inputs where you can read them instead of rebuild them:
- One schedule of values per job, showing what each line has billed to date, which locks when the first pay application you build in SubMark is submitted so the basis of the job stops moving. Approved change orders are added to it automatically, each as its own line, so the SOV’s contract value includes approved COs as a consequence of approving them. The percent shown is percent billed, not cost-to-cost percent complete.
- A draw log per job, so billed-to-date per job is a number you look up.
- Job costing against budget from labor logs, QuickBooks Online bills and purchases, purchase orders and logged vendor invoices — a starting point for cost to date, not a finished WIP column.
Three caveats worth knowing before you lean on it for a WIP: job costing reports labor at the logged wage rate, not a burdened rate, so add burden yourself; it has no cost-code breakdown; and hours on T&M tags do not feed job-costing actuals. Cost to complete is still yours to estimate, and always will be.
That is two of the four inputs you can look up, and a starting point for a third. The fourth is judgment, and it should be.
The people who assemble a WIP are office staff, and office staff are what a subscription covers — field users and the subs you invite are free and unlimited. See how pricing works.