Accounting

Why your job costs don’t match your general ledger.

They rarely tie line-for-line — and they shouldn’t. Here’s the gap, why it’s normal, and how to reconcile it in 30 seconds.

First month free · Unlimited users · No QuickBooks required.

Every contractor has had this moment: the job-cost report says you’ve spent $410,000 on a job, but the general ledger shows less. Which one is wrong? Usually neither. They’re measuring two different things, and once you see the split you’ll never be confused by it again.

The ledger is fact. The job report is fact + forecast.

The general ledger only records what has actually happened — an invoice approved, a payroll run, a payment made. It’s the immutable book of record. A good job-cost report shows you something more useful for running the job: not just what you’ve spent, but what you're going to spend. That forward-looking piece is exactly why the two numbers differ.

The two buckets that create the gap

  • Committed cost. You signed a $90,000 subcontract. You owe that money, so it shows on the job report — but the sub hasn’t billed you yet, so it isn’t in the ledger. That's an open commitment.
  • Accrued cost. A crew worked this week or a sub finished a phase but the invoice hasn’t arrived. The cost is real and belongs to the job, but it hasn’t posted yet.

Add those to posted cost and you get the job-cost number. So job cost = posted GL cost + open commitments + accruals. The difference between your job report and your GL isn’t an error — it's those two buckets, and you should be able to point to them.

Why a delay doesn’t break it

This is where schedule-based systems fall apart. If a sub gets weather-delayed for three weeks, a system that “draws down” commitments on a calendar will wrongly show that money as spent. The correct approach is event-driven: a commitment only converts to cost when a real invoice posts. A stalled sub keeps its full commitment automatically — your forecast absorbs the delay, and your posted history never changes.

The 30-second reconciliation

When someone asks why the numbers differ, you walk it: “Posted cost is $321,000. We have $79,000 in signed subs not yet billed and $10,000 in labor accrued this week. That’s the $410,000 on the job report.” Three numbers, fully explained. If they don’t add up, that's your signal something is coded to the wrong job or account — which is the whole point of reconciling.

How Bullwork keeps them tied

In Bullwork, the general ledger is the single source of truth. Every approved cost posts to the ledger, and the job-cost and WIP views are derived from it — posted cost, plus open commitments, plus accruals, each labeled. The gap is never a mystery because the platform shows you exactly what it's made of, on every job, in real time.

Frequently asked questions

Should job costs equal the general ledger?

Not exactly. Posted costs tie to the GL, but a job-cost report usually also includes committed costs (signed but unbilled) and accruals (work done but not yet invoiced). Those aren’t in the GL yet, so the job report will read higher — by a knowable, explainable amount.

What is a committed cost?

A committed cost is money you’re contractually on the hook for but haven’t been billed for yet — a signed subcontract or purchase order. It’s a future cost, so it belongs in your forecast and job report, not in the posted ledger until the invoice arrives.

What’s the difference between fact and forecast in job costing?

Fact is what has actually posted to the ledger — immutable history. Forecast is your estimate of where the job will land (estimate at completion). Delays and change orders move the forecast; they never rewrite posted history. Keeping the two separate is what makes the numbers trustworthy.

How do I reconcile job cost to the GL?

Start from posted GL cost, then add open commitments and accrued (unbilled) costs to get the job-cost figure. The difference should be fully explained by those two buckets. If it isn’t, something is miscoded — that’s the reconciliation to chase.

One ledger. Every number ties.

See your posted cost, commitments, and WIP reconcile on your own jobs — your first month is free.

Request a demo