PBooksPro is now BuilderOnesame company, same team, a much bigger product. What this means

BuilderOne

Construction cost control

Committed cost vs actual cost on a construction project

A project that has spent 2,000,000 against a 10,000,000 budget looks comfortable — until you notice it has awarded 9,500,000 of contracts. Actual cost tells you what has happened; commitment tells you what has already been promised. A cost position that shows only one of them is half a number.

Last revised

Why actual cost alone is half a number

Ask most project accountants what a construction project has cost and they will answer with the ledger: the contractor bills certified, the vendor bills accrued, the payroll posted. That number is true and it is incomplete. It says nothing about the contracts already awarded but not yet billed, the purchase orders issued but not yet delivered, or the retention that will fall due at completion. A project can be well within budget on actual cost and already over budget on what it has promised.

The spreadsheet answer is a “cost to complete” column somebody maintains by hand, from the contract file, and updates when they remember. The system answer is to measure commitment as a first-class figure, from the documents that create it, beside the actual cost — and to keep the two apart, because they answer different questions.

The five figures, and which document produces each

BuilderOne’s Construction module publishes a project cost position by cost category. Every row carries the same five measures, each derived from a specific kind of document rather than typed in:

The measures in a project cost position and their sources
MeasureWhat it meansWhere it comes from
BudgetThe current effective approved budget for the category.Approved (or closed) budget versions and their active lines; drafts and cancelled budgets do not count.
CommittedWhat has been promised to contractors under live contracts.Active lines of active or completed contracts, by category.
Billed (cost incurred)The preferred measure of actual project cost. Not cash paid.Confirmed contractor bills, plus confirmed site expenses.
PaidCash actually settled against those bills. May be less than billed under partial payment.Posted, non-reversed bill settlements, allocated pro rata.
Open commitmentCommitted less billed, floored at zero: what is still to come under awarded contracts.Derived from the two figures above.

Two derived figures follow: remaining budget is budget less billed (never budget less paid — a bill you have not yet paid is still a cost), and a category is over budget when billed exceeds budget. The contract publishes each of these as an exact decimal, with the caveats travelling as data rather than footnotes.

A worked example

One category — say structural steel — with a 1,500,000 budget, one awarded contract of 1,200,000, 900,000 certified so far and 400,000 paid:

A cost position for one category
FigureAmountReading
Budget1,500,000The plan.
Committed1,200,000Promised under the awarded contract.
Billed900,000Incurred — the project cost so far.
Paid400,000Cash out. 500,000 of billed cost is still unpaid.
Open commitment300,0001,200,000 − 900,000: still to be billed under the contract.
Remaining budget600,0001,500,000 − 900,000.
Remaining after commitment300,000600,000 − 300,000: what the budget can still absorb beyond what is already promised.

Read only the ledger and this category is 600,000 under budget. Read the commitment and it is 300,000 under — half the headroom. Read only cash and it looks like 1,100,000 of room, which is not a number that means anything. The exposure the project actually carries is the committed figure; the ledger will catch up with it bill by bill.

Not all “actual” cost is in the ledger, and the position says which is

A subtlety that matters for reconciliation: cost incurred is not one thing. In BuilderOne the billed figure is deliberately split into the portion backed by a posted general-ledger accrual (confirmed contractor bills whose accrual has posted), the portion confirmed but not yet posted, and the portion from confirmed site expenses — which are operational records that write no ledger entry at all. The three always sum to billed, but they are exposed separately so that no report can present a non-posting figure as if it reconciled to the general ledger.

This is also why the ledger-backed figure reconciles to the general ledger only in aggregate: a contractor bill posts its accrual at header level, not per cost-category line. The position tells you this rather than letting you discover it.

Where purchase orders fit — and an honest limit

Purchase orders are commitments too: an issued order for steel is a promise to pay for it once it arrives. In BuilderOne, Procurement shares the supplier, project and cost-category records with Construction, so a vendor bill lands on the project it was bought for, and the purchase-order register states how much of each order line has been received.

What Procurement does not currently do is state an open commitment in money. The purchase-order register reports remaining quantity per line and the order’s own header total, and it says explicitly that the total is not a commitment, an amount paid or an amount owed. The committed figure in the cost position is therefore contract commitment: awarded construction contracts, not open purchase orders. If your exposure is dominated by material orders rather than contracts, read the two registers together; the product does not add them into one number, and this guide will not pretend it does.

What keeps the position honest

  • Budgets are versioned. A revised budget is a new approved version; the position always reads the current effective one, and superseded lines cannot be counted twice.
  • Commitment counts only live contracts. A draft, a cancelled contract or a superseded contract line contributes nothing.
  • Certifying a contractor bill measures it against the budget of its category at that moment, so an overrun surfaces on the bill that causes it rather than at month end.
  • Every figure is the project’s own currency and scale — a project kept in a zero-decimal currency reports at scale 0, not rounded from somewhere else.
  • Uncategorised cost is not hidden. Cost carrying no governed category appears in a single explicit bucket, so the named rows plus that bucket always equal the project total.

The same discipline that keeps this position honest is what makes a project-wise profit and loss trustworthy: one source per figure, no figure typed, and a plain statement of what each number does and does not include.

See it on your own numbers

The fastest way to judge whether this is how your software should work is to put a real project through it. Tell us what you run and we will set your company up.