Guides/contractors and the firms that serve them
Job costing and WIP for contractor bookkeeping
Oct 1, 2026 · 6 min read

Job costing for contractors means every material purchase, subcontractor bill, and hour of labor is tagged to the job it belongs to at the moment it posts, so the books can show margin per job instead of one blended P&L. WIP, work in progress, is the monthly adjustment that brings revenue in line with how much of each job is actually done, so a big deposit received in March doesn't look like profit and a month of unbilled framing doesn't look like a loss. Together they turn a contractor's books from a bank-balance guess into a job margin report the owner can price the next bid from.
We run an accounting firm with contractor clients from one-truck remodelers to GCs running a dozen jobs, and the same two problems show up in every set of books that arrives without job costing. Here's how we set it up.
Why the P&L hides losing jobs
A contractor's P&L for the year might show revenue of $1.8 million and a net profit of $140,000. That looks fine. What it can't show is that four of the eleven jobs made $90,000 each, three broke even, and four lost money, including the biggest one. The owner priced next year's bids off the blended number, won more of the losing kind, and wondered why the profit shrank.
The P&L also lies about timing. A $60,000 deposit on a kitchen remodel lands in the bank in March; the P&L calls it March revenue and shows a great month. The materials and subs post in April and May; those months show losses. By June the job is done and the annual total is right, but every monthly number in between was wrong, and the owner made decisions on each one.
Job costing fixes the first problem. WIP fixes the second. Neither works without the other.
Tagging materials, subs, and payroll to jobs
Every cost gets a job tag when it posts, not when someone reconstructs it at year end.
Materials. The lumber yard, the electrical supply house, the big-box store. Purchases post from the feed or from the bill, and each line gets a job. The rule that codes "ABC Supply" to Materials can't pick the job, so the job comes from the PO number, the delivery ticket, or the owner's note in the receipt request. A receipt request that asks "which job?" at the time of purchase gets an answer; the same question in January gets a shrug. Materials bought for stock and pulled to jobs later go to an inventory or unassigned account and get moved when they're used.
Subcontractors. Sub bills are the easiest to tag because they almost always name the job. Each bill carries the job, and retainage held from the sub is a liability per job, not a reduction of the expense.
Payroll. Labor is the tag that most contractors skip and the one that matters most. Field hours by job come from the time-tracking app, the foreman's daily log, or the payroll provider's job-cost export. The payroll journal then posts wages, employer taxes, and workers' comp by job, in proportion to hours. A job with $40,000 of materials and subs and $25,000 of unallocated labor looks profitable and isn't. Burden (taxes, comp, benefits) travels with the wages; a rate applied to direct labor is fine if it's applied consistently.
Equipment and the truck. Owned equipment gets charged to jobs at an internal rate if the owner wants full job cost, or left in overhead if not. Either is defensible. What isn't defensible is charging it to some jobs and not others.
Overhead (the office, the insurance, the estimator's salary) stays out of job cost. Job margin is revenue minus direct cost. Overhead gets covered by the total of all the margins, and the report shows whether it is.
Work in progress and percent complete
WIP is the monthly entry that adjusts revenue to match the work done. The standard method is cost-to-cost: percent complete equals costs incurred to date divided by total estimated costs for the job. Earned revenue equals the contract price times percent complete. The difference between earned revenue and what's been billed is the WIP adjustment.
Two cases:
- Billed more than earned (a deposit, or front-loaded progress billing): the excess is a liability, billings in excess of costs. Revenue is reduced to what was earned.
- Earned more than billed (work done, invoice not yet sent): the shortfall is an asset, costs in excess of billings. Revenue is increased to what was earned.
The entry reverses at the start of the next month and is re-computed at the next close, so the balance sheet always shows the current over- and under-billing position and the P&L shows earned revenue. It needs three inputs per open job: contract price including approved change orders, costs to date (which job costing provides), and estimated cost to complete, which the owner or estimator updates monthly. That last input is where the conversation happens, because a job whose estimate to complete keeps growing is a job that's going to lose money, and the WIP schedule shows it before the final invoice does.
Small contractors on the cash method for tax still benefit from a book WIP entry, because the owner needs the real margin even if the return doesn't. The tax accounting method question (cash, accrual, completed contract, percentage of completion, and the thresholds that decide which are available) is a separate decision the preparer makes; the books can support any of them if the job tags and the WIP schedule exist.
The monthly job-margin report
One page per month: every open and recently closed job, with contract price, costs to date by category, percent complete, earned revenue, billed to date, over or under billing, and margin to date against the estimated margin at bid. Closed jobs show final margin against bid margin.
That last column is the one the owner learns from. Bid at 28 percent, finished at 11 percent: was it the estimate, the labor, a change order that never got billed, or a sub who came in high? Each is a different fix, and after three months of the report the estimating gets better. That's the CFO deliverable for contractors, and it's the one they renew. We wrote about the general shape of that report in margin by service line as a CFO report; for contractors the line is the job.
Retainage, deposits, and cash flow
The "profit but no cash" complaint has three usual sources, and the job-costed books show which.
Retainage receivable. The customer holds 10 percent until final completion. On a $400,000 job that's $40,000 earned, booked as revenue, and not in the bank for months. It belongs in its own receivable account so the owner can see how much of the year's profit is sitting in retainage across all jobs.
Deposits spent on the prior job. A deposit for job B pays the subs finishing job A. The WIP schedule shows job B over-billed and job A under-billed, and the cash forecast shows the week when job B's costs arrive with no deposit left to cover them. The 13-week cash flow forecast is the fix, built from the job schedule.
Change orders done and not billed. Work performed on a verbal change order, never priced, never invoiced. It's in job cost as an expense and nowhere as revenue. The monthly report's "earned more than billed" line catches it while the customer still remembers asking for it.
Where the platform comes in
Woven is our product, and job costing runs on it as a dimension on every invoice, bill, and payroll line, with the receipt request asking for the job at the time of purchase and categorization rules carrying the vendor while the job tag comes from the PO or the owner's answer. The payroll journal allocates wages and burden by job from hours, the WIP schedule posts and reverses as part of the monthly close, and the job-margin report and the 13-week cash forecast run as packages off closed books. Retainage sits in its own sub-ledger per job. To see the job-margin report on a live contractor file, book a demo.
Frequently asked questions
- What is job costing?
- Tagging every material, subcontractor, and labor cost to the job it belongs to when it posts, so each job's margin is visible.
- What is WIP in contractor accounting?
- Work in progress: adjusting revenue to percent complete so deposits received don't overstate profit and unbilled work doesn't understate it.
- How often should contractors see job margin?
- Monthly, with WIP adjusted, as part of the close.
See Woven on your own books.
14-day free trial, no card. Migration imports your chart of accounts, customers, vendors, balances, and history so you verify instead of re-enter.
Book a demo