Steph's Books
Services
Industries
Pricing
About
Tools
Contact Us
Get a Quote
Steph's Books

Expert outsourced bookkeeping for professional services firms with $1MM-$10MM revenue.

Stay in the loop

Bookkeeping tips and fraud prevention insights. No spam.

Services

  • Bookkeeping
  • Payroll
  • AR/AP Services
  • Bank Reconciliation
  • Tax Prep
  • Catch-Up Bookkeeping
  • QuickBooks Training

Company

  • Home
  • All Services
  • Industries Served
  • Pricing
  • Meet the Team
  • Blog
  • Contact Us
  • Get Started

Areas Served

ChicagoNapervilleSchaumburgArlington HeightsBarringtonBuffalo GroveVernon HillsLake ZurichWaukeganElginMcHenryWoodstockMarengoLake ForestWaucondaFox LakeLakemoorGreen Oaks

Contact

  • (815) 271-5646
  • steph@stephsbooks.com
  • 4318 W Crystal Lake Rd
    Suite J
    McHenry, IL 60050

Mon – Fri: 9am – 5pm CST

© 2026 Steph's Books. All rights reserved.

Privacy PolicyTerms of ServiceEULA
Back to Blog

Job Costing for Plumbing Contractors: How to Know Which Jobs Actually Make Money

April 4, 2026

You ran 1,200 jobs last year. Your P&L says gross margin is 46%. But which jobs made money? The $350 service calls? The $18,000 bathroom remodel? The new construction project you bid at 12% margin that your gut says ended up closer to 5%? If your answer is “I don’t know,” you don’t have a plumbing job costing problem — you have a visibility problem. And it’s costing you somewhere between $40,000 and $200,000 a year in margin you can’t see, can’t measure, and can’t fix.

For the full picture of plumbing financial management, see our complete guide to plumbing bookkeeping. This post goes deep on one piece of that puzzle: how to set up job costing so that every service call, drain job, remodel, and new construction project tells you exactly what it earned — or lost.

Why Plumbing Job Costing Matters More Than Gross Margin

Gross margin is a company-level metric. It tells you whether the business is healthy in aggregate. It does not tell you whether your drain cleaning division is subsidizing money-losing service calls, or whether your remodel crew is actually earning the 35% margin you quoted.

Plumbing companies run four fundamentally different businesses under one roof. Each has its own margin profile:

Service Type Typical Gross Margin Key Cost Driver
Drain cleaning 50-70% Equipment amortization, low materials
Service & repair 40-55% Truck stock, tech efficiency, dispatch density
Remodel / renovation 25-40% Materials, subcontractors, change orders
New construction 10-18% Competitive bidding, long payment cycles, volume

A company doing $4M with 60% service work and 20% drain cleaning will look profitable at the top line. But if the service division is sending master plumbers on $200 drain calls and nobody is tracking truck stock usage, the real margin on those 800 service calls could be 15 points lower than reported. That’s the gap job costing closes.

Key insight: The goal of plumbing job costing is not to create more paperwork. It’s to answer one question per job: “Did we make what we expected to make?” If you can answer that within 48 hours of job completion, you can fix pricing, staffing, and dispatch problems in real time — not at year-end.

Labor Cost Assignment: The Tier Problem

Labor is the single largest cost on most plumbing jobs, and it’s the one most contractors get wrong. The mistake is using a blended burden rate — averaging all your techs into a single hourly cost. That math hides the truth.

Here’s what labor actually costs by tier when you include wages, FICA, workers’ comp, health insurance, vehicle costs, and PTO:

Labor Tier Hourly Wage Range Fully Loaded Cost/Hour
Apprentice (1-4 years) $16-$28 $27-$60
Journeyman (5-10 years) $28-$45 $36-$120
Master Plumber $45-$75 $100-$175

The Bureau of Labor Statistics reports median plumber wages at $30.46/hour nationally, but that blended number is useless for job costing. What matters is who you sent to the job.

Consider this scenario: A customer calls with a clogged kitchen drain. You dispatch your master plumber because he’s closest. The job takes 1.5 hours and bills at $350. Your master plumber’s loaded cost is $150/hour. That’s $225 in labor alone — before you count the truck roll, parts, or overhead allocation. Your “high-margin service call” just earned 36% gross margin instead of the 55% you’d get sending an apprentice-journeyman team.

Multiply that dispatch mistake across 10 calls per week, and you’re leaking $30,000-$50,000 per year in avoidable labor cost overruns. Plumbing job costing makes that visible. A blended rate hides it.

How to Set Up Tiered Labor Tracking

In QuickBooks Online, create separate Service items for each labor tier:

  • Labor — Apprentice (rate: your loaded cost/hour)
  • Labor — Journeyman (rate: your loaded cost/hour)
  • Labor — Master Plumber (rate: your loaded cost/hour)

When your techs log hours against a job, they select the correct labor tier. This flows the actual labor cost to the project, not an average. If your field service platform (ServiceTitan, Housecall Pro, FieldEdge) syncs with QuickBooks, map the technician tiers in the integration settings so it happens automatically.

