A parts matrix is a pricing table. Instead of marking up every part by the same percentage over cost, you split parts into cost bands and give each band its own multiplier — cheap parts get a bigger multiplier, expensive ones get a smaller one. A $6 relay might sell at ×2.5. A $400 catalytic converter sells at a much thinner number, because the same ×2.5 would turn it into a $1,000 line item nobody signs.
Every dealership and most chains run one. Independent shops often don’t, not because the math is hard, but because nobody ever wrote it down. The counter person eyeballs a number, the writer eyeballs a different one, and the eyeballed number drifts by mood, by customer, and by how the day is going so far. The labor rate on the other half of the estimate has the same problem — worked out once, rarely written down, and just as prone to drifting by mood.
A worked example (yours will look different)
| Part cost | Multiplier | Margin it produces | Example |
|---|---|---|---|
| $0 – $25 | ×2.5 | 60% | $10 cost → $25 |
| $25 – $100 | ×2.0 | 50% | $60 cost → $120 |
| $100 – $250 | ×1.7 | 41% | $150 cost → $255 |
| $250 and up | ×1.4 | 29% | $400 cost → $560 |
This is one example matrix, not an industry standard. No trade group publishes an official version, and the bands that fit a shop doing a lot of European electrical work won’t fit a shop running mostly domestic trucks and oil changes. Start from something close to the table above, then move each row based on what your own supplier invoices actually look like.
The mechanics matter more than the exact numbers you land on. Pick your bands. Pick a multiplier for each one. Decide what happens when a part’s cost lands in a gap between tiers you forgot to cover — the matrix should always resolve to a number, never a shrug at the counter. Our own parts matrix calculator handles the gap case for you: it finds the highest tier floor at or below the part’s cost and uses that row, so nothing falls through uncovered, and you can edit every breakpoint to match your own shop before you commit to anything.
Why one flat percentage loses at both ends
Take a flat 50% markup, a ×1.5 multiplier applied to everything on the shelf, cheap or not.
A $4 turn-signal bulb becomes $6. You made two dollars on a part you had to stock and warranty. Multiply that across the dozen small parts on a typical ticket and the shop is quietly subsidizing its own consumables all day, every day, without anyone noticing on any single line.
Now the other end of the shelf. A $400 alternator at that same ×1.5 becomes $600 — a real number, and one a customer can check against two parts stores and a phone search before they say yes to the job. Hold that price and you risk losing the job outright. Discount it to keep the customer and you’ve just admitted the matrix number was never really the number.
A matrix fixes both problems by refusing to treat them as one problem. Run the bulb through a ×2.5 tier and it’s $10 — four dollars more profit on a part nobody argues over. Run the alternator through a ×1.4 tier and it lands at $560, close enough to a checkable price that the sting is gone, still enough margin to matter. Same shop, same two parts, no single multiplier that works for either end honestly.
Markup and margin are not the same number
This is where shops get burned even after doing the pricing work correctly. A “50% markup” sounds like half the sale is profit. It isn’t.
Markup is profit measured over cost. Margin is profit measured over price. A ×1.5 multiplier is a 50% markup, and it produces a part that cost you $100 and sells for $150. Your profit is $50 on a $150 sale — 33%, not 50%. Both numbers describe the exact same part. They’re just measured against different denominators, and only one of them is the figure your accountant and your P&L actually use.
The gap widens as the multiplier climbs. A ×2.0 multiplier is a 100% markup but only a 50% margin. A ×3.0 multiplier is a 200% markup and a 67% margin. If you’re setting a target margin — say you want 45% on parts overall — work backward to the multiplier that actually hits it. Margin equals one minus one divided by the multiplier, so a 45% target needs roughly ×1.82, not a “45% markup,” which only nets a 31% margin once you check the math.
When list price beats the matrix
The matrix earns its keep on parts nobody checks — sensors, gaskets, relays, small hardware a customer has no reference price for at all. It earns its keep worse on parts a customer can price-shop from a phone sitting in your own lobby.
Tires and batteries are the obvious carve-outs, along with the handful of filter and wiper-blade brands sold at every parts counter and every big-box store in town. Run those through a standard matrix and you’ll routinely land above what the customer just saw across the street, on a part where the comparison takes them thirty seconds. Most shops give these their own near-list or low-multiplier row, decided once and written down, rather than negotiating it fresh at the counter every time someone pushes back. That’s a deliberate exception built into the matrix. A price knocked down because a customer complained is a different habit, and it’s the one that quietly eats a margin you already did the work to set.
The matrix decides price; something else has to protect the cost behind it
None of this arithmetic matters if the cost feeding the multiplier is stale. A matrix built on a supplier price from eight months ago produces a confident-looking number off a bad input, and the margin report sitting on top of it is fiction wearing a percentage sign.
BayDocket’s inventory updates a part’s cost the moment you receive the purchase order it arrived on — whatever you actually paid becomes the recorded cost until the next delivery changes it. Whatever the price was at the exact moment you invoiced a job, matrix-derived, list, or typed by hand, gets frozen into that invoice for good, so a supplier raising prices next quarter never rewrites what happened last month. One honest limit is worth stating plainly here: BayDocket doesn’t apply your matrix to a line automatically while you’re writing an estimate today. You set the price, or the catalog part’s stored price sets it for you. What the software does guarantee is that the cost sitting underneath that price is real, and that whatever margin ends up on your profit report traces back to a number someone actually paid. If you’re still weighing what shop software costs against what it saves you in leakage like this, we broke that down separately in the real cost of running a repair shop.
Rolling it out without a fight at the counter
Grandfather anything already quoted. Nobody should watch a price move on a job they already said yes to a week ago. Pick a start date, apply the new numbers to everything written after it, and leave tickets already in the shop alone.
Then hold the line. A matrix that gets waived for the customer who pushes back stops being a matrix and becomes a suggestion with extra steps. The first couple of weeks are usually harder on the writer than on the customer — very few people walk over three dollars on a $40 part, and the ones who would have are rarely repeat business anyway. Watch your parts margin weekly for the first month so you’re reacting to what actually happened at the counter, not to what you were bracing for before you tried it.