How to Attribute Shared Costs Across Jobs

Why this matters

Some costs sit on one job and some are shared across several, and the shared ones decide whether your job costing tells the truth. Drive on a four-stop day, a box of fittings that will serve nine jobs, the twenty minutes of morning staging, the helper who split the afternoon between two sites: none of these belong to a single job, and every shop handles them with a habit rather than a rule. The habit is almost always the simplest one, an equal split, and an equal split systematically flatters exactly the jobs you most need honest numbers on, the far ones and the small ones. Fix the allocation and a whole category of "why is this job type never profitable" answers itself.

First question: can you trace it instead?

Allocation is a fallback, not a method. Anything you can trace directly to a job should be traced, even if tracing takes a little effort, because a traced cost is a fact and an allocated cost is an assumption with a formula attached.

Drive between two stops is traceable from a timestamp. A part pulled from the truck is traceable from a scan or a note. Time on site is traceable from a clock. Reach for allocation only for things that genuinely cannot be attached to one job: a box of consumables, a shared shop hour, a supplier run that served three jobs at once.

Shops that allocate what they could have traced end up defending a formula in a meeting instead of reading a number.

The three rules that keep allocation from becoming fiction

Use a driver you already measure. The allocation basis has to be something already in your system: job count, on-site hours, material cost, visits. If the rule requires anybody to record something new, it will be followed for about six weeks and then quietly abandoned, leaving you with a partially-allocated dataset, which is worse than an unallocated one.

Consistency beats precision. A slightly crude rule applied identically to every job produces numbers you can compare. A precise rule applied to some jobs and not others produces numbers you cannot. If you have to choose, choose the one you will actually apply every time.

Write the rule down with a date. Allocation rules drift because they live in one person's head. Write the rule, the driver, and the date you adopted it next to the price book, and when you change it, note the change so a year-over-year comparison does not silently become an apples-to-oranges one.

Drive time on a multi-stop day

Three methods, in increasing order of accuracy and effort.

Equal split. Total the day's drive and divide by the number of stops. Fast, and wrong in a specific direction: it charges the close stop for the far stop's drive. Use it only as a starting point on your way to something better.

Leg-based. Each job carries the drive on the leg that reached it. The return-to-shop leg goes to the last job of the day, because that job is what put the truck out there at the end. This is the default worth adopting for routine costing: it uses timestamps you already have, and it charges drive to the job that caused it.

Marginal. Each job carries the drive it added to the route compared to a route without it. This is the right method for a specific decision, such as whether a service area or a customer is worth keeping, and it is too laborious for every job every day. Keep it in the toolkit and reach for it when the question is "should we serve this at all."

Consumables bought in bulk

Fasteners, tape, sealant, wire nuts, rags, blades, small fittings. Individually trivial, collectively not, and impossible to trace without wasting more time than the material costs.

Set a flat per-visit consumables allowance, derived by dividing last quarter's total consumables purchases by last quarter's visit count, and refresh it quarterly. That gives you a driver you already have, a number grounded in actual spend, and a refresh cadence that catches drift.

Do not allocate consumables by material cost. A job with one expensive component and a job with a pile of cheap fittings consume opposite amounts of consumables from the same material spend, and the ranking will be exactly backwards.

Shop and prep time

Morning truck check, staging, paperwork, end-of-day close-out. Allocate by job count, not by hours, because most of this work is per-stop rather than proportional to job size. The exception is material staging on install work, which genuinely scales with the job, so allocate that piece by on-site hours if it is large enough to matter and can be separated from the rest.

A helper, a second tech, and split days

Two people on one job is not shared cost, it is traceable cost: log both sets of hours to that job. The shared case is the helper who spends part of a day on each of two jobs. Log actual hours to each, and if the split is genuinely unknown because nobody tracked it, that is a logging problem to fix rather than an allocation problem to solve.

The one real allocation here is travel for a second body who rode along. Assign it to the job that required the second person, not split across both.

The supplier run that serves three jobs

Split the run's drive and time by count among the jobs it actually served. If the run also picked up general stock, the general-stock portion goes to overhead, because a job did not cause it.