plumbing-job-costing pro tip

Materials Tracking and the Truck Stock Problem

Parts and materials are the second-largest cost on most plumbing jobs, and truck stock is where the tracking falls apart.

Every service van carries $3,000-$8,000 in fittings, valves, connectors, and common repair parts. When a tech uses a $12 SharkBite fitting, a $45 ball valve, and a $23 wax ring on a service call, those costs need to hit the job. In practice, here’s what usually happens: the tech records the big-ticket items (a $280 water heater, a $150 faucet) and forgets the small stuff. The small stuff adds up to $60-$100 per call — and it never gets costed to the job.

This is the $80 in untracked parts problem. It shows up as a phantom gap between your quoted margin and your actual margin, and most plumbing contractors don’t realize it exists until they do a physical truck stock reconciliation and find $1,200-$3,000 in “missing” inventory per truck per quarter.

Truck Stock Reconciliation Process

  1. Set a par level for each truck — document every SKU and quantity that should be on the van
  2. Monthly physical count — compare actual stock to par level
  3. Variance = untracked job costs — allocate the difference proportionally across that truck’s completed jobs for the month
  4. Restock against a PO — replenishment purchases are COGS, not operating expenses

The reconciliation doesn’t need to be perfect. Even a rough monthly adjustment is dramatically better than letting truck stock shrinkage accumulate invisibly all year.

For parts purchased for a specific job (special-order fixtures, water heaters, sump pumps), use purchase orders in QuickBooks linked to the project. This creates a clean cost trail from vendor invoice to job P&L.

Subcontractor Cost Allocation

Mid-size plumbing companies regularly use subcontractors for specialized work:

  • Gas line installation and certification — licensed gas fitters
  • Trenching and excavation — for sewer line replacements
  • Backflow testing and certification — annual compliance work
  • Camera/video inspection — sewer line diagnostics

Every subcontractor invoice needs to hit the specific job it was performed on — not a general “Subcontractor Expense” line. In QuickBooks, create bills against the sub and assign them to the relevant project. This is especially critical for remodel and new construction jobs where sub costs can represent 15-30% of total job cost.

The PHCC (Plumbing-Heating-Cooling Contractors Association) recommends tracking subcontractor costs as a separate COGS line item rather than rolling them into materials or labor. This gives you a clear view of how much of each job’s cost you control directly versus how much you’re outsourcing — and whether those subs are eating your margin.

Pro Tip: Collect W-9s from every subcontractor before their first payment, not in January when 1099s are due. Build it into your vendor onboarding process. Missing a 1099 filing carries an IRS penalty of $310 per form in 2026.

Overhead Allocation: Per-Job vs. Percentage-Based

Direct costs (labor, materials, subs) are straightforward to assign. Overhead is where contractors struggle. Your shop rent, insurance, office staff, fleet costs, and software subscriptions benefit every job — but how much of that overhead should each job carry?

There are two common methods:

Method 1: Percentage-Based Allocation

Take your total monthly overhead and divide it by total monthly revenue. If overhead is $45,000/month and revenue is $300,000/month, your overhead rate is 15%. Every job gets 15% of its revenue allocated as overhead cost.

Pros: Simple. Easy to calculate. Works well when your job mix is consistent.

Cons: A $350 service call and a $35,000 new construction project get the same percentage — but the service call uses one truck for 90 minutes, while the construction project uses three trucks for six weeks. The percentage method overcosts small jobs and undercosts large ones.

Method 2: Per-Job Allocation (Activity-Based)

Assign overhead based on the resources each job actually consumed. Track truck-hours, labor-hours, or a composite metric per job. A service call that used 1.5 labor-hours gets a different overhead charge than a remodel that consumed 120 labor-hours.

Pros: More accurate. Reflects actual resource consumption. Better for companies with diverse job mixes.

Cons: Requires more data collection. Needs a reliable way to track labor-hours per job (which you should already have if you’re doing job costing correctly).

Our recommendation for most plumbing contractors between $1M-$5M: Start with percentage-based allocation. It’s better than no allocation. Once your bookkeeping system is tracking labor-hours per job reliably, graduate to per-job allocation for a more accurate picture.

plumbing-job-costing pro tip

Worked Example: The $350 Service Call That Actually Lost Money

Let’s trace a real job through the costing system. This is based on a composite of actual client data.

The job: Emergency kitchen sink backup. Customer pays $350.

What the dispatcher sees: A routine service call. High-margin work.

What the books show without job costing:

Line Item Amount
Revenue $350
Estimated COGS (company average 52%) -$182
Reported gross profit $168 (48% margin)

What job costing reveals:

Cost Category Amount
Revenue $350
Labor: Master plumber, 1.5 hrs @ $150/hr loaded -$225
Truck stock used (SharkBite fitting, P-trap, supply lines) -$80
Truck roll (fuel, wear, 22 miles round trip) -$18
Overhead allocation (1.5 labor-hrs @ $15/hr) -$22.50
Actual job cost -$345.50
Actual gross profit $4.50 (1.3% margin)

