Plumbing is one of the trades where the day-to-day math gets you in trouble fast. A service tech rolls a $185 ticket at 7am, a remodel crew is roughing in 12 fixtures across three bathrooms, and your on-call guy just got pulled out of bed at 2am for a slab leak charging a $295 trip fee. Three different jobs, three different cost structures, all hitting the same QuickBooks file.
I’m Erin Andrews, owner of Level Accounting & Advisory. We’re a construction-only firm and we work with plumbing contractors across the country. This post covers what makes job costing for plumbing contractors different from every other trade — and how to set it up in QuickBooks Online and JobTread without losing your mind.
For the framework underneath all of this, start with our pillar guide on job costing for contractors.

What’s different about job costing for plumbing contractors?
Plumbing job costing is hard because most shops run three product lines through one P&L: service tickets, project work (new construction or remodel rough-ins), and after-hours emergency calls. Each one has a different labor cost, a different material profile, and a different margin target. Tracked together as one big “plumbing revenue” number, you can’t see which side of the business is actually carrying the others.
Service tickets vs. project work — two different cost models
Here’s how the split usually breaks down inside one plumbing shop:
- Service ticket: 1–2 hour visit. $89 trip charge. Repair a disposal, swap a wax ring, snake a line. $30–$120 in parts. Labor and the truck roll are 70%+ of revenue.
- Project work: 3-bath remodel rough-in. 4 days on site, two-man crew. $4,800 in fixtures, $1,400 in copper / PEX / fittings, $400 in glue and supplies. Labor is dominant but materials are real.
- New construction: Track home rough-in. Bid as a unit price per house. You only know if you made money when you compare actual hours and actual material to your estimate.
You need separate cost code sets for each. Service gets a slim 8–10 code list. Project work gets a 30–40 code structure that maps to the rough-in / trim-out phases. New construction gets its own template tied to plan revisions.
On-call labor burden — the after-hours premium math
This is the cost most plumbers don’t burden correctly. Your on-call rotation isn’t free. The tech on call is getting:
- Stand-by pay (often $50–$150 per night just to carry the phone)
- Overtime rate (1.5x) for the call itself, minimum 2 hours regardless of how long the call took
- Vehicle wear, fuel, and the personal cost that shows up in retention later
If your service ticket cost code uses the same labor burden rate as your day crew, you’re underwater on every after-hours call. Build a separate “Labor — On-Call Premium” cost code with the OT-loaded burden baked in. A daytime tech at $32/hour with 45% burden is $46.40 fully loaded. The same tech at 2am on call: closer to $72/hour fully loaded once you stack stand-by pay, OT, and the 2-hour minimum.
If the after-hours job didn’t bill at $295 minimum, you lost money even if it looked like you made it.
Materials staging — fixtures, copper, fittings, brass
Plumbing materials are where the leak happens (no pun intended). Three issues we see:
- Fixtures bought to spec for one job, used on another. Customer A picked the Kohler Memoirs toilet. Customer A canceled. Tech grabbed it for Customer B’s job. Now Customer B’s job carries a fixture cost that wasn’t in the estimate, and Customer A’s job is missing a credit.
- Copper price swings. Copper moved 30%+ in some recent stretches. If you bid a project in March and aren’t tracking material to the actual invoice, you’re eating that swing without seeing it.
- Truck stock that never gets job-coded. The bag of fittings, brass nipples, escutcheons, and Teflon tape that lives on the truck — most shops dump those purchases to “Shop Supplies” and never tie them to a job. That’s hiding $15K–$40K of material cost a year for a typical $2M plumbing shop.
The fix: a real-time receipt workflow at the supply house. Photo the receipt before it leaves your hand, tag it to a job and cost code in JobTread. Truck-stock purchases get coded to a default “Truck Stock” cost code, then allocated to jobs monthly based on usage.
Cost code structure for plumbing
Three parallel structures inside one JobTread file. Here’s what we set up for plumbing clients in the $1M–$15M range:

