Construction Accounting: Job Costing vs General Ledger - Blog
Construction Accounting: Job Costing vs General Ledger

April 12, 2026

Construction Accounting: Job Costing vs General Ledger

Karim RedaKarim Reda

Why Your P&L Lies to You

Most construction companies run their finances through a standard general ledger. Revenue, expenses, payroll — it all flows into the same chart of accounts. The monthly P&L shows whether the business made money. The balance sheet shows what you own and owe. Standard accounting.

The problem is that construction is not a standard business. A SAR 120M road project and a SAR 8M fit-out contract run simultaneously, share the same equipment pool, use the same site labour, and draw from the same procurement team. The general ledger reports one bottom line for the company. It cannot tell you which of those two projects is making money — or whether either of them is.

That is the gap job costing fills. And for construction companies operating across multiple projects in the GCC, closing that gap is the difference between growing confidently and discovering losses only when the project is complete.

What the General Ledger Shows (and Does Not Show)

A general ledger organises financial activity by account type: revenue, cost of goods sold, operating expenses, payroll, depreciation. Every transaction is posted to an account. The ledger is accurate, auditable, and compliant. It satisfies ZATCA, satisfies your auditors, and tells you whether the company is profitable.

What it does not show is which project generated that revenue or which project absorbed those costs. When your project accountant posts a SAR 2.3M concrete delivery to "Cost of Materials — Civil Works," that entry is correct. But it provides no information about whether it was for Project A in Riyadh or Project B in Jeddah, whether it was within budget, or whether the material was even received and verified against the work done on site.

For a company running two or three projects, the shortfall is manageable. The PM knows roughly where costs are going. For a GCC contractor running 15 active projects across multiple clients and geographies, the general ledger becomes a financial black box. You see the company result; you cannot see what is driving it.

Job Costing: The Construction Accounting Layer

Job costing adds a second dimension to every financial transaction: the project and the cost code it belongs to. Instead of posting that concrete delivery to "Cost of Materials," you post it to Project B / Civil Works / Substructure / Concrete. The same ledger entry, but now linked to a specific job and a specific work breakdown structure (WBS) code.

This changes what accounting can answer. With job costing in place, you can produce a cost report for any project showing:

  • Original budget by cost code
  • Committed costs (approved POs not yet invoiced)
  • Actual costs to date
  • Forecast cost to complete
  • Projected variance at completion

That is project-level financial intelligence — and it runs from the same transactions that feed your general ledger. No double entry, no reconciliation between two systems. The WBS code is a tag on the transaction, not a separate accounting system.

Cost Codes: The Architecture of Job Costing

The quality of your job costing depends entirely on the cost code structure you apply. A well-designed WBS gives you clean, comparable data across projects. A poorly designed one — or one that varies by project — gives you noise.

Construction cost codes typically follow a three or four-level hierarchy:

  • Level 1 — Division: Civil, Structural, MEP, Finishing, Preliminaries, Subcontractor
  • Level 2 — Work package: Earthworks, Foundations, Superstructure, HVAC, Electrical
  • Level 3 — Cost element: Labour, Materials, Plant & Equipment, Subcontract
  • Level 4 — Sub-element (optional): Overtime, Hired plant, Owned plant

Standardised codes matter most for benchmarking. If every project uses the same code for "Formwork — Labour," you can compare labour productivity across projects, identify which site crews are efficient and which are not, and build a cost database that makes estimating future work more accurate.

Many GCC contractors use different codes for every project, making cross-project comparison impossible. Standardising codes is often the first and most valuable step in improving financial reporting.

Committed Cost: The Number Most Companies Miss

One of the most important concepts in job costing is the committed cost — costs you have contractually obligated but not yet paid. An approved purchase order for SAR 1.8M of steel reinforcement is a committed cost from the moment the PO is issued, even if delivery happens in six weeks and the invoice arrives in eight.

Companies that track only actual costs (invoices received and approved) consistently underestimate their project spend. The project cost report looks healthy in month three. By month seven, when the invoices arrive, the project is already over budget — and it was over budget in month three. You just did not know it.

