How to Calculate Effective Labor Rate for an Auto Repair Shop

You know your posted rate to the dollar. It is on the wall, in the estimating software and on every invoice you have written this year.

Now answer a different question: across every hour you sold last month, what did an hour actually collect?

Most owners answer with the posted rate, because nothing they look at has ever suggested otherwise. In the worked sample shop used throughout this cluster, the posted rate is $145.00 and the answer is $138.91.

That is not a rounding difference. It is $6.09 an hour, and across 141.3 hours sold it is $861 that exists in no expense category, in no P&L line, in nothing you could have found by looking harder at your books. It never arrived, so it was never recorded as leaving.

The Formula

Effective labor rate = (total labor billed − total labor discounts) ÷ total labor hours sold

Three inputs. Two of them you almost certainly have. The third — discounts, recorded as their own column rather than absorbed into a lower price — is the one that is usually missing, and it is missing for a reason we will come back to.

One note on the denominator that catches people out: hours sold, not hours worked. You are asking what an invoiced hour collected. If you divide by clock hours instead you get labor revenue per hour present, which folds technician efficiency into the same number and makes it impossible to tell a rate problem from a productivity problem. Those are two separate diagnoses with two separate fixes.

A Worked Month

Here is a month built from round numbers so the mechanics are visible. Assumptions are mine and labelled.

Work type Hours sold Rate billed Labor revenue
Standard retail work 88.0 $145.00 $12,760.00
Fleet account (contracted) 26.0 $128.00 $3,328.00
Warranty / internal 6.0 $105.00 $630.00
Total 120.0 $16,718.00

Then the discounts, which were given as goodwill and never posted anywhere:

Discount given Amount
Diagnostic comped on 4 jobs (0.5 hr each, not invoiced) −$290.00
Two tickets rounded down to a flat figure −$185.00
Long-standing customer, 10% off labor −$143.00
Total −$618.00

Effective labor rate = ($16,718.00 − $618.00) ÷ 120.0 = $134.17

Against a posted $145.00, that is a $10.83 gap — 7.5%. Over a year at this volume, roughly $15,600.

One note on the comped diagnostic hours: they never went onto a ticket, so they are not in the 120 hours sold. Treating them as a discount rather than as unsold hours is the harsher of the two readings — it charges the write-off against the rate you did collect, which is the point of the exercise. If you would rather see them as capacity you gave away, put the 2 hours in the denominator and take the $290 back out of discounts instead — the rate comes out at $134.34, near enough the same answer. What matters is that you pick one treatment and keep it, so the figure is comparable month to month.

And notice where the gap came from. The discounts are the smaller half. The larger half is the 32 hours sold at a rate below posted, which nobody in the building thinks of as a discount at all, because it is “the fleet rate” and “warranty” — two things that feel like categories rather than decisions.

The Five Leaks, In the Order They Usually Matter

1. Fleet and contracted rates that were never revisited. A fleet rate set three years ago against a posted rate that has risen twice since. This is normally the largest single component and the easiest to fix, because fleet contracts have renewal dates and the customer is expecting a conversation.

2. Comped diagnostic time. Half an hour written off to “look at it” before the job is sold. Reasonable once. Standing policy by accident, and invisible because it was never on a ticket to begin with. If you comp diagnostic time, decide it deliberately and log it as a discount so you can see the annual cost of the policy.

3. Quoted hours that undershot. A job quoted at 2.5 and taking 3.1, billed at 2.5 because that is what was agreed. Correct behaviour with the customer, but the 0.6 is real. If a particular job type does this repeatedly your book time for it is wrong, and that is a fixable estimating problem rather than a rate problem.

4. Round-number tickets. $942.68 becomes “call it $900.” The $42.68 is a labor discount and almost never gets written down as one, because rounding down feels like courtesy rather than cost.

5. Percentage discounts on labor. Visible, at least, but often given at the counter without ever being totalled at the end of the month.

Notice that four of these five never touch an expense account. That is the whole problem: the erosion is entirely on the revenue side, entirely in small pieces, and entirely invisible to anything that reports totals rather than rates.

Why Recording Discounts Separately Is Harder Than It Sounds

The reason most shops cannot calculate this is not arithmetic. It is that a discount given at the counter is a slightly uncomfortable moment, and the natural way to record it is to simply write a smaller number. The invoice says $900 and everyone moves on.

Recording $942.68 with a −$42.68 discount column takes four more seconds and produces an entirely different year. It is the same information; it is just kept in a form you can add up later. The difference between a shop that knows its effective rate and one that does not is almost always that single column.

What to Do With the Number

Once you have it, track the gap rather than the rate — the gap is comparable across time even when you change the posted rate, and it is the thing you can act on.

That last point is worth sitting with. A $10 increase on the wall lifts your retail hours by $10 and your contracted fleet hours by nothing. If a third of your hours are fleet, you have just bought a $6.67 average increase, with all of the customer friction of a $10 one. The leaks are free to fix and cost you no goodwill at all.

Effective labor rate is one of two halves of a repair shop’s margin. The other half is priced at the parts counter and works completely differently — the full picture is in tracking parts and labor profit separately.


