Construction Resource

Gross Margin by Job, and What It Will Not Tell You.

One company-wide margin percentage describes none of the jobs that produced it. Here is what the job-level version measures, how to read the mix rather than the average, and the four reasons the number is usually wrong.

  • QuickBooks ProAdvisor Gold
  • 10+ Years Finance Systems Experience
  • Secure Cloud Bookkeeping
  • Serving Clients Nationwide

Gross margin by job is the report most contractors are missing, and the one that changes the most decisions once it exists. It is also easy to misread, because a margin percentage looks like a fact and is actually the output of several judgement calls.

This covers what the number means, how to interpret a set of them, and the specific reasons a job margin figure comes out wrong.

What gross margin by job measures

Gross margin by job is contract revenue for a job, less the direct costs of performing it, expressed as a percentage of revenue.

Direct costs means the costs that exist because that job exists: field labor and its burden, materials, subcontractors, and job specific costs such as rented equipment, permits, and disposal. It does not mean all costs. Office salaries, rent, insurance, software, and financing sit below the line, because they were incurred whether or not that job was won.

So the number answers one question precisely: after paying to actually do this work, how much was left to contribute toward running the company and making a profit?

It does not answer whether the job was profitable in a full accounting sense, and that distinction causes real confusion. A job at 22 percent gross margin in a company that needs 28 percent to cover overhead lost money, even though the report shows a positive figure.

The report that produces it

In QuickBooks Online this is a Profit and Loss by job or by project for the period, with revenue and the direct cost accounts shown per job and a margin percentage calculated on each.

It only works if two things are already true. Costs have to be coded to jobs at the point of entry, and the chart of accounts has to separate direct cost accounts from overhead accounts. A report cannot separate a cost that was never coded, and no formatting will split field wages out of an account that also holds office wages.

That is why the setup work comes first. There is a practical sequence in the job costing setup guide, and the cost boundary itself is covered in direct costs versus overhead.

Reading the mix, not the average

Consider a fictional contractor with three completed jobs in a quarter. The figures below are invented for illustration.

Fictional demonstration

  • Residential remodel. Revenue $148,000, direct costs $114,200, gross profit $33,800, margin 22.8 percent.
  • Tenant improvement. Revenue $262,000, direct costs $235,600, gross profit $26,400, margin 10.1 percent.
  • Site utilities. Revenue $96,500, direct costs $59,300, gross profit $37,200, margin 38.6 percent.

The company-level Profit and Loss for the quarter reports 19.2 percent. That figure describes none of these three jobs, and pricing the next job at 19 percent would be a mistake in every direction.

Three things are visible in the detail and invisible in the total. The largest job by revenue returned the least gross profit. The smallest job by revenue returned the most. And the average sits between them in a way that reflects the revenue mix of one particular quarter rather than any durable fact about the business.

This is the core habit: read the spread, not the mean. If your jobs cluster tightly around the average, the average is informative. If they range from 10 to 39 percent, the average is an accident of which jobs happened to close.

A longer version of this example, with the full cost breakdown by line, is on See How We Work.

Self-performed work versus resold subcontract work

Look again at the tenant improvement in the example: $96,800 of subcontractors against $262,000 of revenue. That job was largely resold labor, and the markup on resold work is structurally thinner than the margin on work your own crews perform.

This is not a failure. Subcontract-heavy work carries less risk, ties up less of your own labor capacity, and can be a perfectly good use of a general contractor balance sheet. But it will not produce the same margin percentage, and comparing it to self-performed work as though it should is a category error.

The practical response is to look at margin percentage and gross profit dollars together, and to segment mentally by work type.

  • Margin percentage tells you about pricing and execution efficiency on that kind of work.
  • Gross profit dollars tell you what the job actually contributed toward overhead.
  • Gross profit per field labor hour is the underrated third measure, because your own crew capacity is the constrained resource. A high-percentage job that consumed 900 crew hours may contribute less per unit of capacity than a lower-percentage job that consumed 200.

If a meaningful share of your revenue is subcontract pass-through, consider tracking the two work types separately rather than expecting one target percentage to fit both.

Open jobs report a margin that is partly fiction

The most common source of a wrong job margin is not an error at all. It is timing.

