Construction Small Tools and Consumables Cost Allocation in Excel

Open any contractor's general ledger and you will find an account called "shop supplies" or "job materials, miscellaneous." It holds saw blades, drill bits, abrasive wheels, fuel cells for the gas nailers, layout paint, chalk, construction adhesive, sanding media, and the $14 box of screws somebody grabbed at the counter on Tuesday afternoon. On most commercial subcontractors it runs between 1.5 and 3 percent of direct labor cost. It almost never gets charged to a job. Construction small tools and consumables cost allocation in Excel is the standard fix for that, and it is worth doing.
It is also worth roughly a tenth of what the exercise actually gives you.
Here is the argument this article makes. Getting the allocation right moves a job's cost by one to two thousand dollars. That is real, and we will build it. But the moment you start charging consumables to jobs, the ledger starts answering a question nobody asked it: how often is a crew running out of material in the middle of a task and sending somebody to the supply house? On the company modeled below, that question is worth $17,956 a year, and it is invisible on the profit and loss statement because the dollars land in exactly the same account either way.
The company: a commercial interiors subcontractor doing metal stud framing, drywall, and finish. Revenue $4.2 million. Fourteen field employees, 30,800 field hours a year, $1,480,000 of burdened field labor, which works out to $48.05 per field hour. Consumables spend for the year: $38,600, or 2.6 percent of labor cost.
Set the boundary before you set the rate
Most attempts at this die in week two, when somebody asks whether the $340 rotary hammer belongs in the pool. Settle it first, with a written rule, because the IRS already made you write one if you are expensing anything.
A consumable is consumed by use. It has no resale value, its life is measured in days or weeks, and nobody would notice if it walked off the job. Blades, bits, abrasives, fasteners, fuel cells, glue, gloves, layout paint, string line, and blades again. These go in the pool and get allocated to jobs.
A small tool has a life measured in months, it has a name or a number on it, and somebody gets annoyed when it disappears. Cordless drills, lasers, hammer drills, drywall lifts. These do not belong in a consumable pool. They belong in a tool pool with an internal rental rate, or on the fixed asset schedule, and the reason is that mixing them in makes the consumable rate jump every time somebody buys a laser, which destroys the signal you are building the rate for in the first place.
The tax line is separate from the accounting line and worth knowing so you do not confuse the two. Under the de minimis safe harbor election in Treasury Regulation 1.263(a)-1(f), a taxpayer without an applicable financial statement can expense tangible property up to $2,500 per invoice or per item rather than capitalizing it, and $5,000 with an applicable financial statement. It requires a written accounting policy in place at the start of the tax year and a statement attached to the timely filed return. That threshold tells you what you can deduct now. It does not tell you what belongs in a consumable rate, and a $2,400 laser is deductible and still not a consumable.
In the spreadsheet, the boundary is one column and one formula on the purchase register: =IF(AND(D4<$B$2,E4="consumed"),"CONSUMABLE","TOOL POOL"), where B2 holds your own threshold, which for most subcontractors is somewhere between $75 and $200 and has nothing to do with the tax number.
Allocate on hours, not on labor dollars
The common advice is to allocate consumables as a percentage of direct labor cost. That is the wrong base, and the reason is physical.
Blades wear out per hour of cutting. Bits dull per hole drilled. Fuel cells empty per shift of nailing. None of that has any relationship to what you pay the person holding the tool. Allocate on labor dollars and a crew running a $38 per hour foreman consumes 22 percent more blades, on paper, than an identical crew running a $31 per hour foreman doing the identical work. Give the whole field a raise in March and every job after March looks like it burned more consumables. It did not. The base moved.
Allocate on field labor hours and the rate stays put when wages move, which means a rate you set in January is still meaningful in November. That is the entire test of a good allocation base.
Blended rate, laid out at the top of the rate sheet:
| Cell | Item | Value |
|---|---|---|
| B3 | Field labor hours, trailing 12 months | 30,800 |
| B4 | Consumable pool, trailing 12 months | $38,600 |
| B5 | Blended rate per field hour =B4/B3 | $1.25 |
| B6 | Burdened labor cost per field hour | $48.05 |
| B7 | Consumables as percent of labor =B4/(B3*B6) | 2.6% |
A dollar twenty-five an hour. That is the number most contractors are missing from their bids entirely, and on a 2,000 hour job it is $2,500 that currently comes out of your fee.
Build the rate table in Excel
One rate for the whole company is better than no rate, and it is still wrong in a way that costs you work. Demolition eats blades. Taping eats almost nothing. If you carry one blended rate, every demo hour you bid is subsidized by every taping hour you bid, and you will win demo work you should have priced higher.
Split the pool by work type. You need two things from your accounting system to do it: consumable purchases coded to a work type, and field hours coded to the same work types. If your job cost codes already split framing from hanging from finishing, you have both and did not know it.
| Work type | Field hours | Consumable spend | Rate per hour | vs blended |
|---|---|---|---|---|
| Demolition and selective demo | 3,400 | $9,850 | $2.90 | 2.3x |
| Metal stud framing | 8,900 | $14,200 | $1.60 | 1.3x |
| Board hang | 7,600 | $8,400 | $1.11 | 0.9x |
| Tape and finish | 7,300 | $4,900 | $0.67 | 0.5x |
| Punch and layout | 3,600 | $1,250 | $0.35 | 0.3x |
| Total | 30,800 | $38,600 | $1.25 | 1.0x |
Each rate is =C9/B9 filled down. The spread from $0.35 to $2.90 is a factor of eight, which is why the blended number is a poor tool for pricing a specific scope.
To price a job, enter estimated hours by work type and let the sheet do the rest with =SUMPRODUCT($C$9:$C$13,$D$9:$D$13), where column C carries the job's hours by type and column D carries the rates. One cell, no manual math, and it updates every time you refresh the rate table.
What one blended rate hides
Two jobs from the same year, same company, same crews. Job A is a hospital corridor: heavy selective demolition, then reframe, then a little board. Job B is a tenant finish-out: mostly hang and tape.
| Job | Hours | Blended at $1.25 | By work type | Miss |
|---|---|---|---|---|
| A, hospital corridor demo and reframe | 1,850 | $2,313 | $3,789 | Under by $1,476 |
| B, tenant finish-out | 2,400 | $3,000 | $2,177 | Over by $823 |
The blended rate takes $823 out of the finish-out job's margin and hands it to the demo job, then reports both numbers to you as fact. Bid enough demo work off that picture and you build a backlog of jobs that price well on paper and finish thin.
Now hold that thought, because $1,476 on a job is worth having and it is not the reason to build this. It is a 0.5 percent correction on a $310,000 job. If that were the whole payoff, you would be right to leave consumables in overhead and go sell something. The payoff is in the next section.
This is also the point where consumables stop being a special case and become one pool among several. The same logic applies to supervision, the trailer, the dumpsters, and the truck fleet, and the choice of allocation base drives all of it. That larger question is worked through in allocating construction overhead by job in Excel, which shows a $110,400 winner reported as a $6,500 loser purely on the choice of base.
The variance nobody reads is the ticket count
Once every job carries an expected consumable cost, every job also carries a variance. Most contractors look at the dollar variance, shrug because it is small, and stop.
Look at a different column. Count the tickets.
Thirty-eight thousand six hundred dollars of consumables delivered in 41 wholesale orders is a supply chain. The identical $38,600 delivered in 390 counter tickets from the box store down the road is 390 trips. The general ledger cannot tell these apart. The account balance is the same to the penny. The difference between them is about thirty thousand dollars of field labor that nobody has ever put a number on, because it is not sitting in the shop supplies account. It is sitting in your production labor cost codes, disguised as work.
Two formulas turn the purchase register into that signal. Dollars per job: =SUMIFS(Buy!$F:$F,Buy!$B:$B,$A18,Buy!$G:$G,"CONSUMABLE"). Unplanned counter runs per job: =COUNTIFS(Buy!$B:$B,$A18,Buy!$H:$H,"COUNTER",Buy!$F:$F,"<"&$B$25), where column H flags the vendor type and B25 holds a small-ticket threshold, typically $250.
The flag that makes it a management tool rather than a report: =IF(F18/E18>1.4,"REVIEW","OK") on the ratio of actual to expected. Anything above 1.4 is either a scope you mispriced or a crew that is buying its way through the week one trip at a time, and the ticket count tells you which.
What a supply run actually costs
Price the trip once, honestly, and put the number in a cell.
| Cell | Component | Value |
|---|---|---|
| B31 | Drive time, round trip | 0.73 hr |
| B32 | Counter and parking time | 0.25 hr |
| B33 | Crew drag on paired tasks while one person is gone | 0.75 hr |
| B34 | Burdened labor rate | $48.05 |
| B35 | Round trip miles | 18 |
| B36 | Marginal vehicle cost per mile | $0.28 |
Labor cost of one run: =(B31+B32+B33)*B34, which returns $83.13.
Vehicle cost of one run: =B35*B36, which returns $5.04.
Total cost of one unplanned supply run, cell B39: =B37+B38, which returns $88.17.
The crew drag line is the one people argue about and it is the one that matters. Hanging board is a two person task. When one of the two leaves for an hour, the other does not produce at his normal rate, he produces at maybe a quarter of it, and on a four person crew the effect ripples. Three quarters of an hour of drag per run is conservative on paired work and generous on solo work. Measure your own if you want, but do not set it to zero, because zero is the assumption that has been hiding this cost for the entire life of your company.
Now count the year. The purchase register showed 322 counter tickets under $250 across all jobs.
| Measure | Value |
|---|---|
| Unplanned counter runs, trailing 12 months | 322 |
| Cost per run | $88.17 |
| Annual cost of running out | $28,390 |
| Field hours consumed by supply runs | 557 |
| Share of all field hours | 1.8% |
| Annual consumable pool, for comparison | $38,600 |
| Cost of running out, as share of the pool | 73% |
The cost of running out of a $6 blade is 73 percent as large as every blade, bit, wheel, and cartridge the company bought all year. Cell for cell: =B40*B39 where B40 is the ticket count.
And it is worse than a straight cash number, because those 557 hours were charged to production cost codes. They are inside your historical unit rates. When you pull last year's hours per 1,000 square feet of board to price next month's bid, you are pricing 1.8 percent of driving into the work and calling it production. You then either lose the job to somebody who is not carrying that freight, or you win it at a price that assumes you keep doing this.
The fix costs $7,000 of float and returns $17,956
The fix is not a policy memo about planning ahead. It is inventory, and inventory costs money, so price it like any other decision.
Stock a sealed consumables box on each crew's truck: a defined list of blades, bits, wheels, fuel cells, tape, and fasteners, replenished weekly by a delivery from your wholesale supplier off a count sheet the shop hand fills out. Five crews, about $1,400 of stock per crew, so $7,000 of working capital sitting in trucks. That is the entire investment.
| Line | Amount |
|---|---|
| Counter runs eliminated (322 down to 90) | 232 runs |
| Labor and vehicle recovered, 232 runs at $88.17 | $20,455 |
| Shop hand time to run replenishment, 3 hr per week at $34.20 | ($4,720) |
| Counter pricing premium recovered, 21% on the shifted volume | $2,221 |
| Net annual return | $17,956 |
| One time working capital float | $7,000 |
The counter pricing line is the part contractors forget. Retail counter pricing on blades and abrasives runs roughly 20 percent above the wholesale sheet. This company put about $17,760 through counter tickets last year, which carries around $3,082 of pure premium, and shifting 72 percent of that volume to wholesale recovers $2,221 of it. You do not get all of it because some runs are genuinely unavoidable.
Ninety runs a year survive on purpose. Special order items, tool failures, a scope change on Wednesday. Do not budget for zero. Budget for ninety, put the number in the sheet, and treat month over month drift above it as a signal rather than a moral failing.
Set against the allocation refinement from earlier, the ranking is not close. Fixing the rate table is worth about $1,476 of accuracy on a demo job. Fixing what the rate table revealed is worth $17,956 a year and takes 401 field hours out of your unit rates, which is 1.3 percent off every labor number you bid.
Do this before your next bid goes out
Four things, in order, and none of them require new software.
- Export twelve months of purchases from the shop supplies account. Add two columns: vendor type (wholesale or counter) and work type. An afternoon.
- Build the rate table. Field hours by work type in one column, consumable spend by work type in the next, divide. You now have five rates instead of one guess.
- Count the counter tickets under $250 and multiply by your own trip cost. Do not use $88.17. Use your drive times, your burdened rate, your crew sizes. The number will not be small.
- Put the per hour rate into your estimate template as a line, not as a percentage buried in overhead. A bid that carries $2,500 of consumables as an explicit line survives a value engineering conversation. A bid that hides it in a markup does not.
The reason this works is not that consumables are expensive. They are not. It is that consumables are the only cost on a construction project that gets bought in small amounts, frequently, by the person who is supposed to be building something. Every one of those purchases is a stopped tool, and the ledger entry is the only receipt you get for it.
The tedious part is not the arithmetic, it is the structure: a purchase register that codes vendor type and work type, a rate table that recalculates when you refresh it, a per job variance that flags itself, and a trip cost that feeds off your own burdened labor rate instead of a number from an article. Our Construction Budget Tracker ships with that structure already wired, including the cost code framework, the committed versus actual variance logic, and the labor hour tracking that the consumable rate divides into. You point it at your last twelve months of purchases and you have five rates and a trip count by Friday, instead of building the sheet from a blank workbook and abandoning it in week two like the last three attempts.
Related template
Construction Budget Tracker
Track every line item, change order, and payment across your entire project. Spot a $23K billing discrepancy before it hits your bottom line — not after.
Get the Template — $49