Skip to content
All articlesEstimating

How to Estimate a Plumbing Job Without Eating the Surprises

From your wage to a flat-rate price, one water heater swap at a time. Burdened labor, parts markup, overhead, permit, margin, and the exclusions that keep the price whole.

How to Estimate a Plumbing Job Without Eating the Surprises

To estimate a plumbing job, price your labor hours at what an hour really costs you, add parts at cost plus a markup, add a share of overhead and the permit, then set your margin. For repairs and replacements you've done fifty times, turn that number into a flat rate with the exclusions written down.

That's the whole method. The rest is knowing your numbers.

Plumbing job price = labor and overhead ÷ (1 − margin) + parts × (1 + markup) + permit + disposal.

A 50 gallon gas water heater swap: $443 for labor and overhead at a 25% margin, $1,525 in marked-up parts, $100 permit, $40 haul-away. $2,108, which you round to a $2,100 flat rate.

Most of what ranks for this question is either commercial estimating (plan takeoffs, crew rates) or a homeowner asking what they should pay. This is for the plumber with one or two trucks who prices residential service work and wants the flat price to survive a rotten flange.

All dollar amounts are in US dollars. The example is hypothetical.

Wage, burden and time figures come from published sources (linked as we go). Overhead, the small-parts kit and the dump fee are assumptions you'll replace with your own.

1. What actually goes into a plumbing estimate?

Four numbers: your labor hours times what an hour costs you, parts at cost plus markup, a share of overhead, and the profit you decide to keep. Permits and haul-away ride on top as pass-throughs. It's the same math we use to price a $400 handyman job, with a $1,000 heater on the truck instead of a box of screws.

The reason so many plumbers underprice isn't the formula. It's that "an hour" gets counted as the hour with the wrench in hand, and the drive, the supply-house run and the quoting time get counted as nothing. We'll fix that in section 3.

2. Should I charge flat rate or by the hour?

Flat rate for repairs and replacements you've done many times. Time and materials for diagnostics, drain work you can't see yet, and anything behind a wall you haven't opened.

ServiceTitan says the most successful shops run flat rate, and HomeGuide notes plumbers charge "by the hour or by the job." Nobody publishes a real survey on which is more common, so ignore anyone who quotes a percentage.

What matters is who carries the risk. Under flat rate, you do: if the job runs long, the extra time comes out of your margin. Under time and materials, the customer does, so expect more questions and a slower yes.

The trick to flat rate is pricing the risk in and writing the exclusions down. Section 8 covers that.

3. How do I calculate labor cost for a plumbing job?

Start with what you pay yourself per hour, add burden (taxes, insurance, benefits), then remember that only about half your day is billable. Drive time and supply runs aren't free, so they go in the estimate as hours or they come out of your pocket.

The BLS median wage for plumbers was $30.67 an hour in May 2025. Across private industry, BLS puts benefits at about 30% of total compensation (June 2026), which is a fair burden figure for a solo operator paying self-employment tax and insurance. So: $31 an hour plus 30% is about $40 an hour loaded.

Now the billable-hours problem. ServiceTitan puts billable time at 40 to 50% of a workday. On a 2,080-hour year, that's roughly 830 to 1,040 hours you can actually invoice.

Every fixed cost you have gets spread over those hours, not over 2,080. Keep that in mind for section 5.

For the water heater job, the hours look like this:

TimeBasisHours
On site: drain, pull, set, connect, test3 to 4 hr in HomeGuide's guide; we take 3.53.5
Drive, both waysassumption0.75
Supply-house pickupassumption; zero if the heater's on the truck0.5
Billed hours4.75

4. How much should I mark up parts?

Published guidance is all over the place: 10 to 20% (Housecall Pro's calculator), 20 to 30% from working plumbers on trade forums, 40 to 60% on parts (Housecall Pro's price guide). A sensible place to land is 20 to 30%, with a higher percentage on cheap parts, because a $4 fitting at 25% doesn't cover the trip to get it.

We use 25% on the heater and the kit. Note that we don't also put the margin on the parts. Applying a 25% margin on top of a 25% markup on a $1,080 heater makes your price the highest in town for no reason the customer can see.

5. How do I cover overhead on a one-truck shop?

Add up a year of truck payment, fuel that isn't job-specific, insurance, license, phone, software and tools. Divide by your billable hours. That number rides on every hour you invoice.

Say it's $30,000 a year (an assumption; a newer truck and commercial insurance can push it well past that). Over 1,000 billable hours, that's $30 an hour. Add it to the $40 loaded wage and an hour of your time costs $70 before any profit.

Housecall Pro's guide works an example the same way: $120,000 of overhead over 2,000 billable hours is $60 an hour.

6. Worked example: pricing a 50 gallon gas water heater swap

The job: like-for-like replacement of a 50 gallon atmospheric gas tank in a garage. Same location, existing venting and gas line stay, no code upgrades beyond an expansion tank.

