Plumbing profit margin is three different numbers that shops collapse into "we make about half." Half of what, after which costs, on which jobs, is the whole argument. A small shop can show a healthy ticket and a tired year, or a busy water-heater month and a stack of drains that barely cleared the lead fee.
The ranges below are a sanity check for an owner-operated plumbing company. They are not a quote for your town. The tickets use the calculator formula. The all-trade version of this page is a good profit margin for contractors. Keep the phrases "plumbing profit margin" and the plumbing examples here, and leave that page general.
Rates in every table here. Labor is $45 an hour, the truck is $0.65 a mile, and overhead is $12 an hour. That $12 is a $1,920 monthly shop cost spread across 160 hours on the job. Lead cost is $0 unless the table says otherwise. These are the public calculator's starter numbers, so you can rerun every ticket. On the phone, overhead is the monthly shop cost split across hours you actually log that month, and the month stays a draft until it closes.
Three margins, and which one you are holding
- Gross margin on the job is what they paid, minus labor, the truck, parts, and permits. Overhead and the lead are not in it yet. It describes the work itself.
- Net margin on the job is what the phone and the calculator call net. Overhead for the hours and the lead fee are already out. 35% is the line the result calls solid. Under 20% is thin.
- Company net is what is left in the profit and loss after the accountant's full year: taxes, interest, and anything you never put in the monthly shop cost or the labor rate. Plumbing shops that pay the owner a real wage often land around 10% to 18% there. Gross on the work is often talked about in a 40% to 55% band. Those are industry shapes, not a promise.
If you compare a 49% job net to a 12% company net and decide the books are "wrong," you will "fix" the wrong document. Add the job nets for the month first. The gap that remains is owner pay you forgot to put in the $45, debt principal, tax, or overhead you never typed into the monthly shop cost.
A repeat drain
Repeat drain
| Line | Math | Amount |
|---|---|---|
| What they paid | $225.00 | |
| Onsite labor | 1 h × $45.00 | $45.00 |
| Travel labor | 0.5 h × $45.00 | $22.50 |
| Vehicle | 18 mi × $0.65 | $11.70 |
| Materials, your cost | $18.00 | |
| Overhead | 1.5 h × $12.00 | $18.00 |
| Lead | $0.00 | |
| Total job cost | $115.20 | |
| Net profit | $225.00 − $115.20 | $109.80 |
| Net margin | $109.80 ÷ $225.00 | 48.8% |
| Profit per hour | $109.80 ÷ 1.5 h | $73.20 / h |
Open this ticket in the calculator. Change one number and the margin moves with it.
Gross margin is 56.8%. Job net is 48.8%. The verdict is solid — 35%+ net. Do more of this work. This invoice is $47.77 over the 35% price. This is the percentage a small shop should be willing to defend. It is not the company net. It is one clean call with no lead fee. How to job cost the call is the field-by-field version.
A drain you bought
Drain with an $85 lead
| Line | Math | Amount |
|---|---|---|
| What they paid | $225.00 | |
| Onsite labor | 1 h × $45.00 | $45.00 |
| Travel labor | 0.5 h × $45.00 | $22.50 |
| Vehicle | 18 mi × $0.65 | $11.70 |
| Materials, your cost | $18.00 | |
| Overhead | 1.5 h × $12.00 | $18.00 |
| Lead | $85.00 | |
| Total job cost | $200.20 | |
| Net profit | $225.00 − $200.20 | $24.80 |
| Net margin | $24.80 ÷ $225.00 | 11.0% |
| Profit per hour | $24.80 ÷ 1.5 h | $16.53 / h |
Open this ticket in the calculator. Change one number and the margin moves with it.
The verdict is thin — under 20% net. Travel, burdened labor, or the lead fee is eating this. A busy week of these still feels broke. To hit 35% net with this cost stack, the invoice needed to be $308.00 (you charged $225.00). Average "plumbing profit margin" articles that quote one number for the trade cannot see this. The task is identical to the repeat drain. The margin is not. A shop at 11% job net on its growth channel and 49% on referrals does not have a plumbing margin. It has two businesses sharing a truck.
A water heater, where dollars and percent disagree
Water heater
| Line | Math | Amount |
|---|---|---|
| What they paid | $1,850.00 | |
| Onsite labor | 3.5 h × $45.00 | $157.50 |
| Travel labor | 0.75 h × $45.00 | $33.75 |
| Vehicle | 22 mi × $0.65 | $14.30 |
| Materials, your cost | $980.00 | |
| Permits and fees | $75.00 | |
| Overhead | 4.25 h × $12.00 | $51.00 |
| Lead | $0.00 | |
| Total job cost | $1,311.55 | |
| Net profit | $1,850.00 − $1,311.55 | $538.45 |
| Net margin | $538.45 ÷ $1,850.00 | 29.1% |
| Profit per hour | $538.45 ÷ 4.25 h | $126.69 / h |
Open this ticket in the calculator. Change one number and the margin moves with it.
Job net is 29.1%. Profit is $538.45, against $109.80 on the repeat drain. The verdict is OK, not a winner. Fine if this is filler between high-margin installs. To hit 35% net with this cost stack, the invoice needed to be $2,017.77 (you charged $1,850.00). Gross margin is 31.9% because the tank dominates. If your target is "50% on everything," you will either overprice replacements until you lose them, or you will pretend the tank was free. Aim the 35% solid line at job net, and let material-heavy work sit in the OK band when the dollars and the risk are worth it.
A week that looks like a real board
Four repeat drains, two lead-bought drains, one water heater, one unpaid callback that cost $93.65. Revenue $3,200.00. Profit $933.60. Job-level net on the week, 29.2%.
Nobody's memory of this week is 29.2%. Memory says the drains were great and the heater was a good ticket. Both are true. The week is also pulled down by two thin leads and a callback with -$93.65 of profit. That blended number is what has to resemble the company, after you account for anything still missing from the labor rate and the shop cost.
Callback revenue is zero, so it does not change the revenue denominator. It does change profit. Leaving callbacks out of the week is how a 29% board becomes a story about 40%.
The owner-wage trap
If you pay yourself by whatever is left, and the labor rate on your own calls is a helper's wage or zero, every margin above is fiction. The $45 used here is a burdened hour, meant to include payroll burden and a real cost for the person on the truck. An owner who wants $40 an hour for their own time still has to carry tax and comp on top, or the "profit" is wages with a nicer name.
Set the rate in Settings once. The starter $45 will banner you if a ticket ran on it unchanged. Then stop debating margin until the rate is one you would pay a replacement to do the same hour.
What to aim for, in order
- Job net of 35% or better on repeat service work, after drive and overhead. That is the solid band.
- Job net above 20% on purpose for replacements where material is most of the invoice. Below 20% on a water heater means the labor or the permit was free.
- Lead-bought calls that clear the same bands. If they do not, the lead price or the offer changes, not the definition of margin.
- Company net that still pays you after tax. If job nets look solid and the year does not, the monthly shop cost or the labor rate is incomplete. Fix the inputs. Do not invent a fourth margin.
Which plumbing jobs pay is the mix question. This page is the yardstick. Cost the week you just finished before you adopt a number from a Facebook group.
Frequently asked questions
What is a good profit margin for a small plumbing company?
On a fully costed ticket, 35% net and above is a solid result, 20% to 35% is acceptable filler, and under 20% is thin. Company-wide net after everything the accountant sees often lands nearer 10% to 18% for plumbing shops that are actually paying the owner. Those two percentages are not rivals. They are different layers.
Why is my job margin higher than my profit and loss?
Job net already includes the overhead you allocated and the labor rate you typed. It does not include income tax, loan principal, or an owner draw that was never in the hourly rate. If the rate is only the helper's wage, job margin is partly unpaid owner time.
Are drains or water heaters more profitable?
On the examples here, a repeat drain keeps a higher percentage. A water heater keeps more dollars and a lower percentage, because the tank is most of the cost. A plumbing company needs both pictures. Percentage picks the work. Dollars pay the supplier.
What margin should a callback have?
None, if you did not charge. Record the cost. The original job's margin is only real after you subtract the return trip.
Check one plumbing ticket
Use your labor rate. The drain below is only a pattern.