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

BuilderOne

Construction accounting

Contractor billing, retention and advances: how the ledger should carry them

A contractor bill is never just one number. Part of it is payable now, part is held as retention, part recovers an advance you already paid, and all of it is a project cost the moment it is certified. This is how those pieces should land in the accounts — and why a spreadsheet gets it wrong.

Last revised

Why contractor billing goes wrong in a spreadsheet

On most construction projects the contractor’s bill is certified by an engineer, the retention and advance recovery are worked out in a workbook, and the net figure is typed into an accounting package as “payment to contractor”. Three things are lost at that moment: the gross cost the project incurred, the liability the business now carries for retention, and the fact that part of the payment was not a cost at all but the recovery of money paid earlier.

The consequences arrive later. The project cost report understates what the project actually consumed, because it only ever saw net payments. Retention owed to contractors exists in nobody’s balance sheet until someone asks for it. And the advance — real cash that left the bank months ago — is either double-counted as a cost or never recovered at all.

The documents, in the order they happen

The flow below is the one BuilderOne’s Construction module runs. Each step is a separate, approved document, and each one that moves money produces its own posting rather than being folded into a single payment entry.

  1. Contract — a contractor is awarded a scoped contract on a project, with a value, a cost category and, where agreed, a retention percentage and an advance recovery basis.
  2. Advance — a mobilisation or material advance is issued against the contract. It is cash out, but it is not a cost: it is a balance the contractor owes you until it is recovered.
  3. Bill — the contractor raises a bill, or a progress bill measures work completed against the contract, for a gross amount.
  4. Certify — approval confirms the gross amount, applies the retention hold, recovers the agreed portion of the advance and checks the result against the budget.
  5. Post — the certified bill accrues to the ledger as a project cost and a contractor payable, attributed to the project and its cost category.
  6. Pay — payment settles the payable. Retention stays held as a liability until a separate, approved release.

What each document does in the ledger

Account names vary by chart of accounts; the shape does not. The gross certified amount is the cost. Retention and advance recovery do not reduce the cost — they change who is owed what, and when.

The ledger effect of each contractor document
DocumentDebitCreditWhat it means
Advance issuedContractor advance (asset)BankCash has gone out, but the project has consumed nothing yet. The advance is recoverable.
Bill certified — grossProject cost, by cost categoryContractor payableThe project incurred the full certified amount, whatever is paid now.
Retention heldContractor payableRetention payable (liability)Part of what is owed is not payable yet. It is still owed.
Advance recoveredContractor payableContractor advance (asset)Part of what is owed is settled against money already paid. The advance balance falls.
PaymentContractor payableBankThe amount actually payable now leaves the bank.
Retention releasedRetention payableContractor payable, then BankA separate, approved event — usually at completion or after a defects period.

Read across the rows and the point becomes visible: the project cost line is touched once, at the gross certified amount. Everything after that is a movement between the payable, the retention liability, the advance asset and the bank. That is what lets the general ledger answer “what did this project cost?” and “what do we owe contractors, and when?” as two different questions with two correct answers.

A worked example

A contract worth 10,000,000 (in whatever currency the company keeps its books) carries 5% retention and a 10% mobilisation advance, recovered pro rata from each bill. The first progress bill is certified at 2,000,000.

First progress bill on a 10,000,000 contract
LineAmountWhere it goes
Mobilisation advance issued at award1,000,000Contractor advance (asset)
Gross certified, bill 12,000,000Project cost — the full amount
Retention held at 5%(100,000)Retention payable — still owed
Advance recovered at 10% of the bill(200,000)Contractor advance falls to 800,000
Payable now1,700,000Contractor payable, settled by payment

After this bill the project shows a cost of 2,000,000, the business owes the contractor 100,000 in retention, the contractor still holds 800,000 of unrecovered advance, and 1,700,000 has left the bank. A spreadsheet that records “paid contractor 1,700,000” has lost every one of those facts except the last.

The controls that make the numbers stay right

The postings above are only reliable if the documents that produce them cannot be bypassed. In BuilderOne these are properties of how the module is built, not procedures written about it:

  • Retention terms and the advance recovery basis are defined on the contract, so certification applies them automatically rather than relying on whoever prepares the bill to remember.
  • Certification is an approval step, and where duties are separated the same person cannot both raise and approve the bill.
  • The bill is measured against the project budget by cost category at certification, so an overrun surfaces on the bill that causes it rather than in a month-end review.
  • A bill that has not been posted cannot be paid. Payment settles a liability the ledger already knows about; it never creates one.
  • A posting into a closed accounting period is refused, which is what makes a reported project cost stable once the period is closed.
  • The contractor is one record, shared with Procurement, so their contract balances, vendor bills and payments all sit on one party rather than three.

What to look for in software that claims to handle this

  • Does certifying a bill post the gross amount as a project cost, or only the net payment?
  • Is retention a liability the balance sheet carries, with a history of holds and releases — or a column in a report?
  • Is an advance an asset that is recovered against bills, or a negative cost?
  • Can a bill be paid before it has been certified and posted? It should not be possible.
  • Does every posting carry the project, so the project’s cost position is a query rather than an assembly job?

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.