Skip to content
Anchorfield / Field notes
The Revenue Audit

How to Price a Plumbing Job: Cost, Markup and a Written Estimate

How a plumbing company owner prices a job: work out your true hourly cost, scope the work, price materials, add permits and contingency, then set markup so the job pays.

Abstract editorial illustration representing How to Price a Plumbing Job: Cost, Markup and a Written Estimate.
Conceptual illustration generated for this article, not a documented finding or client engagement.
PRICING

How to price a plumbing job: the short version

To price a plumbing job, work in this order: your loaded hourly cost, the job scope, materials, permits and warranty, contingency, markup, and then a written price. This is our own pricing method. It is a framework, not a benchmark. Most shops that misprice a plumbing job skipped the first step and started from a number they heard somewhere.

The process is the same whether you price your plumbing as a flat rate or by time and materials. What changes is who carries the risk when the job runs long.

A price is only right if you can check the job's actual cost against it afterward. A later section covers that check.

This article names no market rates. Rates vary by metro, so you build your own from your own books. A plumber in one city and a plumber in another carry different costs, and neither can borrow the other's number.

Here is our position. A price is only as good as the hours it assumes. A plumbing company that never compares the hours it quoted with the hours the job took keeps repeating the same error. The price is wrong and nobody sees it. That is our view, not a measured benchmark, and we put no figure on it.

The error hides. Revenue looks fine while the business quietly loses money on a job type, and nobody can say which one.

A price is only as good as the hours it assumes.
PRICING

Start with what an hour of your plumber actually costs you

Your hourly rate starts with what an hour of your plumber costs you, not with what the plumber is paid. Loaded hourly cost is the technician's wages and burden, plus the van, fuel, vehicle maintenance, insurance, tools, office costs and your own owner costs. You then spread all of it over billable hours only.

These costs are the same whether the van is parked or on a call. Labor is only one line of them. A rate built on wages alone ignores the rest, and the gap comes out of your pocket. Every contractor's overhead is a little different, so pull the figures from your own P&L and payroll records.

Billable hours are fewer than paid hours. Drive time, supply-house runs and callbacks all eat paid time that no customer pays for. Measure your own ratio from your dispatch and timesheet data rather than assuming one. We use no outside figure here, because the right number is yours.

Here is an illustration with placeholder numbers, not real data. Say a technician's fully loaded annual cost, van and overhead share included, is $120,000. If he is paid for 2,080 hours, that looks like about $57.69 an hour. If only 1,400 of those hours are billable, the real figure is about $85.71 an hour. Billing at the first number loses money on every job.

That gap is what overhead and profit have to cover. Anyone in the plumbing industry can nod at that sentence and still skip the math.

Our dispatch material goes deeper on how to read technician billable hours, callbacks, and field efficiency from your own board.

Your hourly rate starts with what an hour of your plumber costs you, not with what the plumber is paid.
PRICING

Scope the job before you price it

Most pricing errors begin as scope errors, made before any number is written. The price can be perfect for the job you imagined and wrong for the job on site.

A site visit settles what the phone call cannot: access, the condition of the existing pipe, where the shutoffs are, where the fixtures sit, and what the customer assumes is included. Our method treats the visit as part of the estimate, not a courtesy. An estimator who prices from a phone description is guessing.

After the visit, build a takeoff. List every fixture, fitting and length of pipe by job phase, and attach labor hours to each phase. Itemize it so the work is visible as separate pieces. Different jobs break into different phases, and a takeoff makes you think through each one.

A remodel or a laundry room installation carries more unknowns than a like-for-like fixture swap. Walls are closed, the plumbing behind them is unseen, and earlier work may not match any drawing. Price those unknowns into the scope rather than hoping they do not show up.

Finally, write down what is excluded, such as drywall repair or permit fees. The job then matches what the customer expects to pay for, and its boundaries are on paper when a dispute starts.

Most pricing errors begin as scope errors, made before any number is written.
PRICING

Price materials from real supplier numbers

Material costs should come from the current supplier quote, not from last year's invoice. Cost each item: pipe in PVC, PEX, copper or galvanized, brass fittings, valves, supply lines, fixtures, washers and the small parts that never make it onto the first list.

A fitting that cost one price last spring may cost another now. Your supplier price sheets are the only reliable source, and we use no outside price-trend figure here.

Keep a cost database of the parts you buy most, and date each entry. A date makes a stale price visible. Without one, a fixture price from two years ago sits in the sheet looking as trustworthy as one from last week.

Material shortages and price swings mean a quote needs an expiry date. If a shortage pushes up a part's cost between quote and install, the validity period is what protects you. After the job, compare the actual cost with the quoted one so the database corrects itself.

Decide whether you mark up parts separately, as in plus parts pricing, or fold them into one price. That choice affects how the customer reads the bill, and it is covered in the markup section below.

