The Most Frustrating Phase of Running a Service Business
The phone rings. You take the call. You quote the job. You win it. Your crew shows up Monday and works hard all week. The job closes out. The invoice goes out. The customer pays, eventually. You repeat this 200 times a year.
Your team is busy. The schedule is full. By every visible metric, the business is working.
And then you look at the bank account. Or the P&L. And the numbers don't match the activity level. The crew is utilized 90%+ of available hours. The trucks are out every day. But the profit isn't showing up, or it's so thin that one bad job wipes out the gains from five good ones.
If this is your business, you're not failing. You're running into the most common and most expensive pattern in service-business finance: busyness without profitability. And it almost always has the same root cause: your books can't tell you which jobs make money and which jobs lose money, so you've been quoting and operating blind.
This is what's actually going on, and what fixes it.
The Five Reasons Busy Service Businesses Aren't Profitable
Every busy-but-broke service business is some combination of these five patterns. Most have at least three of them happening simultaneously.
1. Under-Pricing: Quoting Jobs Without Knowing the True Cost
You quote a job at $8,000 because that's what feels right: comparable to what similar jobs cost, what competitors charge, what the customer expects. You hit your "target margin" on paper.
But the quote was built on labor estimates that didn't include payroll taxes, workers' comp, vehicle costs, fuel, equipment depreciation, supervision time, or the 6% of jobs that turn into rework. Your "$8,000 quote with 30% margin" was a $9,800 cost-of-delivery quote with 22% real margin, and that's before anything went wrong.
Multiply that across 200 jobs a year and the profit you thought you were earning was 80% imaginary.
The same missing load shows up when the crew is full and the instinct is to hire: the wage is the number everyone knows, and the payroll taxes, workers' comp and benefits are the part that decides whether the hire pays. Can you afford another employee? puts the loaded number first, then tests it against the work.
Diagnostic: Pick the last 5 jobs you completed. Add up every cost you can find: direct labor (wages + taxes + benefits), materials, subcontractor cost, equipment time, fuel, travel time, supervision, project management overhead. Divide by the revenue. That's your real gross margin per job. If it's significantly below what your quote assumed, this is the issue.
2. Scope Creep and Unbilled Change Orders
The customer adds a small ask mid-job. You handle it. You don't write a change order. You don't add it to the invoice. The job's done, the customer's happy, you move on.
Three small unbilled change orders per job, times 200 jobs a year, at an average value of $400 per change order, is $240,000 of unbilled work annually. That's not a margin compression problem. That's a revenue problem that's been hiding inside your accounts receivable.
Diagnostic: Pull last quarter's completed jobs. For each one, total the original quoted scope vs. the final delivered scope. The gap, work performed but not billed, is the leak. Many service businesses run with 8-15% revenue leakage from scope creep.
3. Hidden Overhead Not Loaded Into Bids
Your office rent, the bookkeeper, the dispatcher, the truck insurance, the office manager, the marketing spend, the software subscriptions: all of these have to be paid out of something. That something is your gross margin from completed jobs.
If your bids are priced as "direct cost + 25% margin," and your overhead is 18% of revenue, your actual operating margin is 7%. On a $1.2M business, that's $84K of profit to support the owner, fund growth, and absorb the inevitable bad jobs. It's not enough.
Most service businesses systematically under-load overhead into job pricing because the overhead feels like "fixed cost," but every job needs to carry its share, or the math doesn't work at the year-end.
Diagnostic: Add up your annual overhead (everything that isn't direct job cost). Divide by your billable labor hours per year. That's the overhead-per-billable-hour you need to load into every bid. If your current bids don't reflect this, every job is under-priced by exactly that amount.
4. Productivity Issues: Where the Hours Actually Go
You estimated 40 hours of labor for the job. The crew was on-site for 40 hours. But of those 40 hours: 4 hours were drive time, 3 hours were waiting on material delivery, 2 hours were rework on the first day's pipe-fitting, 1 hour was a phone call to dispatch about the next job. The actual productive work was 30 hours. The other 10 hours got paid for and weren't billable.
This is normal. What's not normal is operating without knowing the ratio. If your crew's productive hours to paid hours ratio is 70%, every job you quote needs to assume 30% non-productive time built in, and most quotes don't.
Diagnostic: Time-track one crew for one week. Tag each block as productive work, drive, wait time, rework, admin, or other. The productive ratio is the number that should be loaded into your job estimates. Most service businesses are running 65-75% productive; healthy ones can hit 80-85%.
5. The Wrong Customer Mix: Busy With Low-Margin Work
Some of your customers pay well, treat your team with respect, and pay on time. Some don't. Most service businesses tolerate the second group because "work is work" and the crew needs to stay busy. But the math doesn't support that logic.
A job at 12% margin that takes 60 days to collect is worse than no job. It ties up working capital, drains crew energy, and crowds out time you could have spent on a 28%-margin job with terms you control.
Diagnostic: Sort all completed jobs from last year by gross margin. Look at the bottom quartile. Who are those customers? What kind of work was it? How long did collections take? Are those the customers you want to keep filling your schedule, or are they the customers crowding out better work?
The Diagnostic Tool That Surfaces All Five: Real Job Costing
The throughline across all five patterns is that you cannot fix what you can't see. And what most service businesses can't see, and what their bookkeepers haven't built, is per-job profitability. This is the core of job costing for contractors: the discipline that tells you which jobs earned and which jobs cost you.
Real job costing means every job carries:
- All direct labor (with payroll taxes, workers' comp, and benefits, not just gross wages)
- All materials (including markup adjustments and waste)
- All subcontractor cost
- Equipment time at a per-hour internal rate
- Allocated overhead at the appropriate per-labor-hour rate
- All revenue invoiced (including change orders)
The output: a per-job P&L that shows whether each completed job made money. Sorted by margin, with average time-to-collect tracked alongside. That report, produced monthly, is the single most valuable financial document a services business can have.
Most service businesses don't have it.
What You Need In Your Books to Make Job Costing Possible
Job costing isn't a report you turn on in QuickBooks. It's an accounting architecture that has to be set up before the data is recorded:
Time tracking by job. Every crew hour tagged to a specific job. Not "this week's hours for the carpenter" but "5 hours on the Smith bathroom on Tuesday." If you use QuickBooks Time, TSheets, ClockShark, or similar, this is what they do, but only if the team uses them correctly.
Materials tagged to job at purchase. When you buy materials, they're allocated to the specific job, not to a general "materials" expense category that has to be unwound later.
Equipment usage tracked at an internal rate. When the bucket truck is on a job, that job is charged an internal hourly rate for the truck. This recovers maintenance, insurance, depreciation, and replacement cost.
Overhead allocated per labor hour. A pre-calculated overhead burden rate ($X per billable labor hour) added to every job automatically.
Revenue tagged to job at invoice. Every customer invoice tied to the originating job. Change orders billed separately, but linked.
Job-level P&L produced monthly. Each closed job has its own profit number. Aggregated weekly or monthly into a job profitability report.
This is not default QuickBooks behavior. It requires intentional setup, ongoing discipline from the team, and someone monitoring it who knows what to look for. It is also the heart of construction accounting for contractors, where job-level visibility separates a profitable year from a busy one.
Why Most Bookkeepers Don't Set This Up
Job costing is specialized work. Most generalist bookkeepers don't have the construction or services-business background to design a proper job-cost system in QuickBooks. They categorize transactions accurately for tax purposes and produce a clean year-end P&L, but the job-level visibility that would tell you which jobs make money is not in their normal scope.
The bookkeepers who can do this well are typically:
- Construction-industry specialists
- Trades-business specialists (HVAC, plumbing, electrical, landscaping)
- Professional-services specialists who understand project accounting
These specialists charge 25-50% more than generalist bookkeepers. They earn it back many times over by surfacing the margin leaks that pay for themselves.
(For more on choosing the right finance role for your business stage, see which finance role your business actually needs.)
The Roles That Actually Solve This
Three roles, in sequence:
A specialty bookkeeper with job-costing expertise. Sets up the job-cost architecture in QuickBooks (or whatever your accounting system is). Trains the team on time entry. Categorizes transactions to jobs in real time. Produces the monthly job-cost report. Cost: typically $400-$1,200/month for outsourced services in this category, or $50K-$70K/year in-house.
A controller (fractional or in-house). Analyzes the job-cost data. Surfaces patterns: which job types are profitable, which customers are profitable, which crew configurations are most efficient. Builds the pricing model that future bids should follow. Catches the under-pricing patterns before they happen, not after.
A fractional CFO (advisory engagement). Sets the pricing strategy at the portfolio level. Decides which customer segments to pursue and which to graduate. Models the impact of price increases. Coordinates the operational changes (job costing implementation, change-order discipline, customer mix shift) into a coherent profitability turnaround. The who-should-help-with-my-books diagnostic helps you figure out what kind of finance help your business needs first.
For most services businesses in the $1M-$8M range, the combination is: specialty bookkeeper + fractional CFO engagement (no separate controller until you've outgrown the CFO's bandwidth at $5M+).
What Good Looks Like: Target Metrics
If you implement proper job costing, here's what healthy looks like for a typical small services business:
Gross margin per job: 28-35% for trades businesses (HVAC, plumbing, electrical), 35-45% for professional services, 40-55% for specialty consulting. Below the bottom of these ranges consistently = under-priced or over-loaded with rework.
Customer concentration: No single customer over 15% of revenue. Top 5 customers under 40% of revenue.
Average days to collect: Under 45 days. Anything over 60 days reflects either too-lenient terms or weak collections discipline.
Productive labor ratio: 70-85% of paid hours are billable. Below 65% = workflow inefficiency.
Change order capture rate: 95%+ of scope additions are billed. Below 90% = process gap.
Annual revenue per direct labor employee: $150K-$250K for trades; $200K-$400K for professional services. Below the bottom of the range = under-utilization or under-pricing.
These numbers are starting points, not absolutes. Vertical, geography, and business model all shift the right targets. The discipline is knowing your numbers and being intentional about them, not running blind.
What to Do This Week
If you're busy but not profitable, three actions this week start the diagnosis:
1. Pick 5 recently-completed jobs and reconstruct their real margin. Pull the original quote. Pull every cost you can trace to the job (labor, materials, sub costs, equipment time, change order leakage). Calculate the real gross margin. Compare to what you thought it was. The gap is your first piece of evidence.
2. Time-track one crew for one week. Have them tag every block as productive work, drive time, wait, rework, or other. The productive ratio is the input that should be loaded into every future bid.
3. Run the job costing diagnostic. A structured assessment that maps your current accounting setup against what's needed for job-level visibility. Output: a gap list with prioritization. Most businesses discover 4-6 gaps; the first 2-3 fixes typically recover 60-70% of the missing margin.
The Bottom Line
A busy services business that isn't profitable isn't suffering from bad luck or bad management. It's suffering from a visibility gap. The accounting system can tell you whether the business is profitable on average, but not which jobs are making or losing money. Without that visibility, you can't fix the patterns that are dragging margin.
The fix is real job costing, set up properly, monitored monthly, and acted on. It requires a bookkeeper with services-business expertise (not a generalist), and usually a fractional CFO to translate the data into pricing and operational decisions.
Most services-business owners discover, when they finally get clean job-cost data, that 30-40% of their jobs are losing money outright, 30-40% are at break-even, and 20-30% are carrying the entire business. The path to profitability isn't getting busier. It's getting visibility into which busyness is paying off.
If your crew is full and the numbers aren't working, the right next step isn't another marketing push. It's looking at the books with the right lens. Start with the job costing diagnostic.
Related GaF Tools:
Related Articles:
- Bookkeeper, accountant, controller, or CFO: which one does your business actually need
- My P&L says I'm profitable but I have no cash: where the cash is actually going
- What a buyer's due diligence will find in your books