Naar hoofdinhoud springen

Dakwerk-bouwethier-boekhouding: De WIP-schema die je vertelt of je banksaldo liegt

14 min leestijdMike ThriftMike Thrift
Dakwerk-bouwethier-boekhouding: De WIP-schema die je vertelt of je banksaldo liegt

You glance at your business checking account on a Friday — DECEMBERWeetDECEMBER- Weet147,000. Two commercial re-roofs are mid-progress, three residential jobs are scheduled next week, and you just collected a 50% deposit on a $94,000 apartment complex. It feels like your best month yet.

Then your accountant calls. You are actually under-billed by $38,000 and your largest job has quietly lost two points of margin since last month. The bank balance wasn't lying about cash, but it was absolutely lying about profit.

That disconnect is why every roof contractor who runs jobs that span weeks — and especially anyone who takes on commercial, multi-family, or insurance-driven projects that stretch across month-end — needs one report above all others: the Work-in-Progress (WIP) schedule. Get it right and it becomes the blueprint for every financial decision you make. Get it wrong or skip it entirely, and you are flying blind no matter how healthy the bank feed looks.

Why Your Bank Balance Can't Tell You If a Roofing Job Is Profitabel

Roofing is a classic job-cost business with terrible timing mismatches:

  • You bill at milestones, not as you work. A deposit at signing, a progress draw after dry-in, final payment after punch list. Cash in has little to do with work completed.
  • You buy materials before you earn the revenue. Shingles, TPO, metal panels, and fasteners often hit your card weeks before the crew mobilizes.
  • Labor and subs are front-loaded. Tear-off crews and sheet-metal subs invoice early while the job still shows zero revenue if you wait until completion.
  • Retainage holds cash hostage. On commercial work, an owner holding 10% until final acceptance means a 200,000jobleaves200,000 job leaves 20,000 in receivable for months after you have paid for everything.

If you use cash-basis or simple accrual bookkeeping that only recognizes revenue when you invoice, a month with two big deposits looks wildly profitable — until the next month when crews, disposal, and material bills land with no corresponding invoices. Flip the timing and a month where you did the most actual roofing can look like a loss because you haven't billed it yet.

The WIP schedule fixes this by tying revenue to how much work is actually done, not when you happened to send an invoice.

What ein WIP-Schema is eigentlich

