# How do I set up job costing so I can see what each job actually cost and what it made?

Applies to: United States · Updated 2026-09-30

Give each job a number when it opens and record that number on every bill, purchase, time record and invoice as it is entered; a per-job result cannot be rebuilt reliably afterward. Capture materials, labor from time records naming the job, subcontractors and other direct costs, and bill against the same job. Decide whether overhead is applied, compare each job with its estimate, reconcile job totals to the ledger, and call a result final only after late bills arrive.

## Why must the job go on each cost and billing when it is recorded?

The Defense Department's clause on contractor accounting systems, DFARS 252.242-7006, sets criteria for defense contractors whose contracts include it; two of them describe a structure worth copying: identification and accumulation of direct costs by contract and accumulation of costs under general ledger control, meaning costs gathered by job inside the books, not in a side list.

Assigning jobs afterward, from memory or a bank feed, fails. A feed line shows a payee and an amount, not a job; a bill covering two jobs cannot be split accurately weeks later; hours not tied to a job on the day are guessed. Whatever cannot be placed stays unassigned, and every job looks cheaper than it was.

## What counts as one job, and when does it open and close?

The Federal Acquisition Regulation (FAR), which sets cost principles for U.S. government contracts, calls the unit you want results for a cost objective, defined in FAR 31.001 as "a function, organizational subdivision, contract, or other work unit for which cost data are desired". In a contracting or project business it is usually one agreement with one customer for one scope of work. Write these rules down before the first job runs:

- **New job.** A new agreement or work order opens a new job, and no job number is reused.
- **Change order.** An approved change order stays on the job it changes, with its price and estimated cost.
- **Small and warranty work.** You decide once whether each service call or each customer-month is a job, and whether warranty call-backs reopen the original job.
- **Opening.** A job opens when the customer accepts the work, before its first cost or deposit, with its price and estimate recorded.
- **Closing.** A job closes only after the final check below and afterward takes entries only through a noted reopening.

## Which costs belong to a job, and which are overhead?

FAR 31.202 treats costs specifically identified with a final cost objective as its direct costs. FASB's guidance on costs to fulfill a contract, in Accounting Standards Update 2014-09 (paragraph 340-40-25-7), lists five kinds of cost that relate directly to a contract: direct labor; direct materials; allocations of costs such as contract supervision, insurance and depreciation of tools and equipment; costs explicitly chargeable to the customer; and other costs incurred only because the entity entered into the contract, such as payments to subcontractors. Use a narrower working test than FASB's list: would this cost exist without this job? It leaves allocations such as supervision, insurance and tool depreciation in overhead, where they reach a job only through an applied rate. Capture these categories against each job:

- **Materials.** These are items bought for the job or drawn from stock for it.
- **Labor.** This is the time of the people doing the work.
- **Subcontractors.** These are all subcontractor bills for the job.
- **Other direct costs.** These include permits, rented equipment, disposal and travel that exist only because of the job.

Capturing materials alone makes every job look more profitable than it was. Treat each kind of cost the same way on every job: the federal cost principles for government contracts, in FAR 31.202, bar charging a cost as direct "if other costs incurred for the same purpose in like circumstances have been included in any indirect cost pool". The same section lets a direct cost of a minor dollar amount be treated as indirect if the treatment is consistently applied to all final cost objectives and produces substantially the same results as treating it as direct.

## How does labor reach a job?

A payroll run shows what each person was paid, not where they worked, so labor reaches jobs only through time records that name the job. The DFARS 252.242-7006 criteria include a timekeeping system that identifies employees' labor by cost objective and a labor distribution system that charges direct and indirect labor to the appropriate cost objectives.

When employees work several jobs in a day, this is a precondition, not a refinement: each person logs hours per job on the day, with codes for time that belongs to no job, such as shop time, travel between jobs and training, and someone other than the employee approves the record where staffing allows. Without it, job cost either omits labor, which overstates every margin, or spreads it by guess, which misstates each job's margin in either direction.

Choose one cost basis for those hours and write it down:

- **Pay rate.** Each hour is costed at gross hourly pay, and employer payroll taxes, insurance, benefits and paid leave stay in overhead.
- **Loaded rate.** Each hour carries gross pay plus those employer costs, which then stay out of overhead, because counting them in both the rate and overhead charges them twice; FAR 31.203 applies the same rule to government contracts.

