All posts

How Much to Mark Up Materials (Contractor Markup Guide)

9 min read

The short answer: Most service businesses mark up materials somewhere between 15% and 50%, with 20% to 35% the common middle for trades. The markup is not free money; it covers the real cost of buying, storing, hauling, and warranting the materials, plus a share of overhead and profit. The number that matters is what you mark up from: your true landed cost per item, not the price on one receipt. CRMb holds an average cost per material across every stock location and applies it when you pull materials into a quote, so your markup lands on a real number instead of a guess.

Materials feel simple to price. You bought the part, you know what it cost, you add a bit, you charge the customer. That instinct is what leaves money on the table. The receipt is not your cost, and a flat "I add 20%" applied to the wrong base quietly erodes margin on every job. This guide covers what a fair markup looks like, why you build it on landed cost, and how to keep the number honest across hundreds of line items.


What "materials markup" actually pays for

Marking up materials is not padding. When you hand a customer a part, you are also selling the work of sourcing it, the cash you fronted to buy it, the space it sat in, the truck that carried it, and the promise that you will stand behind it if it fails. That work is real, and it belongs in the price.

The main things a materials markup has to cover:

  • Procurement time. Someone calls suppliers, compares prices, places the order, and drives to pick it up. That is paid time, and it is rarely billed as labor.
  • Carrying cost. Money spent on stock is money you cannot use elsewhere until the customer pays. Materials sitting on a shelf or a truck tie up cash.
  • Waste and shrinkage. Offcuts, damaged parts, the box that walked off the job. A small percentage of every purchase never makes it into a finished job.
  • Warranty exposure. If a part fails, you often replace it and eat the cost. Markup builds a reserve for that.
  • Overhead and profit. A slice of rent, insurance, and the margin that keeps the business alive.

Charge materials at your bare cost and you are doing all of that for free.

Typical markup ranges by trade

There is no single right number, but there are ranges the market accepts. Higher-touch, higher-risk work supports higher markup; commodity parts on price-sensitive jobs support less.

SituationTypical materials markup
Commodity parts, price-shopped customers10% – 20%
General trades (plumbing, HVAC, electrical)20% – 35%
Custom or hard-to-source materials35% – 50%
Small parts and consumables50% – 100%

Small consumables carry the highest markup because the procurement effort is fixed no matter how cheap the item is: driving to buy a $3 fitting costs the same as driving to buy a $300 unit. The percentage looks large, but the dollars are small, and it simply recovers the real cost of handling a low-value item.

Mark up from landed cost, not the receipt

Here is the mistake that costs the most: marking up the sticker price on a single invoice. Your real cost of a material, its landed cost, is more than the line on the receipt. It includes freight, delivery fees, fuel surcharges, and any restocking or handling charges. A $200 part with a $25 delivery fee costs you $225, and a 30% markup on $200 leaves you short on every unit.

The second, quieter version of the same error is pricing from the last receipt when your cost keeps moving. If you bought copper at one price in the spring and another in the summer, which cost do you mark up? The honest answer is the average of what you actually paid, weighted by quantity. That is average cost, and it is the base a markup should sit on.

When your team buys materials into stock, CRMb recalculates the weighted average cost for each item on every purchase order it receives. When you add that material to a job or a quote, it pulls the current average as the cost, so your markup is applied to what the material truly costs you today, not to a receipt from three months ago.

A worked example

Take a job that uses a control unit and a box of fittings. Watch how the base you choose changes the outcome.

ItemReceipt priceLanded costMarkupPrice to customer
Control unit$200$225 (incl. freight)30%$292.50
Fittings (box)$40$44 (incl. delivery)60%$70.40
Totals$240$269$362.90

Now the error case. If you had marked up the bare receipt prices instead of landed cost, the control unit would be priced at $260 and the fittings at $64, for $324 total. You would believe you made $84 of gross margin on materials. You actually made $362.90 − $269 = $93.90, but only because you priced correctly. Price from the receipts and your real margin on this small line shrinks by nearly $39, and that gap repeats on every job of the year.

Markup is not margin, and the difference matters

A 30% markup does not give you a 30% margin. Markup is calculated on cost; margin is calculated on price. A material that costs $100 sold at a 30% markup sells for $130, and the $30 profit is only 23% of the $130 price. If you need a 30% margin on materials, you have to mark up by about 43%.

This trips up more contractors than any other pricing detail, and it is worth getting exactly right, because you likely quote in markup but measure profit in margin. The full breakdown, with the conversion table, is in markup vs margin. The short version: decide the margin you need, then convert it to the markup that produces it, and apply that markup to landed cost.

Keep the number honest across a whole quote

A single line item is easy. A real quote has thirty materials, and applying the right markup by hand to each one, on the right cost base, is where accuracy slips. The fix is to let the numbers flow rather than retype them.

In CRMb, the materials you pull into a quote arrive already costed at their current average, so every markup sits on a real base. As the job runs and the crew adds materials, those costs land against the job automatically. The reports view then shows the margin you actually earned on materials and labor together, not the margin you assumed at bid time. If your materials markup was too thin, you see it on the finished job, and you adjust the next quote. That feedback loop is the whole point: markup stops being a habit and becomes a number you tune from real results. For the downstream math on the full job, see how to estimate profit margin on a job.

Frequently Asked Questions

How much do contractors typically mark up materials?

Most contractors mark up materials between 15% and 50%, with 20% to 35% common for general trades. Commodity parts on price-sensitive jobs sit at the low end; custom or hard-to-source materials and small consumables sit higher, because the effort to procure and handle them is roughly the same regardless of the item's price.

Should I mark up materials on cost or on price?

Mark up on your true landed cost, meaning the price you paid plus freight, delivery, and handling. Do not confuse the resulting markup with margin: markup is figured on cost, margin on the selling price, so a 30% markup produces only about a 23% margin. Decide the margin you need first, then convert it to the markup that delivers it.

What is landed cost and why does it matter for markup?

Landed cost is everything you actually spend to get a material to the job: the invoice price plus freight, delivery fees, fuel surcharges, and handling. Marking up only the invoice price understates your cost and quietly thins your margin on every unit. Always apply markup to landed cost so the markup covers what the material truly cost you.

How do I know what a material really costs me if prices keep changing?

Use a weighted average of what you have actually paid, updated each time you buy more stock, rather than the last receipt. That average cost smooths out price swings so the number you mark up reflects your real position. Inventory software recalculates the average automatically on each purchase and applies it when the material is added to a job.

Is a 20% materials markup enough?

It depends on your margin target and your overhead. A 20% markup yields roughly a 17% margin, which may be fine for commodity parts but is often too thin once procurement time, waste, warranty, and overhead are covered. Cost a few finished jobs from real numbers to see the margin your markup actually produces, then raise it if the reserve for handling and risk is too small.


Getting started

Set your materials markup deliberately this week: pick the margin you need, convert it to a markup, and make sure you are applying that markup to landed cost, not to a bare receipt. Then look at your last finished job and check whether the materials made the margin you assumed.

CRMb holds an average cost per material across your warehouse and every truck, applies it when you pull materials into a quote, and shows the margin you truly earned in reports, on Mac, iPad, and the web. Start a 14-day free trial and price your materials on real numbers.

More from the blog