Material costs should come from the current supplier quote, not from last year's invoice.
PRICING

Add permits, warranty and contingency

Some costs never show on a parts list but still come out of your margin. Contractors who leave them out find the loss later, as additional costs nobody priced.

Permit fees are costs of the job, and so is the time to pull and close a permit. Fees vary by jurisdiction, so check your own local permit office's schedule. We give no figure here.

A warranty callback costs a truck roll and a technician's hours, with nothing billed for either. Price in what your own callback records say. If a job type comes back one time in five, that belongs in its price. If you have no callback records, start keeping them now.

Contingency covers unforeseen circumstances, such as corroded pipe behind a wall. Choose it by job type from your own past overruns, not from a flat percentage borrowed from someone else. Then decide how you will explain it to the customer. A contingency you cannot explain tends to get negotiated away first.

PRICING

Markup, margin and the price you actually charge

Markup is added to cost. Margin is the share of the final price that is profit. The same percentage means different things in each, so name your target in one of them.

Here is the arithmetic. A job costs $100. Add a 30% markup and the price is $130, but the profit margin is only about 23%. To earn a 30% margin you need a price of about $143, which is a markup of about 43%. Owners who set a 30% markup and believe they have a 30% margin are short on every job.

Work out the margin you need to cover overhead and profit first, then convert it to the markup that delivers it. Starting from a markup you saw somewhere and hoping the margin follows is how targets get missed. Parts carry markups of their own, and those get the same conversion.

Flat rate and time-and-materials put different risks on the customer and on you. For flat rate pricing, price books, and markup strategies, the deeper explainer covers how each model is built. For task-level plumbing labor rates, use the labor price list.

What local plumbers charge varies by metro, job type and pricing model, and this article gives no local rate because none has been sourced for it. Your own number is your loaded hourly cost plus your target margin. Local rates are context, not the basis for your price.

Owners who set a 30% markup and believe they have a 30% margin are short on every job.
PRICING

Turn the numbers into a written estimate or bid

A written estimate names the scope, inclusions and exclusions, the price, the validity period and the payment terms. Itemize it enough that the customer can see what changes if the scope does. An estimate that is one number on a page invites an argument about everything it leaves out.

A homeowner estimate and a commercial bid differ in how much itemizing the buyer expects. Commercial work usually needs a detailed takeoff, and bidding adds a deadline. Accurate bids on that work depend on the same loaded hourly cost, with more lines under it. We use no figure for either.

Estimating software can speed the paperwork, but it only outputs what your rates and your cost database put in. If the hourly rate is wrong, the software produces wrong bids faster. We make no vendor claim here.

Where you need line-item labor to complete an accurate estimate, the plumbing labor price list is a place to start. Once the customer approves, the estimate is the base for the invoice, and the two should match unless the scope changed in writing.

A written estimate names the scope, inclusions and exclusions, the price, the validity period and the payment terms.
PRICING

Check the price against what the job cost

Job costing closes the loop, so pricing errors show up after each job and not only at year-end. Start from our position: the price assumed a number of hours, so compare the hours quoted with the hours the job took, phase by phase. A two-hour job that takes four is a pricing error, and no markup fixes it.

After each job, compare quoted and actual hours and materials by phase, using your invoices and timesheets. One miss can be a bad day. A repeated gap on the same job type shows which price is wrong.

Compare job types by margin, not by revenue. A busy month can hide jobs that lose money, because the shop is full and the bank balance looks healthy for a while. Margin by job type tells you which work to reprice and which to stop quoting.

A two-hour job that takes four is a pricing error, and no markup fixes it.
FAQ

How do you write up a job estimate?

Write it up as one page that lists the scope, labor hours by phase, materials with supplier prices, permits, contingency and markup, then the total, the validity period and the exclusions.

Have the customer approve it in writing before work starts, and keep a copy so you can compare it with the actual cost later.

PRICING

Key Takeaways

Price from a loaded hourly cost that spreads every overhead cost over billable hours only.

Most pricing errors start in scope, so visit the site and write down inclusions and exclusions.

Cost materials from current supplier quotes, and date every price.

Price in permits, warranty callbacks and contingency from your own records.

Markup and margin are different. Set the profit target in one, then convert.

Compare every job's quoted cost with its actual cost, or the next price repeats the error.

PRICING

Pricing is only as good as the numbers underneath it

If you cannot say what an hour of your plumber costs, or which job types earn the margin, the pricing method is not the problem. A better formula will not find the answer. Neither will a pitch, and a sales pitch is not a diagnosis, which is the argument our diagnosis page makes.

Anchorfield's audit is a read of a company's own records to find where the money goes. No audit has been delivered to a home services company yet, so we make no claim about what audits find.

We have built ERP software for an import business, a more complex operation than a home services company, so reading a business's records end to end is not new to us.

The Revenue Audit

You already know something is wrong.

Ninety seconds will tell you how big it usually is.