For salaried staff, divide pay by expected hours. Each pay period, job hours at the rate go to their jobs and indirect hours to overhead; recording the payroll run itself is a separate question. The distribution moves cost the payroll run has already recorded. Debit job labor, carrying the job, for job hours at the rate, and debit the indirect labor account for indirect hours. Credit the account the payroll run debited, or a labor clearing account it posts to. Under a loaded or salaried rate, what remains in that account is the gap reconciliation step 4 explains. If your payroll posting already splits wages by job, do not distribute them again. If you work on jobs without being on payroll, record your hours and either add a stated rate in the job report or say the margin includes your own pay.

## How do billings attach to the same job?

Every contract price, change order, deposit and invoice carries the job; a cost-only setup says what a job cost, never what it made. The billing arrangement decides what else the record carries, and margins compare only between jobs on the same arrangement:

| Arrangement | The job record also carries | What the margin shows |
|---|---|---|
| Fixed price | Price, approved change orders and the estimate by category | The margin tests the estimate and how the job was run |
| Time and materials | Billable and non-billable hours, billing rates and materials billed | FAR 16.601 describes hourly rates "that include wages, overhead, general and administrative expenses, and profit", so the margin over direct cost must cover overhead before profit |
| Cost plus a fee | Which costs the contract reimburses or excludes, and the fee terms | Largely the fee less excluded costs |
| Unit price | Unit rates and the quantities completed and billed | Cost per unit against each rate, readable only if quantities are recorded |

Retainage held back from progress billings is a separate question.

## Should overhead be applied to jobs, and what does the margin mean without it?

Choose one path and print it on every job report:

- **Direct costs only.** The margin is revenue minus direct cost, which is the job's contribution toward overhead and profit, not its profit.
- **Applied overhead.** FAR 31.203 has indirect costs grouped logically, each group allocated by "an allocation base that is common to all cost objectives to which the grouping is to be allocated" and on the benefits accruing to them. If overhead follows crew time, direct labor hours or cost may be that base; set a rate from a past period's overhead divided by that period's total base, and give each job its base times the rate.

The same FAR section accepts less precise methods that achieve substantially the same results, so one business-wide rate can be enough. Add applied overhead in the job report rather than posting it, compare it with actual overhead each period, and revise the rate when the gap persists.

The costly mistake is judging a direct-only margin against a price set to cover overhead: the job can look healthy and still lose money. Use a job's result to price the next of the same kind only when both sit on the same labor basis, overhead path and billing arrangement.

## What happens to a cost that arrives without a job?

Each point where costs enter the books needs a habit that puts the job on at entry:

| Where the cost enters | How the job gets on it |
|---|---|
| Supplier bill | Entered with job and category; a bill for several jobs is split by line |
| Card or cash purchase | The buyer notes the job at purchase, and the bookkeeper matches the bank or card line to that note |
| Materials from stock | An issue record naming the job |
| Subcontractor bill | Entered against the job and its subcontract |
| Time | A job or indirect code on each daily entry |
| Journal entry | A job on every line touching a job-cost account |
| Invoice, change order or deposit | The job, entered by whoever raises it |

Make the job a required field wherever your system allows. Anything entered without one goes to a single holding code such as "Unassigned", never without a job into a job-cost account, and the person who can identify the job clears it weekly from the documents. A cost that genuinely serves several jobs goes to overhead or is split on a stated basis when entered. Moving a cost between jobs is an adjusting entry, and the DFARS 252.242-7006 criteria include approval and documentation of adjusting entries, so record the reason and the approver. List the holding-code total on every job report.

## Which reports should the setup produce?

Build each report from the ledger, so it agrees with the books:

- **Job profitability.** It shows revenue, cost by category and margin for each job to date, after overhead too if you apply it.
- **Estimate against actual.** It sets each category's estimate, revised for approved change orders, beside actual cost.
- **Job cost detail.** It lists every transaction on a job with its source document, for whoever runs the job to review.
- **Unassigned and indirect.** It shows the holding code and the hours booked to no job.
- **Open jobs.** It shows each job's status and the date of its last cost.

