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.
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:
| Line | Job: Harmon deck | Notes |
|---|---|---|
| Contract revenue | 18,400 | Progress 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 profit | 5,860 | 31.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
- Turn on the job or class field and create one entry per active project — no more.
- 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.
- Tag labor. Untracked labor is the biggest hole in small-business job costs — even a simple timesheet-hours-times-loaded-rate entry beats nothing.
- 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
- Enable the job/class field and set up your current active projects.
- Tag this week's bills and invoices as they're entered; split lines that span jobs.
- 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.