All posts

How Much to Mark Up Materials (Contractor Markup Guide)

Updated 16 min read

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.

Contractor markup: the whole job, not just the materials

Materials are one line. Contractor markup usually means the percentage you add across every cost the job consumes — materials, labor, subcontractors, equipment, and rentals — to arrive at the price the customer pays. Each of those bases carries a different amount of risk and a different amount of your time, so applying one blanket percentage to all of them is how a job that looked profitable comes back thin.

Think of it as four separate decisions:

  • Materials. You front the cash, source the parts, haul them, and warrant them. Marked up from landed cost.
  • Labor. You carry payroll, taxes, workers' comp, downtime, and the risk that the hours run long. Marked up from your loaded rate, not the bare wage — see how to calculate labor burden rate.
  • Subcontractors. You found them, you manage them, and you are the one the customer calls if their work fails. Marked up from what their invoice costs you.
  • Equipment and rentals. Marked up from the real cost per hour of owning or renting the machine — see how to calculate equipment cost per hour.

The percentage is only half the answer. The other half is whether the base is honest, because a generous markup on an understated cost still loses money. That is why average-cost materials and real punched hours matter more than the percentage you choose.

Average contractor markup percentage by cost type

There is no legally set number and no industry mandate — markup is a business decision. But these are the ranges most small contractors actually work within, and they are a reasonable place to start before your own finished jobs tell you better.

Cost typeTypical contractor markupNotes
Materials15% – 50%20% – 35% is the common middle for general trades
Labor30% – 60%Applied to the loaded rate, not the bare wage
Subcontractors10% – 25%Covers coordination, supervision, and warranty exposure
Equipment and rentals15% – 30%On real cost per hour, including fuel and maintenance
Whole job (blended)20% – 40%The figure most people mean by "contractor markup"

A blended standard contractor markup of 20% to 40% on total job cost is what most residential and light-commercial work supports. Below 20%, a single bad week of weather or one warranty callback erases the profit. Above 40%, you need a reason the customer can see: specialized work, fast turnaround, difficult access, or genuine scarcity of anyone else who will do it.

Two things bend the number more than trade does. Job size — a $2,000 job carries the same estimating, invoicing, and driving as a $20,000 job, so small work needs a higher percentage to survive. And competition — markup you can hold on referral work is markup you often cannot hold on a three-bid commercial invitation.

What is an acceptable markup on materials?

Acceptable is whatever covers the real cost of handling the material and leaves the margin your business needs — not a number the customer agrees is fair in the abstract. Work it backwards instead of guessing:

  1. Start from the margin you need. If your business needs 30% gross margin to cover overhead and leave a profit, that is the target.
  2. Convert margin to markup. A 30% margin needs roughly a 43% markup, because markup sits on cost and margin sits on price. The conversion table is in markup vs margin.
  3. Apply it to landed cost. Invoice price plus freight, delivery, and handling — or better, the weighted average of what you have actually been paying.
  4. Check it against a finished job. If the job came in under the margin you assumed, the markup was too thin, or the cost base was stale.

A markup becomes unacceptable in two directions. Too low and you are financing your customer's materials for free. Too high on a line the customer can price-check at a big-box store in ten seconds — a standard water heater, a common light fixture — and you invite an argument you did not need. For those items, many contractors keep the materials markup modest and recover the difference in labor, where the value is harder to comparison-shop.

How to mark up subcontractor work

Subcontractor costs are the line contractors most often pass through at cost, and it is usually a mistake. When you put a sub on your job you are selling the customer your judgment about who is good, your scheduling around them, your supervision while they work, and your name on the warranty if they get it wrong. A 10% to 25% markup on the sub's invoice is the price of that.

The practical problem is not the percentage — it is knowing what the sub actually cost you by the time the job closes, once the change orders and the extra day are in. Keep every sub invoice attached to the job rather than in a folder, so the finished job shows the real number. In CRMb, supplier and subcontractor bills live in Accounting and bank spend can be reconciled to the job it belongs to, so the sub cost the job carries is the money that actually left the account. For the tracking method, see how to track subcontractor costs.

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.

What is a standard contractor markup?

There is no official standard. In practice most small contractors land between 20% and 40% blended across the whole job, with materials often 20% to 35%, labor higher, and subcontractors lower. Treat published ranges as a starting point and let your own finished jobs set the real number — if the margin you promised keeps failing to appear, your markup is below your standard, whatever the industry average says.

Do contractors mark up materials?

Yes, and it is a normal, expected part of pricing. The markup pays for sourcing the parts, fronting the cash, hauling and storing them, covering waste and breakage, and warranting the material if it fails. A contractor who charges materials at bare receipt cost is doing all of that work for free and recovering it, if at all, somewhere they cannot see.

How much should a contractor mark up materials on a customer's job?

Enough to hit your target gross margin after procurement time, carrying cost, waste, and warranty risk — commonly a 20% to 35% markup for general trades, applied to landed cost. Work from the margin you need and convert: a 30% margin needs about a 43% markup. Then verify it on a finished job rather than trusting the percentage.

What is a typical handyman material markup percentage?

Handyman work usually carries a higher materials markup than large-project trades, often 25% to 50%, and higher still on small consumables. The reason is job size: picking up $60 of parts costs the same hour of driving as picking up $600 of parts, so the percentage has to be larger for the dollars to cover the trip. Many handymen also hold a minimum charge per job for exactly this reason.

What markup do plumbers use on materials?

Plumbing materials commonly sit in the 20% to 35% range for standard fittings and fixtures, with small parts — valves, couplings, seals — marked up considerably higher because the handling cost is fixed regardless of the item's price. Emergency and after-hours work often carries more, reflecting the premium on having the part on the truck at 11pm rather than the part itself.

Should I show the markup on the quote?

Most contractors do not itemize the markup as its own line. Present materials at the price you are charging, or roll materials and labor into scope-based line items, so the customer is comparing your price to other prices rather than auditing your cost. Itemizing markup invites a negotiation about your business rather than about the work — see how to create a professional quote.

How do I keep my markup working when supplier prices rise?

Recalculate the cost base rather than the percentage. When a supplier raises prices, the markup you had is still fine — it is the cost you are applying it to that went stale. Average cost that updates on every purchase keeps the base current automatically, and quotes priced after the increase carry the new number. For the customer conversation, see how to handle material price increases.


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