Record estimates in the same categories and on the same labor and overhead basis as actual cost, or the difference measures the change of basis, not the job. Available reports depend on your system; choosing between accounts, classes, tags or another tracking dimension is its own question.

A job running across months has two views: job to date, adding every cost and billing since it opened, and the period, showing one month's entries. Both are correct and answer different questions. How costs not yet billed, and billings ahead of the work, are treated at period end is a separate question.

## How do I prove the job totals agree with the ledger?

The DFARS 252.242-7006 criteria include reconciling subsidiary cost ledgers and cost objectives to the general ledger and determining costs charged to a contract at least monthly. Reconcile each month, with job reports and ledger on the same basis and dates:

1. For each account carrying job costs, add the month's amounts on jobs, in the holding code and under an indirect code.
2. Compare that total with the account's ledger balance for the month, which it should match exactly.
3. Compare the month's billings by job (on the cash basis, collections by job) plus non-job amounts with the accounts those billings post to: revenue and any customer-deposit or advance-billing account.
4. Compare labor charged to jobs plus indirect labor with payroll cost, and explain any gap a loaded or salaried rate creates.
5. Trace each difference to its entry, usually a missing job, a job on the wrong account or a journal entry without a job, and correct it with a documented entry.

Applied overhead, kept outside the ledger, is not part of this check. The reconciliation proves every amount in the job-cost accounts is on a job, in the holding code or coded indirect, not that each cost sits on the right job; the job cost detail and estimate review catch that. A job spreadsheet kept apart from the books drifts from them, so reconcile any such file the same way.

## When is a job's result final?

Work can finish weeks before its costs do. Keep a finished job marked complete but not final until these checks pass:

- Every purchase order and subcontract for the job has a matching bill, or a note that none will come.
- Every subcontractor's final bill is in.
- All time records for the job's dates are approved and distributed.
- The final invoice and every change order are billed.
- The holding code holds nothing belonging to the job.
- A month-end reconciliation has been completed after the last day of work.
- Every supplier used on the job has confirmed, or its next statement shows, that nothing for the job remains unbilled.

On cash-basis books a bill reaches the job when paid and an invoice when collected, so a job is final only once both are settled; on accrual books, once they are recorded. A bill arriving after that still goes to the job through a noted reopening, not to overhead, and whoever used the result is told.

## How do I start when jobs are already under way?

Pick a start date. Jobs opened after it follow the whole setup from their first cost. Give each job already running one of two labels:

- **Complete history.** Add the job to its earlier bills, receipts and invoices already in the books, back to its first cost, where your system allows it without changing amounts or dates, and record its estimate. Earlier hours count only if earlier time records name the job. If they do not, label the job partial, because its labor is incomplete.
- **Partial.** Where earlier costs cannot be traced, report only work after the start date against the estimate for that work, and keep the job out of comparisons and pricing.

Neither path posts an opening balance: earlier costs are already in the books, and a separate entry would count them twice. On the cash basis, a bill or invoice open at the start date has not yet reached income or expense; it reaches the job once, when paid or collected, so give it the job now if it is already entered as an open item, or at payment. On accrual books, an open bill or invoice already recorded has already counted and needs only the job added.

## What does one job look like from opening to close?

Job 2417 is an invented fixed-price bathroom remodel at 38,500, kept on the accrual basis, with labor costed at 42.00 an hour on the pay-rate basis, so employer payroll costs sit in overhead. Its estimate allowed 120 labor hours. Every record carries job 2417 as it is entered:

| Step | Record | Category | Amount |
|---|---|---|---|
| 1 | Job opened on signing, price and estimate recorded | Estimate | 20,640.00 |
| 2 | Deposit invoice, 30 percent of the price | Billing (deposit) | 11,550.00 |
| 3 | Supplier bill, another job's lines split off | Materials | 7,860.00 |
| 4 | Card receipt, job noted at purchase | Materials | 345.00 |
| 5 | Plumbing subcontractor bill | Subcontractors | 6,500.00 |
| 6 | Change order signed at 1,800, estimated electrical cost | Estimate | 1,100.00 |
| 7 | Electrical subcontractor bill | Subcontractors | 1,100.00 |
| 8 | Permit and dumpster bills | Other direct | 930.00 |
| 9 | Time records, two employees, 134 hours at 42.00 | Labor | 5,628.00 |
| 10 | Progress invoice, 40 percent of the price | Revenue | 15,400.00 |
| 11 | Final invoice, 30 percent plus the change order | Revenue | 13,350.00 |
| 12 | Supplier bill arriving three weeks after the last site day | Materials | 612.00 |

