Questions

How do you run a profit and loss for each job?

You run a profit and loss per job by giving every dollar a job number at the moment it is committed rather than at the moment it is paid, closing the job on a stated date, and accepting that the statement is provisional until the last late cost has landed. Everything else is detail underneath those three.

Written by JD Davenport, who still sells for a living. Updated 4 November 2026.

Your company profit and loss is one statement covering one period. A job profit and loss is the same idea pointed at one job instead of one month, and the reason it is harder is not the arithmetic. It is that your company statement only has to be right once a month, and a job statement has to be right about which job every single line belonged to.

What a job profit and loss actually has on it

Five lines, and no more than five until the five are reliable.

Contract value. What the customer agreed to pay, including approved change orders and excluding anything still being argued about. If a change order is verbal, it is not on here yet.

Material. Every delivery and every pickup against this job, net of credits for what came back on the truck. The credits are the line most commonly missing, because suppliers credit the account rather than the job.

Labor. Crew or subcontractor cost for the work itself. Not the estimator, not the office, not the truck payment. Those are overhead and they do not belong on a job statement.

Other job cost. Dumpsters, permits, disposal, equipment rental, warranty callbacks, anything that only exists because this job existed.

Gross profit, in dollars and as a percentage of contract value. Both. The dollars are what you keep. The percentage is what you compare.

Overhead allocation is deliberately absent. Spreading office cost across jobs makes every job look worse by roughly the same amount and tells you nothing about which job was the problem. Run the five lines first. Allocate later, if ever.

Why the company statement is right and the job statement is wrong

Both can be true at once and usually are. Your bank reconciles, your accountant is competent, and your per-job numbers are still fiction, because a job's cost is not one number you hold. It arrives from four directions on four timetables.

It lands late. The job closed in March, the disposal invoice arrives in May. Look at March in April and March was profitable.

It lands in the wrong column. One labor invoice with dump fees on it goes entirely to labor. Labor reads high, disposal reads free, and next year you price both wrong.

It lands on the wrong job. Two jobs on one street, one purchase order, one crew. The material goes to whichever number got typed. One job carries a loss it did not earn.

The credit never lands at all. Returned material is credited to the account. The account is correct. The job is still carrying material that came back.

None of that is carelessness and none of it is fixed by asking anyone to be more careful. It is what happens when four systems report on four schedules and nothing makes them agree.

Doing it in accounting software

Most small-business accounting packages can do this, and the feature is usually called jobs, projects, classes or customers with sub-customers depending on which package and which version you are on. Check what yours calls it before you design around a name.

Whatever it is called, the feature works the same way and fails the same way. It works when every transaction gets the job attached as it is entered. It fails when the job field is optional, because an optional field is filled in by whoever happens to remember, and a profit and loss per job built on a field that is right ninety percent of the time is wrong on roughly one job in ten with no way to tell which one.

So the useful question is not which software. It is whether a transaction can be saved at all without a job on it. If it can, the statement you get out is an estimate wearing decimal places, and the fix is at the point of entry, not in the report.

When to close the job and call the number final

Pick a rule and publish it. Something like: the job closes thirty days after the last crew day, or when the last expected invoice has landed, whichever comes first, and anything arriving after that posts to the job anyway and reopens the statement.

The rule matters more than which rule. Without one, every job is permanently open, every number is permanently provisional, and nobody can say whether last quarter was good. With one, you can state a window and a basis, and a number with a window and a basis is a number. "Revenue" is not. "Collected, date-closed basis, 1 January to 31 July" is.

What to look at once you have them

Do not start with the average. Sort by gross profit dollars and look at the shape.

If your shortfall is concentrated in a handful of jobs, you have an execution problem and you can name the jobs. If it is spread evenly across all of them, you have a pricing problem and the jobs are not the story. Those are different problems with different owners, and the average hides which one you have. Averages hide tails, and tails are usually where the money is.

The second cut worth making is whether the losing jobs sold badly or built badly. A job that sold below your margin floor was priced wrong. A job that sold at or above it and still lost money was priced right and executed expensively. The fix for one is a quoting change and the fix for the other is a production change, and getting that backwards costs a year.

The workbook that produces these five lines per job, the twelve tests that prove the inputs, and a browser tool that runs the mechanical half in about a minute are The Job Cost Standard. The method it came out of is The Audit. More answers on the questions page.