Parts markup is not a surcharge for handing over a fitting. It pays for a set of real costs that never appear on the invoice, and a flat percentage across everything gets it wrong at both ends of the range.
What the markup is actually paying for
- Acquisition. The trip to the supply house, and the time choosing the right item.
- Carrying stock. Money tied up in van inventory that is not earning anything.
- Shrinkage. Parts lost, damaged, bought for a job that changed, or left in a crawl space.
- Returns. Unused items, restocking fees, and the trip back.
- Warranty. When a part fails at eight months, you return to replace it. The part may be covered. Your labour is not.
- Risk. You chose it, so you own the consequence if it is wrong.
That last one is most of it, and it is the part customers never see.
Why a flat percentage fails
At 50% across the board:
A $3 washer becomes $4.50. You made $1.50 against several dollars of acquisition and handling cost. You lost money.
A $1,400 tankless unit becomes $2,100. You made $700 for ordering an item the customer can price online in ten seconds, and now you are defending it.
Both are wrong, in opposite directions, for the same reason: the cost of handling a part is largely fixed, and the price of the part is not.
A sliding scale
| Part cost | Markup | Example |
|---|---|---|
| Under $10 | 200% or a minimum charge | $4 becomes $12 |
| $10 to $50 | 120% | $35 becomes $77 |
| $50 to $200 | 80% | $120 becomes $216 |
| $200 to $600 | 55% | $450 becomes $698 |
| $600 to $1,500 | 40% | $900 becomes $1,260 |
| Over $1,500 | 25% to 30% | $2,000 becomes $2,550 |
These are a starting structure, not a recommendation for your market. The shape is the point: the percentage falls as the value rises, and small items need a minimum charge rather than a percentage at all.
The customer who priced it online
This happens, and it happens more every year. Arguing about the part price is losing ground you do not need to defend.
The answer is not to justify the markup. It is to reframe what they bought.
"You are right that the unit is around $700 online. What you are paying me for is choosing the right one for your gas line and venting, installing it to code, pulling the permit, and standing behind it for a year. If it fails at ten months, you call me and I come back. If you buy it yourself and it fails, you own that."
Then offer the choice honestly: they supply the part and you charge labour only, with no warranty on the part and no responsibility if it is the wrong specification. Some will take it. Most will not, once it is stated plainly.
If you allow customer-supplied parts, write the terms down: no warranty on the part, labour charged again if it fails, and any return trip is chargeable. Verbal versions of this are not worth having.
Showing it on the invoice
Itemising parts at marked-up prices invites exactly the comparison above. Two alternatives work better.
Flat rate by task. "Replace isolation valve, $186." No part price visible, because the customer is buying an outcome.
Grouped. "Parts and materials, $86." True, complete, and not a shopping list.
Neither is dishonest. The customer is paying for the job, and a price they agreed to in advance is the thing that matters.
Checking it works
Track parts as a percentage of revenue over a quarter. If it is climbing, your markup is not keeping pace with what you are buying. The parts markup calculator works the scale on your own numbers, and the price book builder turns the result into a list your whole team quotes from.
Percentages are illustrative. Parts markup varies widely by market, by trade and by whether you stock or order, and what is normal in one region is uncompetitive in another.
plumbing parts markup plumbing material markup parts pricing