Back to BlogInvoicing

How to Invoice Parts With Markup in a Repair Shop (Without Losing Money)

August 20, 20266 min read

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.

See it in the app

JSD ServicePro handles parts invoicing, hour-meter maintenance, QuickBooks sync, and map-based dispatch — all mobile-first.

Keep reading
How to Build a Heavy-Equipment Maintenance Schedule by Hour Meter