Think of the WIP schedule as a one-page dashboard of every open roofing contract. Each row is one job. Each column answers a specific question:

  • What did we promise to build and for how much? Contract price, approved change orders, revised contract value.
  • What have we spent so far? Job-cost-to-date — materials, labor, subs, equipment rentals, permits, disposal.
  • What will it still cost to finish? Estimated cost to complete (the foreman's honest forecast, not the original estimate).
  • How far along are we? Percent complete, calculated from costs.
  • How much revenue have we earned? Earned revenue to date, based on percent complete.
  • How much have we billed, and have we billed too much or too little? Contract billings to date and the over/under-billing balance.

Updated at least monthly, the WIP schedule tells you, your CPA, and anyone lending you or your bonding exactly where each roof stands.

The Percentage-of-Completion Method, Step by Step

For jobs that span accounting periods, generally accepted accounting principles — and the "the tax code for larger contractors — require you to recognize revenue "as work progresses." The math is straightforward once job costs are accurate.

The Two Formulas That Power Every WIP Line

1. Percent Complete = Costs Incurred to Date ÷ Total Estimated Costs

Total estimated costs is not the original bid. It is costs incurred to date plus estimated costs remaining. If either of those numbers is stale, the percentage is wrong.

2. Earned Revenue to Date = Percent Complete × Revised Contract Price

Revised contract price is the original contract plus approved change orders. Unapproved change orders should not be included in revenue — yet.

From there:

  • Revenue to recognize this period = Earned Revenue to Date − Revenue Already Recognized
  • Gross Profit to Date = Earned Revenue to Date − Costs Incurred to Date
  • Over / Under-Billing = Billings to Date − Earned Revenue to Date

If billings exceed earned revenue, you are overbilled. If earned revenue is larger, you are underbilled. Neither is automatically good or bad — but both tell a story.

A Roofing Example With Real Numbers

Take a 42-square commercial TPO re-roof:

  • Original contract: $180,000
  • Approved change order for tapered insulation upgrade: $12,000
  • Revised contract price: $192,000
  • Costs incurred to date: $86,000 (tear-off, ISO, membrane, half the labor)
  • Estimated cost to complete: $54,000 (remaining labor, edge metal, warranty, closeout)
  • Billings to date: $115,000 (deposit + dry-in draw)

Step 1: Total estimated cost = 86,000+86,000 + 54,000 = 140,000Step2:Percentcomplete=140,000 Step 2: Percent complete = 86,000 ÷ 140,000=61.4Step3:Earnedrevenuetodate=61.4140,000 = 61.4% Step 3: Earned revenue to date = 61.4% × 192,000 = 117,888Step4:Costsremain117,888 Step 4: Costs remain 86,000, so gross profit to date = 117,888117,888 − 86,000 = 31,888(27Step5:Over/under=31,888 (27% margin to date) Step 5: Over/under = 115,000 billed − 117,888earned=117,888 earned = **−2,888 underbilled**

You have done slightly more work than you have billed. Cash is tight by 2,888,butmarginisintact.Butiftheestimatedcosttocompletecreepsto2,888, but margin is intact. But if the estimated cost to complete creeps to 62,000 without a change order, percent complete drops, earned revenue drops, and that margin evaporates — even though nothing changes in the bank account that day. That early warning is the whole point.

Overbilling vs. Underbilling: Where Cash Flow Lives

This is the section most roofers skim and then regret.

Overbilling (billings > earned revenue) means you have collected cash for work you haven't done yet. On the balance sheet it sits as a liability — often labeled Billings in Excess of Costs. You are effectively borrowing from the customer. Taken too far, it masks a job that's bleeding margin because the cost-to-complete is underestimated. Lenders and sureties get nervous when overbilling spikes without a clear reason.

Underbilling (earned revenue > billings) means you have done work you haven't billed for. It shows as an asset — Costs in Excess of Billings or Underbillings. A growing underbilling balance strains cash flow and often signals slow billing, missed change orders, or additional hours never being put on a pay app. If you are consistently underbilled, you are effectively financing your customers' roofs.

A healthy roofing operation typically hovers near neutral with a slight lean toward overbilling, especially on commercial jobs where you negotiate strong deposit and milestone terms. What matters is not a single month's numbers but the trend and the underlying reason.

How to Build a Roofing WIP Schedule That Actually Works

You don't need sophisticated software to start — though dedicated construction accounting tools will generate this automatically once job costs are set up correctly. A spreadsheet with one row per active job and these columns is enough:

ColumnWhat to EnterWhere It Comes From
Job name / numbere.g., 24-118 — Maple Grove Apartments Bldg CJob list
Contract priceOriginal signed amountSigned proposal
Approved change orders$ signed, not verbalChange log
Revised contract valueContract + approved COsCalculation
Cost estimate at bidOriginal budgeted costEstimate
Costs incurred to dateActual job costs postedJob cost ledger
Estimated cost to completeForeman's updated forecastField + office
Total estimated costIncurred + to completeCalculation
Percent completeIncurred ÷ Total estimatedCalculation
Earned revenuePercent complete × Revised contract priceCalculation
Billings to dateTotal invoiced to ownerInvoicing system
Over / (Under) billingBillings − Earned revenueCalculation
Gross profit to dateEarned revenue − Costs incurredCalculation
Revised gross profit / marginRevised contract − Total estimatedForecast

Two disciplines make or break this sheet:

1. Job costs must be posted to the right job, in the right period. If your bookkeeper dumps all Home Depot and ABC Supply receipts into a generic Materials expense and sorts them out at year-end, your percent complete is fiction. Every material ticket, labor hour, sub invoice, dump fee, and crane rental needs a job number before it hits the ledger.

2. Estimated cost to complete must be refreshed with the field, monthly. That number is not "bid minus what you've spent." It's "what will it actually take to finish?" A foreman who reports that a 4-day shingle job will need one extra day of punch labor changes that line — and therefore revenue — immediately.

Roofing-Specific Traps That Wreck Your WIP (and Your Books)

1. Change Orders You Worked Before They Were Signed

Storm damage, hidden deck rot, and owner-requested upgrades are daily life. If the crew installs an extra 30 squares of ice-and-water shield on a handshake and you estimated costs go up without a signed change order, your WIP shows artificial margin fade. Rule: costs go up when work is done, revenue goes up when the change order is signed. Track unapproved changes in a separate column and follow up.

2. Retainage That Disappears Into a Single Receivable

On a 250,000commercialjobwith10250,000 commercial job with 10% retainage, 25,000 is not available at substantial completion. If you book the full invoice as A/R, your aging will say the customer is 45 days past due when the retention invoice is not due for another 60. Set up a separate Retainage Receivable account and split each progress billing: e.g., invoice 60,000,debitA/R60,000, debit A/R 54,000, debit Retainage $6,000, credit Billing. When retainage is released, move it to regular A/R.

3. Supplier Deposits and Material Pre-Purchases

Ordering a full truck of panels three months before mobilization feels prudent — until those panels sit in Inventory in some month. If you expense them to the job before they are installed, you inflate percent complete early and front-load profit. Track pre-purchased materials in a Materials in Hand asset account and transfer to job cost when used.

4. Warranty Work and Callbacks

A 2-year workmanship warranty is a selling point, but every service call after closeout is a cost with no corresponding revenue. Build a small warranty accrual into the original estimate (e.g., 0.5–1% of contract) and keep it in the cost-to-complete. When you close out the job, move any remaining accrual to a warranty reserve so future callbacks don't distort margins.

5. Subcontractor and Crew Costing Done in Buckets

If your roofing labor is one generic expense and your subs are lumped together, you can't diagnose why a job faded. Split job costs into consistent cost codes — Tear-off Labor, Underlayment & Dried‑In, Steep‑Slope Install, Membrane, Flashing & Metal, Disposal, Permits, Equipment Rental, Subs, Warranty — so you can compare by phase across jobs, and see that your flashing costs run 18% over.

6. Insurance and Supplement Revenue

On storm restoration work, the carrier's initial scope, supplements, and depreciation are often on different timelines. Only include in Revised Contract Price what is approved in writing. "The supplemental is coming" is not revenue. Keep a future-supplements column — WIP shows reality, that column shows opportunity.

Job Costing That Feeds a Reliable WIP

The WIP is only as honest as the job-cost ledger behind it.

  • Assign every cost a job & code before it posts. No exceptions for credit cards, checks, vendor bills.
  • Reconcile daily or at least weekly. Run a weekly Open Jobs report and compare to foreman logs. A dumpster billed to the wrong job might surface two weeks earlier if you do.
  • Reconcile labor with time tracking. If crews log time by job & code — a phone app or paper sheet — then hours follow the roof.
  • Burden only job costs. Workers' comp rates for roofers are among the highest in construction, so apply burden rates accurately, not by guess.
  • Separate overhead from job costs. Office rent belongs in overhead. Setting them on jobs inflates percent complete — do not do.

If you use QuickBooks, set up "Job Costing" modules, class tracking, or a add‑on like Contractor+ or JobTread to automate the tags. Spreadsheets work at small volume if you are disciplined.

Tax Rules: When the Percentage-of-Completion Method Is Required for Roofing

You don't always have to use percentage‑of‑completion for taxes, but be aware of the limits.

  • Home construction: If 80% of estimated cost comes with the work is for dwelling units of 4 or fewer (your typical re‑roof), you are generally exempt from the mandate — you can use completed‑contract.
  • Small contractor exemption: For non‑home contracts, if your average annual gross receipts for the last 3 tax years are under the inflation‑adjusted figure — that threshold is about $31 million for 2026 — and the contract is expected to last 2 years or less, then you're exempt from §460's rules.
  • If the job runs over two years or receipts are too high, the IRS requires you to use percentage‑of‑completion, which accelerates income recognition.

Note: even if you are tax‑exempt, your lender or bonding company will still require WIP on percentage‑of‑completion. Many roofers keep a management schedule on that basis and at year‑end lower their accountant to reconcile to tax.

We are not accountants — verify limits with a CPA.

How Banks, Bonding Companies, and Buyers Read Your WIP

They want to predict cash flow and risk:

  • Gross profit fade — if forecasted margin per job drops month after month, red flag.
  • Aging of Under-bills — underbilling growing older means you are funding the customer and possibly losing billing discipline.
  • Concentration — if 70% of your backlog is one job / one client, that's a risk.
  • Backlog: backlog is remaining revenue on signed work not yet done. It's about expected profit.

900,000inbacklogwith900,000 in backlog with 40k underbilling — that's cash pressure.

You want a rolling 6‑month history, not one snapshot.

The Monthly WIP Close: An 8‑Step Routine

Block two hours at month‑end to:

  1. Freeze costs — Make sure all receipts & timesheets through month‑end are in the correct jobs.
  2. Review cost‑to‑complete — walk each active job with the foreman; update remaining hours & cost.
  3. Log change orders — approved vs. pending; use only approved in revised price.
  4. Re-calculate — percent complete, earned revenue, over/under.
  5. Explain profit fade — record why. What if margin changed >1pt.
  6. Reconcile to GL — total WIP should tie to the balance sheet (if not, you're missing something).
  7. Invoice — if underbilled, pull forward draw; if overbilled, wait.
  8. Send the one‑pager — to accountant and lender with commentary.

This avoids month‑after‑quarter scramble.

Common Mistakes That Ruin Your WIP

  • Static budgets — Original estimates are just guesses. Keep them updated.

  • Wrong‑period costs — a late bill mailed in next month will claim last month was cheaper. Include the accrual.

  • Bill by invoice — not the WIP does.

  • No retention track.

  • Good intentions but incomplete teamwork — involve both field & office.

  • Ignore residential — Even 3‑day jobs crossing month‑end have a WIP. Batch them.

The Three Numbers That Matter Most After the WIP

Once it's accurate, get these:

  1. Gross profit % — both expected vs. actual to date. If your blended margin on open jobs is dipping, pricing and production are the problem.
  2. Underbilling as a % of monthly revenue — over 25% means you are financing job with cash.
  3. Days of cash tied up in WIP + retainage — how many days of revenue are locked up. If that grows quarterly, you are either underbilling or not being paid.

Simplify

Don't run roofing jobs by bank balance, gut feel, and a year‑end pile. A monthly WIP — backed by good cost tagging — gives each job a transparent story. That’s where Beancount.io helps: plain‑text accounting that's transparent, version‑controlled, and AI‑enhanced to keep your bookkeeping tied to reality. Start for free and see why devs & finance pros are making the switch.

Dit artikel delen