Open your P&L and find the line called gross profit. If it says something like 50%, and it never felt like a 50% business, the books are probably right about the total and wrong about where it came from.
The usual cause is crew pay sitting in overhead.
What does that look like in the books?
Materials get coded to the jobs, because the supplier invoice has a job name on it. Payroll comes out of a payroll app in one lump, and it lands in an expense account called Wages or Payroll Expenses. That account sits below gross profit, next to the office rent and the phone bill.
So the people who dug the holes and set the posts get counted as office cost. The jobs only carry the materials, and every job looks rich.
A worked example
This is an example, not a client. A fence company does $1,000,000 in a year.
| As booked | Crew pay on the jobs | |
|---|---|---|
| Revenue | $1,000,000 | $1,000,000 |
| Materials and subs | $500,000 | $500,000 |
| Crew pay, payroll taxes and workers' comp | (in overhead) | $300,000 |
| Left after materials and crew | $500,000 (50%) | $200,000 (20%) |
| Office, trucks, insurance and rent | $450,000 | $150,000 |
| What you actually keep | $50,000 | $50,000 |
The bottom row is the same in both columns. The year made $50,000 either way. What changed is the story the books tell about the jobs, and that's the story you bid from.
Where it costs you money
Say a homeowner pushes back on a $10,000 quote and you knock off $1,000 to win it.
If you believe the jobs make 50%, you think you just gave up some of a $5,000 cushion. You still clear $4,000.
The real cost of that job was about $8,000. At $9,000, you clear $1,000. Do that on a few dozen jobs over a summer, and a good year turns into a flat one without anything looking wrong in the books.
The same thing happens when you decide which work to chase. If every job looks like it makes 50%, there's no reason to prefer one fence type, one crew or one part of town over another. Once crew pay is on the jobs, the differences show up.
How to check your own P&L
You can check this in five minutes.
- Run a Profit and Loss report for last year in QuickBooks.
- Find the gross profit line.
- Look at the expense accounts below it for anything with Wages, Payroll, Salaries or Labor in the name.
- Ask whether the people paid from that account work in the field or in the office.
If field crew pay is below gross profit, your margin is overstated. Payroll taxes and workers' comp for those crews usually sit there too.
What the fix looks like
Field crew wages, the employer share of their payroll taxes, and their workers' comp move into cost of sales, which is what each job costs you to build. Office staff stay in overhead, where they belong.
Going forward, the payroll app gets mapped so crew pay lands in the right account every pay period on its own. If your crews track hours by job, the pay can go onto the individual jobs too, and then you can see what each one made.
The past months get corrected so last year compares cleanly to this one. That's the first thing I do in a catch-up bookkeeping clean-up, because almost every other number on the P&L depends on it.
What to do with the real number
A 20% number feels worse than a 50% one, but it's the one you can bid from. You know how much room a discount really has. You can see which jobs carry the year and which ones only keep the crews busy.
Book a free call. Thirty minutes, and you leave with a written list of what's wrong in your books and what each fix costs.