Featured on ReadySheetGo

Auto Repair Shop & Mobile Mechanic Job Tracker — $16.99

Eleven linked tabs and 11,763 working formulas, with 53 closed repair orders pre-filled so the effective labor rate calculation above is already running when you open it.

Settings holds your posted rate, your fleet rate, your target gross margin and your minimum parts margin. Repair Orders gives discount its own column on all 200 rows — the column that makes this calculation possible — alongside parts sold, parts cost, hours, rate, sublet, supplies, travel and rework. Shop Stats returns your effective labor rate, the gap against your posted rate, and that gap multiplied by every hour you sold, so the leak reads in dollars rather than cents. Jobs still in the bay are held out of the calculation as work in progress, because half-logged hours would drag the rate down for no reason.

Also inside: Technicians setting hours billed against hours actually worked; Declined Work with follow-up dates; Parts Inventory priced by your own matrix; Vehicles by VIN with service intervals; Monthly & Trends across twelve rolling months and shop against mobile; and a Dashboard of twelve figures including effective labor rate, parts and labor margin separately, average repair order and comeback rate.

Works in Excel and Google Sheets. No macros, no add-ons.

Get the Auto Repair Shop & Mobile Mechanic Job Tracker →

Frequently Asked Questions

What is the formula for effective labor rate?

Total labor dollars billed, minus every discount given against labor, divided by total labor hours sold. Not hours worked — hours sold. The result is what a sold hour actually put in the till. In the worked shop on this page, a $145.00 posted rate returns a $138.91 effective rate across 141.3 hours sold.

Should hours worked or hours sold go in the denominator?

Hours sold. Effective labor rate answers 'what did each hour I invoiced actually collect', so the denominator is billed hours. Putting hours worked in the denominator answers a different and also useful question — labor revenue per clock hour, which folds in efficiency — but it is not the effective labor rate and mixing the two makes benchmark comparisons meaningless.

What is a good effective labor rate?

There is no universal dollar figure because rates vary enormously by region, specialism and whether you carry fleet accounts. The useful benchmark is internal: the gap between your posted rate and your effective rate, measured as a percentage. Under about 3% is tight. Above 8% means something structural is happening — usually undiscounted fleet work billed at a rate nobody ever revisited, or comped diagnostic time that has quietly become policy.

Does raising my posted labor rate fix a low effective rate?

Only partly, and usually by less than you expect. Discounts given as a percentage scale up with the rate, so they take a bigger bite. Fleet accounts on a fixed contracted rate do not move at all. And comped diagnostic time is unaffected by the rate on the wall. If a large share of your gap comes from fleet or comped hours, a $10 rate rise can move the effective rate by $6 or less. Fixing the leaks first is cheaper and does not cost you a single customer.

Separate Parts Margin From Labor Margin — They're Fixed in Different Places

The Auto Repair Shop & Mobile Mechanic Job Tracker — 11 linked tabs and 11,763 working formulas, with a fully worked sample shop already loaded — 53 closed repair orders, five jobs still in the bay — so you can see it running before you type anything. A Settings tab holding your posted labor rate, fleet rate, target gross margin, minimum acceptable parts margin, shop supplies percentage, cost per mile and your own parts pricing matrix, which drive every other tab; a Repair Orders master of 200 rows where parts, labor, sublet, supplies, travel, discount and rework all sit on one line and the job returns its own parts margin and labor margin separately, because those two numbers are fixed by two completely different actions — a pricing decision at the counter and a rate-and-efficiency decision on the schedule — and a blended figure asks for neither; a Shop Stats tab that works out your effective labor rate, which is total labor billed minus every discount given, divided by every hour sold, then multiplies the gap against your posted rate by all your hours so the leak appears in dollars rather than cents; a Declined Work log of 120 rows holding every repair a customer said no to, what it was worth, how urgent it was and a follow-up date the file works out for you from the day you offered it, with safety items flagged and recovered work counted; a Technicians tab setting hours billed against hours actually worked to return efficiency per person and the labor gross profit each one produced after their own pay; a Parts Inventory of 120 lines priced by your matrix, valued at cost and at retail, flagged for reorder and flagged again for anything under your minimum margin; a Vehicles tab holding 100 VINs with visits, lifetime spend, last mileage, next service due from your own interval and the declined work still open on that exact car, so the reminder call has something specific to say; a Monthly & Trends tab running twelve rolling months then splitting by service type and shop against mobile; and a Dashboard returning twelve figures including revenue, gross profit, gross margin, average repair order, hours sold, effective labor rate, parts and labor margins separately, comeback rate, open declined work and the value sitting in the bay. Open jobs are reported as work in progress at estimated value and kept out of revenue, margin, car count and the effective labor rate, because counting the hours logged so far on an unfinished job is the quickest way to make a shop look more profitable than it is. A Row Check column catches a date out before the date in, hours with no rate, parts sold under cost, a discount larger than the ticket, travel miles on a shop job and a technician who is no longer on your list. Works in Excel and Google Sheets, no macros and no add-ons.

View on Etsy — $16.99