Service ticket cost codes:
- 10-100 Service — Diagnostic / Trip
- 10-110 Service — Repair Labor
- 10-120 Service — Drain Cleaning Labor
- 10-130 Service — On-Call Premium Labor
- 10-200 Service — Parts (faucets, valves, traps)
- 10-210 Service — Drain Equipment Use (camera, jetter)
- 10-300 Service — Sub-Contracted Repair (excavation, etc.)
Project / remodel cost codes:
- 30-100 Rough-In — Labor
- 30-110 Trim-Out — Labor
- 30-120 Final Connections — Labor
- 40-100 Materials — Copper / PEX
- 40-110 Materials — DWV (drain, waste, vent)
- 40-120 Materials — Fittings & Brass
- 40-200 Fixtures — Toilets
- 40-210 Fixtures — Sinks / Faucets
- 40-220 Fixtures — Tubs / Showers
- 40-230 Fixtures — Water Heater
- 50-100 Permits & Inspection Fees
- 60-100 Sub — Excavation
Three things that matter: labor and materials are always separated, fixtures get their own bucket (because customers change selections constantly and you need to track that variance), and on-call labor lives in its own line so it doesn’t get blended with day-crew labor. For the full breakdown, read our guide to construction cost codes.
Workers comp class 5183 — the labor burden math
Plumbing falls under workers comp class 5183 in most states. Premium typically runs $5–$11 per $100 of payroll. Add up the rest of the burden — FICA, FUTA, SUTA, GL allocation, health, vehicle, fuel, phone, training — and plumbing labor burden lands around 35–50% on top of base wage.
A plumber paid $30/hour is closer to $42–$45/hour fully burdened. On-call premium pushes that higher.
The full math, with worked examples, is in our labor burden calculation guide.
Plumbing-specific QBO + JobTread setup notes
Three things to set up differently if you’re a plumber:
- Three job templates in JobTread. Service Ticket, Remodel Project, New Construction. Each one with the right cost code list pre-loaded so techs aren’t picking from a 60-item dropdown they don’t need.
- Fixture variance tracking. Build a “Fixture Variance” cost code that captures the dollar difference between the fixture you bid and the fixture the customer actually picked. This is where 4–8 points of margin goes on remodels.
- Tech utilization report weekly. Service plumbers should be 70–80% billable hour-to-revenue. If a tech is below 60%, that’s a $30K–$50K/year leak you’re absorbing because you didn’t know to look.
Frequently asked questions
Should I run new construction plumbing through the same QBO file as service?
Yes. Same QBO file, different cost code structure, different job template. Splitting them creates more accounting work than it solves and makes payroll, tax filing, and consolidated P&L messy. The right move is one file with disciplined cost code segregation.
How do I handle truck stock without coding every $4 fitting to a job?
Bulk purchases of truck stock go to a “Truck Stock” cost code. At month-end, allocate truck stock cost to jobs based on usage — either by tech hours per job (proxy) or by fittings list per job if your techs log them. Most plumbing shops we set up use the hours proxy because logging individual fittings doesn’t survive contact with a busy day.
What’s the right gross margin target for a plumbing contractor?
Service: 50–60% gross is healthy. Remodel project work: 30–40% is realistic. New construction: typically 15–25% — lower because you’re competing on bid. If your blended margin is below 30%, the cleanup is almost always in the cost-coding discipline.
Do I need to separately track drain cleaning and water heater work?
If they’re more than 10% of revenue each, yes. Drain cleaning has very different equipment costs (jetter, camera) and water heater work has very different labor profiles. Tracking them separately tells you whether your tech specializing in drains is the most profitable guy in the shop or just the busiest.

The bottom line for plumbing contractors
Plumbing is three businesses in one shop most days. Cost them the same way and the most profitable side carries the side that’s losing money — and you don’t see it until tax season. Separate service from project from new construction in your cost codes, burden on-call labor honestly, and tag every fixture and supply house run to a job. That’s what makes job costing actually work for plumbing.
If you’re running a $1M–$15M plumbing shop and you can’t tell me what your last 5 service tickets netted versus your last 3 remodels, that’s the cleanup we do.
Want us to set up your plumbing job costing in JobTread + QBO?
Run a different trade? Read our companion guide on job costing for HVAC contractors — same family of service-vs-install problems, slightly different cost structure.
Erin Andrews is the owner of Level Accounting & Advisory, a construction-only accounting firm based in Vero Beach, FL serving contractors nationwide. Level has 20 years of experience in construction accounting and serves specialty trades — including plumbing, HVAC, electrical, concrete, pool, and hardscape — doing $1M–$15M in annual revenue.
Related Posts

Effective Job Costing for Concrete Contractors: QBO + JobTread Setup

Strong Job Costing for Electrical Contractors: QBO + JobTread Setup

Effective Job Costing for Pool Contractors: QBO + JobTread Setup

Job Costing for Fencing, Deck, and Hardscape Contractors

Understanding Job Cost Accounting for Businesses
