Business5 min readJune 2, 2026

How Much Should a Contractor Mark Up Materials? (The Real Answer)

One of the most common questions new contractors ask — and one that experienced contractors still argue about — is how much to mark up materials. Charge too little and you're subsidizing your client's project. Charge too much and you look like you're gouging. Here's the real answer.

First: Markup vs. Margin (They're Not the Same)

This trips up a lot of contractors. Let's be clear:

Markup is calculated on cost:

Material cost × (1 + markup%) = Client price

Margin is calculated on the selling price:

(Selling price − cost) ÷ selling price = Margin%

A 25% markup and a 25% margin are very different numbers:

Cost Markup % Selling Price Margin %
$1,000 10% $1,100 9.1%
$1,000 20% $1,200 16.7%
$1,000 25% $1,250 20.0%
$1,000 33% $1,330 24.8%
$1,000 50% $1,500 33.3%

When someone says "I want a 25% profit margin on materials," they actually need a 33% markup. Know which one you're using.

What's the Standard Material Markup for Contractors?

The industry standard falls between 15% and 35%, depending on trade and job type:

Trade Typical Material Markup
General Contractor 20–35%
Roofer 15–25%
Electrician 20–35%
Plumber 20–40%
Painter 15–25%
HVAC 25–50%
Flooring 20–35%
Concrete 15–20%

HVAC contractors often mark up equipment (furnaces, AC units) at 30–50% because sourcing, handling, and warranty responsibility are significant. Roofers tend to be lower because shingles are commodities clients can price-check.

Why Do Contractors Mark Up Materials?

This confuses some clients — and some contractors don't even try to justify it. But the markup covers real costs:

1. Sourcing and purchasing time — You spent time selecting the right product, placing the order, tracking it, and coordinating delivery. That's labor.

2. Carrying cost — You often pay for materials before you're paid by the client. That's cash tied up in someone else's project.

3. Storage, handling, and transportation — Materials don't teleport to the job site. Truck fuel, labor to unload, storage space — these cost money.

4. Waste and over-purchase — You always buy more than you need. Returns cost time. Some materials can't be returned. The markup covers this.

5. Warranty and quality responsibility — When you supply the materials, you stand behind them. If a product fails, you deal with it. That responsibility has value.

Should You Show the Markup to Clients?

This is a business decision, not a rules question. Two schools of thought:

Show line items, hide the markup — List materials as line items at your marked-up price, but don't show a "markup" line. Most clients don't scrutinize individual material prices. This is the most common approach.

Show cost + markup explicitly — Some contractors are transparent: "Materials at cost + 20%." This builds trust with some clients, but also invites price-shopping and negotiation on the markup itself.

Most experienced contractors use the first approach — show professional pricing, not your supplier receipts.

The "Time and Materials" Trap

If a client asks for "time and materials" pricing (T&M), be careful. They often interpret this as: "I pay your actual cost and you add a labor fee." That's not sustainable.

If you quote T&M, be clear:

  • Labor rate is your fully-loaded rate (wages + burden + overhead + profit)
  • Materials are at your marked-up price, not your supplier invoice

Put it in writing before you start.

What Happens If You Don't Mark Up Materials

Let's say you buy $5,000 in roofing materials and pass them through at cost.

  • You spent 2 hours sourcing and ordering: -$170 in lost labor
  • You drove to pick them up (or paid delivery): -$80
  • You bought 5% extra for waste that can't be returned: -$250
  • One item was wrong and needed to be exchanged: -$60 in time

You just lost $560 on "free" material procurement. The markup isn't profit — it's cost recovery. The profit comes after you've covered those costs.

A Simple Formula to Use

If you want to hit a 20% gross margin on materials, use a 25% markup:

$1,000 material cost × 1.25 = $1,250 client price ($1,250 − $1,000) ÷ $1,250 = 20% margin ✓

Set your target margin, calculate the markup, and apply it consistently. Build it into your estimating process so you never forget it.

How to Apply It in Your Estimates

The cleanest approach:

  1. List materials at retail (marked-up) price as individual line items
  2. Don't show a "markup" or "overhead" row on materials
  3. Add your labor at your full rate
  4. Add a separate overhead and profit line on top of total labor + materials if needed

This is professional, defensible, and what most successful contractors do.

When you use Bid.Fast to generate an estimate, you can set your default markup percentage in Settings. Every estimate automatically applies it — so you're never accidentally pricing materials at cost.

Try it free →


Bid.Fast is a voice-to-estimate app for trade contractors. Set your markup once, and every estimate automatically applies it. Start free →

See Bid.Fast in action

Estimate your next job in 90 seconds.

Record a walkthrough. Get a complete labor + materials estimate. Send it with one tap.

Try 3 Free Estimates →