On an open job, revenue recognition and cost incurrence rarely move at the same rate. Materials get purchased and delivered before they are installed and billed. A subcontractor invoice arrives two months after the work. A progress billing goes out on a schedule set by the contract rather than by the pace of cost.

The result is that a job at 40 percent complete can report a margin anywhere from wildly high to negative, depending on whether billing is running ahead of cost or behind it. Neither figure predicts the finished result.

Two things help. First, read open job margin as a question rather than an answer: a big divergence from the estimate is a prompt to look at the job, not a conclusion about it. Second, keep committed cost visible, meaning open purchase orders and signed but uninvoiced subcontracts, so that cost you know is coming is not treated as cost that has not happened.

Closed job margin is the reliable figure. Open job margin is an early warning instrument, and it is genuinely useful in that role, as long as nobody quotes it as a result.

Four reasons the number comes out wrong

1. Labor is missing

By far the most common. Payroll enters the file as one lump with no job attached, so every job shows materials and subcontractors but no labor. Margins look excellent and mean nothing. The test: does any active job show materials and zero labor? Somebody worked on it.

2. Cost is coded to the wrong job

Usually because coding happened days or weeks after the transaction. This produces the frustrating pattern where two jobs are both wrong and the company total is right, so nothing looks broken at the summary level.

3. The cost boundary shifted

Somebody moved burden, or small tools, or supervision salaries, from one side of the gross profit line to the other. Margins change with no operational cause. This is why the boundary policy should be written down and changed only at a fiscal year boundary.

4. Duplicated transactions

Bank feed re-imports and manual entries beside already-matched transactions both create duplicates. They inflate cost and depress margin, and they are usually clustered in one period rather than spread evenly, which makes a single month look anomalous.

One test catches most of these: do the job columns sum to the company total? If not, cost is uncoded and the difference tells you how much. If they do sum but a margin still looks implausible, run the job cost detail for that job and read the transactions.

Gross margin is not profit

Worth stating plainly, because it is a common and expensive misunderstanding.

Gross margin tells you what a job contributed before overhead. Net profit is what remains after overhead. A business can run every job at a healthy gross margin and still lose money, if overhead is too large for the revenue volume.

The connection between the two is a single arithmetic relationship worth knowing: divide your annual overhead by your expected annual revenue, and that percentage is the gross margin you need just to break even. Anything you want as profit sits on top of it.

So if overhead runs at $340,000 and you expect $2.1 million in revenue, you need roughly 16.2 percent gross margin to break even, and a target of 16.2 plus whatever profit percentage you intend to earn. That target is what makes a job margin number actionable, because it turns 22.8 percent from a fact into a judgement.

Meridian Ledger Group LLC does not provide tax or investment advice, and these figures are arithmetic rather than a projection of any result.

Using margin to price the next job

The point of the report is the next job, not the last one. Three habits get the most out of it.

  1. Review every closed job against its estimate. Not the margin alone, but which cost category diverged. A pattern of labor overruns on one type of work is a pricing input; a one-off material spike is not.
  2. Set targets by work type, not one company number. Self-performed work, subcontract-heavy work, and service or small job work carry different achievable margins. One target guarantees you underprice one category and overprice another.
  3. Track margin against the estimate over time, not just the level. A firm that consistently lands two points below estimate has an estimating adjustment to make. A firm whose variance swings wildly has an execution or capture problem, and the fix is different.

None of this requires new software. It requires that costs land on jobs at the point of entry, that the boundary stays fixed, and that someone looks at the closed job report every month. That last one is the step most often skipped, and it is the one where the whole exercise pays for itself.

The short version

Gross margin by job is revenue less direct cost, per job. Read the spread rather than the average, expect subcontract-heavy work to carry thinner percentages than self-performed work, treat open job margin as an early warning rather than a result, and check that job columns sum to the company total before trusting any of it. Gross margin is not profit: divide overhead by expected revenue to know the margin you actually need.

Next Step

See Whether Your File Can Produce This Report

Thirty minutes, by video, at no cost. Bring a recent Profit and Loss and Meridian will tell you whether job-level margin is derivable from what is already coded, and what it would take if not.

  • 30 minutes
  • Complimentary
  • By video
  • No obligation

Mon to Fri, 9:00 AM to 5:00 PM Pacific Lake Stevens, WA. Working virtually nationwide.

Book a Review Book Now