A proper job costing system integrates with procurement. Every approved PO, subcontract award, and work confirmation flows into the cost forecast. The project manager sees not what has been spent, but what will be spent based on current commitments. That is the number you need to manage a project.

Cost-to-Complete Forecasting

The most actionable output of job costing is the cost-to-complete (CTC) forecast — the projected cost of finishing the remaining scope. CTC drives the estimated cost at completion (EAC), which tells you whether the project will finish within budget.

EAC is calculated as:

EAC = Actual Costs to Date + Committed Costs + Cost to Complete Remaining Scope

The CTC portion requires judgment — you are estimating future costs, not reporting past ones. But the judgment is more accurate when it starts from reliable data: actual unit rates from work completed, current subcontract commitments, known material prices, and current productivity data from timesheets.

Project managers who do this rigorously typically identify overrun risks three to four months before they materialise. That lead time is enough to act — renegotiate a subcontract, value-engineer a scope item, accelerate revenue recognition through a variation claim, or escalate to the client before the overrun becomes a dispute.

Where Job Costing Breaks Down in Practice

Most construction companies run job costing — or think they do. The results are often unreliable because the data feeding the system is incomplete or delayed.

Three common failure patterns:

1. Procurement is disconnected. POs are raised in one system (or a spreadsheet), invoices are approved in another, and the job cost report is assembled manually once a month. By the time the report is produced, it reflects last month's activity. Committed costs are not captured at all.

2. Work confirmations do not feed cost. Subcontractor costs are posted when invoices are approved, not when work is confirmed on site. A subcontractor completes and confirms SAR 800K of work in month three. The invoice arrives in month five. The cost does not appear in month three's report. The PM's view of cost is systematically lagged.

3. Timesheets are allocated to projects after the fact. Labour allocation is the most discretionary input in job costing. When timesheets are filled in weekly or monthly with estimated project time rather than actual time, the data is unreliable. High-cost site labour ends up allocated roughly rather than accurately.

Fixing these failures is not primarily a technology problem. It is a data discipline problem — though the right platform makes discipline easier to enforce.

Integrating Job Costing with the Full Financial Cycle

Job costing reaches its full value when it is connected to the rest of the financial and operational cycle:

  • Estimation: Tender cost codes flow directly into the project budget. No re-entry, no mapping exercise.
  • Procurement: Every PO is tagged to a project and cost code at creation. Committed cost is updated in real time.
  • Subcontract management: Work confirmations drive subcontractor cost recognition. Invoice matching validates that claimed amounts match confirmed work.
  • Timesheets: Daily or weekly labour allocation by cost code feeds both job cost and payroll.
  • Billing: Progress billing draws on the same WBS, linking revenue recognition to cost incurred at the cost code level.
  • General ledger: Approved transactions post automatically. No reconciliation between project cost and financial accounts.

When this cycle is connected, the job cost report is not a separate report that someone assembles. It is a live view of the project's financial position — updated whenever a PO is approved, a work confirmation is signed, or a timesheet is submitted.

What Good Looks Like

A construction CFO running job costing well should be able to open any active project and see:

  • Budget vs committed vs actual by cost code — current, not last month
  • EAC with projected variance at completion, flagged if it exceeds threshold
  • Unbilled revenue: certified work not yet invoiced to the client
  • Retention balance and expected release dates
  • Cash flow forecast: incoming client payments vs outgoing subcontractor and supplier payments over the next 90 days

That level of visibility is achievable with the data most construction companies already generate. The barrier is usually not data collection — it is the connection between the systems that hold the data.

General ledger accounting tells you how the company performed last month. Job costing tells you how your current projects are performing right now, and where they are likely to finish. For a project-based business, the second number is the one that determines whether the first number will be acceptable six months from now.

Did you enjoy reading this blog? Share it

Ready to find out more?

Author Details

Karim Reda
Karim Reda

used to manage contractor invoices the painful way — spreadsheets, phone calls, late payments. now he writes about doing it smarter. if it involves billing or BOQs, karim's already written about it.

The best of Buildapay.Delivered twice a month.