Reported margin: 48%. Actual margin: 1.3%. The difference comes from three sources: sending a master plumber instead of an apprentice-journeyman pair ($225 vs. ~$90 for two hours of apprentice labor), $80 in truck stock that was never logged, and $22.50 in overhead that was never allocated.

This single job isn’t a disaster. But if 20% of your service calls follow this pattern — wrong tech, untracked parts, no overhead allocation — you’re looking at a $60,000-$100,000 annual margin gap between what your P&L reports and what your bank account reflects.

This is the core argument for plumbing job costing: The numbers you report are only useful if they reflect reality. A 48% margin that’s actually 1.3% isn’t just inaccurate — it’s dangerous, because you’re making pricing and staffing decisions based on fiction.

QuickBooks Projects Setup for Plumbing Job Costing

QuickBooks Online Plus or Advanced includes the Projects feature, which is the foundation for plumbing job costing. Here’s how to configure it:

Step 1: Enable Classes by Service Type

Go to Settings > Account and Settings > Advanced > Categories and turn on Track classes. Create four classes:

  • Drain Cleaning
  • Service & Repair
  • Remodel / Renovation
  • New Construction

Every transaction gets a class. This lets you run a P&L by service type — instantly showing which division is profitable and which is bleeding.

Step 2: Create a Project Per Job

For service calls and drain cleaning, create a project for each job (or batch daily if volume is high). For remodel and new construction, every job gets its own project without exception. Link the customer, assign the class, and every invoice, bill, expense, and time entry for that job flows into its project P&L.

Step 3: Set Up Items for Labor Tiers

Create three service items under Products & Services:

  • Field Labor — Apprentice (cost rate: your loaded hourly cost)
  • Field Labor — Journeyman (cost rate: your loaded hourly cost)
  • Field Labor — Master Plumber (cost rate: your loaded hourly cost)

When your techs log time, they select the correct item. The cost rate flows to the project, and you can see labor cost by tier on every job report.

Step 4: Use Purchase Orders for Job-Specific Materials

For any material purchased for a specific job — water heaters, fixtures, specialty fittings — create a PO linked to the project. When the vendor bill arrives, match it to the PO. The cost hits the job automatically.

For truck stock, run a monthly reconciliation (see above) and journal-entry the variance across that truck’s completed jobs.

plumbing-job-costing pro tip

Using Job Costing Data to Fix Your Pricing

The point of plumbing job costing isn’t to create reports that sit in a drawer. It’s to feed a quarterly pricing review that adjusts your rates based on actual cost data — not gut feel, not what your competitor charges, not what you charged three years ago.

Here’s the cadence we recommend for plumbing contractors:

Monthly: Review job-level P&Ls for any job that came in under target margin. Identify the cause — wrong tech assignment, untracked materials, scope creep, or underbid.

Quarterly: Pull a profitability report by class (service type). Compare actual margins to your targets. If drain cleaning is hitting 62% but service calls are at 38%, you either need to raise service call rates, tighten dispatch rules, or both.

Annually: Recalculate your loaded labor rates with updated wage data, benefits costs, and workers’ comp rates. Update your burden rates in QuickBooks and adjust your pricing flat rates accordingly.

The companies that do this consistently — reviewing job cost data and adjusting pricing every quarter — typically see margin improvements of 3-5 percentage points within the first year. On $3M in revenue, that’s $90,000-$150,000 in additional gross profit from the same volume of work.

If you’re not sure whether your current plumbing profit margins are in line with industry benchmarks, start with the quarterly review. The data will tell you exactly where to focus.

Making Job Costing Sustainable

The biggest reason plumbing contractors abandon job costing is that it feels like extra work. And it is — if you’re doing it manually. The key is building the system once and then letting integrations do the heavy lifting.

Your field service platform should sync labor hours and parts to QuickBooks. Your techs should be selecting labor tiers and logging parts in the field app, not on paper. Your office manager should be running a 30-minute weekly reconciliation, not a two-day monthly scramble.

If your current QuickBooks setup wasn’t built for job costing, it’s worth rebuilding the chart of accounts and project structure now. The cost of a one-time setup is trivial compared to running another year with margin data you can’t trust.


Related Reading

  • The Complete Guide to Plumbing Bookkeeping — chart of accounts, 1099 tracking, financial benchmarks
  • Plumbing Profit Margins: Industry Benchmarks — margin targets by service type and company size
  • QuickBooks Setup for Plumbing Contractors — step-by-step configuration guide

Ready to stop guessing which jobs make money? Steph’s Books specializes in bookkeeping for plumbing contractors — including job costing setup, QuickBooks configuration, and monthly financial reporting that shows profitability by service type. Get your free assessment and find out where your margins are really going.

Need help with your bookkeeping?

Get a free quote and see how Steph's Books can save you 40-60% vs hiring in-house.

Get a Free QuoteCall (815) 271-5646