The closed job compares with its revised estimate as follows:

| Category | Revised estimate | Actual | Difference |
|---|---|---|---|
| Materials | 8,200.00 | 8,817.00 | 617.00 |
| Labor | 5,040.00 | 5,628.00 | 588.00 |
| Subcontractors | 7,600.00 | 7,600.00 | 0.00 |
| Other direct | 900.00 | 930.00 | 30.00 |
| Total direct cost | 21,740.00 | 22,975.00 | 1,235.00 |

Its billings total 40,300.00, the full price with the change order, so the direct margin is 17,325.00; called final before step 12, the job would have shown 17,937.00. With overhead applied at an invented 26.00 per direct labor hour, the job carries 3,484.00 of overhead and a margin after overhead of 13,841.00.

## What should I check before the first job runs?

Run this check before the first job and whenever a new way of buying or billing starts:

| Check | Done when |
|---|---|
| Job definition | Rules for new jobs, change orders, small and warranty work, opening and closing are written |
| Identifier | A unique job number is required on every bill, receipt, time record, invoice and job-cost journal line |
| Capture points | Each route in the capture table has an owner |
| Labor | Time records carry a job or indirect code, and the cost basis is written |
| Overhead and estimates | Reports state the overhead path, and estimates use the categories and basis of actual cost |
| Holding code | It exists and is cleared weekly |
| Report set | The five reports run from the ledger |
| Reconciliation | Job totals, billings and labor tie to the ledger monthly |
| Closing | The final check and the late-bill rule are written |
| Jobs under way | Each running job is labeled complete history or partial |

## Sources

1. U.S. Department of Defense (Code of Federal Regulations, published by the U.S. Government Publishing Office) — *48 CFR 252.242-7006, Accounting system administration*, revised as of October 1, 2025. https://www.govinfo.gov/content/pkg/CFR-2025-title48-vol3/xml/CFR-2025-title48-vol3-sec252-242-7006.xml
2. U.S. General Services Administration, Acquisition.gov (Federal Acquisition Regulation) — *FAR 31.001, Definitions*, FAC 2026-01, effective 03/13/2026. https://www.acquisition.gov/far/31.001
3. U.S. General Services Administration, Acquisition.gov (Federal Acquisition Regulation) — *FAR 31.202, Direct costs*, FAC 2026-01, effective 03/13/2026. https://www.acquisition.gov/far/31.202
4. Financial Accounting Standards Board — *Accounting Standards Update No. 2014-09, Revenue from Contracts with Customers (Topic 606)*, May 2014. https://storage.fasb.org/ASU%202014-09_Section%20A.pdf
5. U.S. General Services Administration, Acquisition.gov (Federal Acquisition Regulation) — *FAR 31.203, Indirect costs*, FAC 2026-01, effective 03/13/2026. https://www.acquisition.gov/far/31.203
6. U.S. General Services Administration, Acquisition.gov (Federal Acquisition Regulation) — *FAR 16.601, Time-and-materials contracts*, FAC 2026-01, effective 03/13/2026. https://www.acquisition.gov/far/16.601

## Related questions

- [On a job that runs across month end, how do I handle costs I've incurred but not billed, and billings that ran ahead of the work?](https://uppago.com/resources/how-to-handle-unbilled-costs-and-billings-ahead-of-work-across-month-end)
- [Should I create separate accounts for each location, department or job, or use classes, tags or another tracking dimension instead?](https://uppago.com/resources/should-i-create-separate-accounts-for-each-location-department-or-job-or-use)
- [My customer holds back a percentage of every progress billing until the job is finished — how do I bill and track that retainage?](https://uppago.com/resources/my-customer-holds-back-a-percentage-of-every-progress-billing-until-the-job-is)
- [What expense categories should a small business use?](https://uppago.com/resources/what-expense-categories-a-small-business-should-use)
