Job Costing Without a WIP Schedule: What Service Contractors Track Instead
Most construction accounting advice is written for project contractors. Percentage of completion, work in progress, over and under billings, retainage, estimated cost at completion. If you run service calls, replacements, and maintenance agreements, almost none of it describes your business, and you have probably concluded that job costing is something other contractors do.
That conclusion is half right. The WIP schedule genuinely does not apply to you. Job costing absolutely does. They are not the same thing, and conflating them is why a lot of service shops run on gut feel with clean-looking books.
Why WIP does not apply to you
A WIP schedule exists to solve one problem: work that spans billing periods. When a job starts in March, gets billed in April, and finishes in June, the month-end financials have to answer an awkward question. How much of that contract have you actually earned so far? Percentage of completion answers it, and over and under billings reconcile what you earned against what you invoiced.
If your work opens and closes inside the same day, or the same week, that timing problem does not exist. Revenue and cost land in the same period without any adjustment. There is nothing to spread and nothing to reconcile.
So building a WIP schedule for a service shop is busywork. We will not do it, and you should be skeptical of anyone who offers to. What you need instead answers a different question, and it is the question that actually decides whether you make money: which work is profitable, and which work only looks profitable because it is busy?
One threshold to watch. If you run replacements or light construction that regularly crosses month end with meaningful cost sitting in it, you are partly a project shop, whether or not you think of yourself that way. At that point some percentage-of-completion treatment starts to matter. The test is not what trade you are in, it is whether cost and billing land in different months often enough to distort the picture.
The four views that replace it
Margin by job type. Service call, diagnostic, repair, replacement, maintenance agreement, warranty. These have wildly different economics and averaging them together is how a shop discovers too late that one category has been subsidizing another for years. This is the single most valuable report a service contractor can have and the one most are missing.
Margin by technician. Not as a performance ranking to wave at people, but because revenue per tech, average ticket, callback rate, and billable-hour ratio vary far more than most owners expect. A tech who runs more calls but generates more callbacks can easily be less profitable than a slower one.
Margin by truck or crew. Each truck carries a real cost: payment, insurance, fuel, maintenance, and the inventory riding around in it. Attributing revenue and cost to the vehicle tells you whether adding truck number four is a growth move or an expensive one.
Margin by channel or customer type. Residential service, commercial contract, new construction, home warranty, and third-party dispatch are not the same business. Warranty and dispatch work in particular can look like volume and behave like a discount.
The unit that matters
For a project contractor the unit of analysis is the job. For you it is the ticket, and there are three numbers on it: revenue, cost, and the gross margin that falls out.
Cost means fully loaded cost. That is where most service job costing quietly fails, because the labor line is entered at the wage rate rather than the burdened rate. If a technician’s wage is $32 an hour and the real cost of a billable hour is north of $53, then every ticket you costed at the wage rate has an invented margin. Our piece on labor burden walks through that calculation. Fix it before you trust any of the reports above, because all four inherit it.
Where service shops actually lose money
Callbacks and warranty work. Labor you pay for, on a ticket you already closed and cannot bill again. If callbacks are not tracked back to the original job and the original tech, they disappear into overhead and nobody learns anything.
Drive time. Paid, unbillable, and driven by dispatch density rather than by technician effort. A route that looks fine on a map can be quietly expensive.
Flat-rate pricing built on stale inputs. The flat-rate book was priced off a burden rate and a parts cost that were accurate when it was built. Comp rates, wages, and supplier prices have all moved since. The book usually has not.
Maintenance agreements sold below the cost to deliver. Recurring revenue is genuinely valuable, and it is also the easiest thing to underprice, because the cost shows up in a later period than the sale. The agreement has to be costed at what it takes to service it, including the visits nobody wants to schedule in August.
Parts margin drift. Markup percentages set years ago, applied to supplier prices that have changed unevenly across categories.
Add-on work that never makes it onto the invoice. The tech who fixes the extra thing while he is there, and nobody bills it. Good for the customer relationship, invisible on the books, and worth measuring so you at least know the size of the gift.
Setting the books up to show it
None of this works unless the ledger is structured for it. In practice that means a few things.
Cost of sales gets segmented into labor, materials, subcontract, and equipment or vehicle, rather than sitting in one undifferentiated bucket. Every ticket carries a job type and a technician. The field service platform, whether that is ServiceTitan, Housecall Pro, or something else, is mapped to the accounting system so that job-level detail survives the trip into the ledger rather than arriving as a single daily deposit. We have written separately on how the books and the job software are two different layers and on accounting for service contractors specifically.
The mapping is where most of the work is. A summarized sync gives you a clean-looking P&L with no ability to answer a single one of the four questions above.
If you run both sides
Plenty of shops run service technicians and install crews under one roof. That is a hybrid, and the right answer is to split the books so each side reports its own margin. The service side gets ticket-level costing. The install side, if jobs cross periods with real cost in them, gets actual project treatment.
Combining them produces a blended margin that describes neither business and hides whichever one is weaker. It is a setup conversation rather than a problem, but it does need to be a deliberate decision instead of an accident.
What a good month looks like
A service contractor with working job costing can open one package at month end and see gross margin by job type, revenue and margin by technician and by truck, average ticket and billable-hour ratio, callback rate with the labor cost attached, maintenance agreement profitability, and a cash position that accounts for the seasonal swing coming.
None of that requires a WIP schedule. All of it requires job costing. If your current reporting cannot answer which job type makes you the most money, that is the gap, and it is a fixable one.
Want to see what your numbers would say? Book a discovery call, or read more about how job costing actually works.