Skip to content

Bookkeeping · Daily Workflows · Brief · Working level

Job costing basics: knowing which projects actually make money

Job costing tags every income and cost line to a project so you can see per-job profit, not just company-wide profit. Here is how classes and tags work, and what a small job P&L looks like.

By The Carryforward Desk3 min read · June 15, 2026

A company P&L can show a healthy profit while a third of your jobs lose money — the winners subsidize the losers and the ledger never tells you. Job costing fixes that by adding one discipline: every revenue and direct-cost transaction gets tagged to the job it belongs to, so the ledger can produce a small P&L per project.

Classes, jobs, and tags — pick the structural one

Most small-business ledgers offer some mix of a customer/job field, a class (or category/division) field, and free-form tags. The distinction that matters:

  • Structural fields (job, class) live on each transaction line and drive real reports — P&L by class, profitability by job — with subtotals.
  • Tags are filters. Fine for "conference" or "grant-funded", weak for profit reporting because they rarely enforce one-per-line.

For job costing, use the structural field and be strict: one job per line, split transactions when a bill covers two jobs, and leave overhead lines blank on purpose. A blank means "company cost", not "forgot".

What a job P&L looks like

A deck-build job, tagged consistently for six weeks:

LineJob: Harmon deckNotes
Contract revenue18,400Progress invoices, all tagged
Materials(6,150)Lumber, hardware, stain
Subcontractor — electrical(1,200)Tagged from the bill
Direct labor(4,800)160 hrs at loaded cost
Permit and dump fees(390)
Job gross profit5,86031.8% of revenue

Now run that report across every job and sort by margin. The bottom of that list is where your pricing, estimating, or scope-creep problem lives — and it is invisible on the company P&L you learned to read in how to read a profit and loss.

Making it stick

  1. Turn on the job or class field and create one entry per active project — no more.
  2. Tag at entry, not at month end. A bill tagged when it arrives is right; a batch retagged from memory is a guess. This rides on the same habits as your transaction categorization system.
  3. Tag labor. Untracked labor is the biggest hole in small-business job costs — even a simple timesheet-hours-times-loaded-rate entry beats nothing.
  4. Review a job P&L at every job's close, while you can still remember why the margin moved.

If you later find some jobs are genuinely different lines of business — service versus installs, say — that is segment reporting, one level up from jobs; classes carry that too, used sparingly.

What to do next

  1. Enable the job/class field and set up your current active projects.
  2. Tag this week's bills and invoices as they're entered; split lines that span jobs.
  3. Run one job P&L for your most recently finished project and check the margin against what you bid.

Frequently asked questions

What is job costing in bookkeeping?
Job costing tags each revenue and cost transaction to a specific project or customer job, so the ledger can produce a profit and loss per job. The company-wide P&L stays the same; job costing adds a second dimension. It answers the question a normal P&L cannot: which jobs made money and which quietly lost it.
What is the difference between classes and tags for job tracking?
Classes (or categories, divisions) are a structural field on each transaction line that reports can group and subtotal by; most ledgers allow one class per line. Tags are looser labels, often several per transaction, useful for ad-hoc filtering but weaker for formal per-job P&L reports. For job profitability, use the structural field.
Which costs should be assigned to a job?
Direct costs only: materials, subcontractors, direct labor hours, permits, equipment rental for that job. Overhead — rent, insurance, admin wages — stays unassigned unless you deliberately allocate it by a stated formula. Mixing overhead into jobs inconsistently makes every job look bad and none comparably.

Keep reading