How to Invoice Parts With Markup in a Repair Shop (Without Losing Money)
If you run a heavy equipment repair shop, parts are where the money quietly leaks out. You buy a seal kit, mark it up, bill the customer — and six months later you realize the shop ate 15% of your parts cost because nobody tracked the core, the freight, or the restocking fee. This guide walks through a parts-invoicing workflow that actually protects your margin.
Markup vs. margin: know the difference
A 30% markup on a $100 part sells it for $130. A 30% margin means the part's cost is 70% of the sale — so the same part sells for $142.86. Shops that confuse the two consistently underprice parts by about 12%. Decide which you mean, set it once, and apply it everywhere.
Track the full landed cost
The number on the supplier invoice is rarely your true cost. Add:
- Core charges (even if you return the core later)
- Freight and hazmat fees
- Restocking fees on returns you ate
- Your time sourcing hard-to-find parts
If your software only stores "cost," you're billing against a number that's too low. Keep a landed-cost field, or at least a habit of rounding cost up 5% to absorb the hidden fees.
Tier your markup
Flat 30% across the board leaves money on the table on cheap parts and loses bids on expensive ones. A common, defensible structure:
- Filters, fluids, small hardware: 50–80% — high volume, low dollar, customers don't price-shop a $12 filter.
- Mid-range parts (seals, bearings, hoses): 30–40%
- Big-ticket components (pumps, final drives): 15–25% — competitive, and the dollar amount still pays the bill.
Bill every part, every time
The most common leak is the part that goes on the machine but never on the invoice. A can of brake clean, a handful of zip ties, a $4 fitting — across a year that's real money. Use a parts log on every work order and close it out before the invoice goes out.
Keep the markup internal
Your customer sees a line item, a quantity, and a sell price — not your cost or your markup percent. That's intentional. Revealing your cost gives the customer a number to argue with. Keep markup as an internal field; show the customer the finished price.
Make it repeatable
The shops that win on parts have a system: landed cost in, tiered markup applied automatically, every part logged against the work order, and a clean line on the invoice. JSD ServicePro does this end-to-end — see the parts invoicing workflow — but the principle matters more than the tool: if you can't see your true cost, you can't protect your margin.
Frequently asked questions
What's the difference between markup and margin?
A 30% markup on a $100 part sells for $130. A 30% margin means cost is 70% of the sale, so the same part sells for $142.86. Shops that confuse the two underprice parts by about 12%.
What's a good parts markup for a repair shop?
A common tiered structure: 50–80% on filters and small hardware, 30–40% on seals and bearings, and 15–25% on big-ticket components like pumps and final drives.
What is landed cost?
Landed cost is the true cost of a part — the supplier price plus core charges, freight, hazmat, restocking fees, and your sourcing time. Billing against just the supplier price underbills you.
Should I show the customer my parts cost?
No. The customer sees a line item, quantity, and sell price — not your cost or markup. Revealing cost gives them a number to argue with.
Related guides in this cluster
Invoicing & QuickBooks hub- Invoicing Hydraulic Repairs Through QuickBooks Online: A Field Guide
- Parts Invoicing Software for Repair Shops: Landed Cost, Markup, Margin
- QuickBooks Sync for Repair Shops: Stop Re-Keying Invoices
- AI Parts Scanners for Repair Shops: From Supplier Invoice to Priced Parts Entry
- QuickBooks for Field Service: How Heavy Equipment Repair Shops Should Sync
- Handling PST-Exempt Customers in Repair Shop Invoicing Software
See it in the app
JSD ServicePro handles parts invoicing, hour-meter maintenance, QuickBooks sync, and map-based dispatch — all mobile-first.