LineBasisAmount
Labor and overhead4.75 hr × ($40 + $30)$332.50
At 25% margin$332.50 ÷ 0.75$443
Water heaterBradford White RG250T6N, $1,079.80 list on Sep 21, 2026; your account price will differ$1,080
Install kitwater flex connectors, gas flex, T&P discharge, dielectric nipples, expansion tank; assumption$140
Parts with 25% markup$1,220 × 1.25$1,525
Permitpass-through; $50 to $150 published$100
Haul-awaydump fee, assumption$40
Price$2,108

Your profit on that job is about $111 on the labor side and $305 on the parts, roughly $416 on a $2,108 ticket, or just under 20% overall. Change any assumption and it moves. That's the point of doing the math instead of guessing.

Does it match the market? HomeGuide's published installed range for a 50 gallon gas unit is $1,000 to $3,100 and up. ServiceTitan lists water heater installs at $600 to $1,800.

We're in the middle of the first and above the second, which is what you'd expect for a job priced with a real permit and a real expansion tank.

And the hourly equivalent, for when a customer asks: $443 over 4.75 hours is about $93 an hour for labor, overhead and profit together. Published plumber rates run $45 to $150 an hour (HomeGuide) and $80 to $130 for residential service (Housecall Pro). Normal.

7. How do I turn that into a flat-rate price?

Round it, write what it includes, write what it doesn't, and reuse it as a line item every time the same job comes up.

Our $2,108 becomes "50 gal gas water heater replacement, like for like: $2,100. Includes new unit, expansion tank, connectors, permit, haul-away of old unit. Excludes venting changes, gas line changes, relocation, and code corrections found on site, quoted separately."

Here's why the exclusions matter. Say the job runs 30 minutes long because the old shutoff crumbled.

Two cards comparing the same water heater job running 30 minutes long: time and materials bills $47 more, flat rate loses $35 of profit
Same extra half hour. Under time and materials it's revenue. Under flat rate it comes out of your margin unless the estimate said otherwise.
  • Time and materials: you bill another 0.5 hr at about $93. Plus $47.
  • Flat rate: you eat 0.5 hr at $70 of cost. Minus $35 of profit. Your labor profit just went from $111 to $76.

Flat rate still wins most of the time, because the fifty jobs that run short pay for the ten that run long. But only if the surprises that aren't yours are in the exclusions.

8. How do I properly bid a plumbing job so surprises don't eat the margin?

Get photos before you quote, list the "if we find" items with prices, state permit and haul-away as their own lines, and put an expiry date on it. This is what experienced plumbers tell newer ones on forums, and it belongs on the estimate, not in your head.

  • Photos first. The unit's label, the venting, the shutoff, the gas connection, the space around it. Half the surprises are visible in a photo.
  • Price the known unknowns. "Replace corroded shutoff valve if needed: $X." "Bring vent to code if required: $Y." Now the surprise is a line the customer already saw.
  • Permit as a line. Whether a water heater swap needs one depends on your jurisdiction, and in most places that have adopted the IRC it does. Check your local rules before you quote. Say it, price it, don't bury it.
  • Contingency on the unfamiliar. A simple rule: multiply your time estimate by 1.5 the first time you do an unfamiliar job. Wrong by a little beats losing money.
  • Expiry date. Heater prices move. Thirty days is plenty.

9. What should the written estimate look like?

Scope in one sentence, line items the customer can read, exclusions, payment terms, expiry. The customer should be able to tell what they're getting without a phone call.

For the heater: unit and kit as one line or two, labor as one line (not hours), permit, haul-away, then the "if we find" items priced but unchecked.

Deposit if you're ordering the unit. Balance on completion. Done.

Common questions about estimating plumbing jobs

How do you price a plumbing job?

Hours times your loaded hourly cost plus overhead, divided by one minus your margin, plus parts at cost with a markup, plus permit and disposal as pass-throughs. For repeat jobs, round the result to a flat rate and write down what it excludes.

How do you calculate labor cost for plumbing?

Take the hourly wage, add about 30% for taxes, insurance and benefits, then add your overhead divided by your billable hours. A $31 wage becomes roughly $40 loaded and about $70 with overhead, before profit. Bill the drive and the supply run as hours.

How do I properly bid a plumbing job?

Get photos, scope it in writing, price the likely surprises as separate lines, add a small contingency on unfamiliar work, list the permit and haul-away, and put an expiry date on the bid. Then send it as line items the customer can read.

Is it better for a plumber to charge flat rate or hourly?

Flat rate for jobs you've done many times, because you keep the upside when you're fast and the customer gets a firm number. Hourly for diagnostics and open-ended work where the scope can't be known. Many shops use both.

What is the 135 rule in plumbing?

It has nothing to do with pricing. It's a drainage rule of thumb that limits the total change of direction in a horizontal drain run to 135 degrees (for example one 90 and one 45) before you need a cleanout or vent, and how it's applied depends on your local code.

What to do on your next plumbing estimate

Count all the hours, including the drive. Multiply by your loaded cost plus overhead, divide by 0.75. Parts at cost times 1.25.

Permit and haul-away as lines. Round it, write the exclusions, send it.

The same method in other trades: a $400 handyman punch list, a 12x12 bedroom paint job and a 200 sq ft landscaping install.

Sent an estimate last week and not sure it was priced right? Upload it to the estimate checker and find out.

Send your next estimate with WinPal.

Get the app Available for iPhone & Android