Where the run exists because of one job's missing part and the other two pickups were opportunistic, assign it entirely to the job that caused it. This matters more than the amount involved, because that is how you find out which job types keep sending techs to the counter.

What stays in overhead on purpose

Rent, insurance, admin salaries, software, marketing, owner time on the business. These do not vary with the job and they are recovered through your labor rate, not by allocation to individual jobs.

The failure mode here is double recovery: an owner allocates overhead across jobs at the job level while the labor rate already carries an overhead component, and every job now reads as unprofitable. Two people then spend a quarter arguing about pricing based on a number that counts the same cost twice. Pick one mechanism. For a small shop, recovering overhead through the rate is simpler, is what your rate build already assumes, and keeps job costing focused on the costs the field controls.

A worked day, allocated end to end

One tech, four stops, one day.

Drive legs: shop to A 0.4 hours, A to B 0.3, B to C 0.6, C to D 0.5, D back to shop 0.7. Total drive: 2.5 hours.

On-site: A 1.5 hours, B 1.0, C 2.0, D 1.2. Total on-site: 5.7 hours.

Morning prep and staging: 0.5 hours. Total paid hours for the day: 5.7 + 2.5 + 0.5 = 8.7.

Drive, leg-based. A carries 0.4. B carries 0.3. C carries 0.6. D carries its own 0.5 plus the 0.7 return leg, so 1.2. Those sum to 2.5, which reconciles.

Prep, by job count. 0.5 / 4 = 0.125 hours each.

Job On-site Drive (leg) Prep Fully allocated
A 1.5 0.4 0.125 2.025
B 1.0 0.3 0.125 1.425
C 2.0 0.6 0.125 2.725
D 1.2 1.2 0.125 2.525

The four allocated totals sum to 8.70 hours, matching the 8.7 paid hours exactly. That reconciliation is not a formality, it is the check that proves nothing was dropped or double-counted.

What the table shows. Job D had the second-shortest on-site time of the day at 1.2 hours, and the second-highest fully allocated cost at 2.525 hours. Its drive equals its on-site time. If D's job type is priced off on-site time, as short service work usually is, it is recovering 1.2 / 2.525 = 47.5% of the labor hours it actually consumes.

What the equal split would have said. Dividing the 2.5 drive hours evenly gives 0.625 to each job, so D's allocated total becomes 1.2 + 0.625 + 0.125 = 1.95 hours instead of 2.525. That is 1.95 / 2.525 = 77% of its real consumption, understating the far short job by about 23%, while overstating job A, the closest stop, by a similar mechanism in the other direction.

Now scale that. If D is representative of a job type you run every day at the edge of your service area, the equal split has been telling you for years that the type is marginal when it is actually losing, and every attempt to fix it by trimming on-site time was aimed at the smaller half of the problem.

How to verify your allocation is not distorting anything

Reconcile, every period. Allocated hours across all jobs must equal paid field hours. Allocated material must equal material purchased, less what genuinely went to stock. If the two sides do not close, some cost is either missing or counted twice, and you will not find it by looking at job-level numbers.

Run the swing test. Recompute one period under two different allocation rules, for instance leg-based drive against equal split. If a job type's profitability ranking flips between the two, your conclusion about that type is being produced by an arbitrary choice rather than by the data, and that type needs the marginal method before you act on it. If the ranking holds under both rules, the finding is solid and you can stop refining.

Check the rule is actually being applied. Pull ten recent jobs and confirm each carries a drive allocation and a consumables allowance. Blanks mean the rule is aspirational. Uniform identical values on jobs with obviously different routes mean somebody is applying an equal split under a leg-based label.

References

  • U.S. Small Business Administration (SBA), cost accounting and pricing fundamentals for small business
  • Generally Accepted Accounting Principles (GAAP), direct cost and indirect cost concepts
  • See related: The Cost Categories Worth Separating, Overhead Recovery: Are You Charging Enough, The True Cost of a Return Trip, How to Capture Actual Costs Without Slowing the Crew