Construction AP Automation: Job Costing, Commitments, and Retainage

How construction AP should code bills to jobs, check draws against commitments, hold payment for missing documents, and test an automation tool.

A rental company sends one bill for a lift that spent its first week on Job 114 and its second on Job 127. The invoice total is right. The default job code is wrong for half of it, and nobody will notice until the project manager on Job 127 asks why their equipment line is under budget.

That is the shape of most construction AP problems. The vendor balance is fine. The job cost is wrong, the commitment is overbilled, or a bill that should have been held went out in the payment run. Reading the PDF faster does not fix any of those. What fixes them is keeping the job, the commitment, the approval history, and the payment conditions attached to the bill from intake to check.

Sort the bill before you route it

A single vendor can send you three different kinds of bills, and each needs different evidence. Decide which one is in front of you before choosing a reviewer.

Bill typeEvidence the reviewer needsTypical reviewer
Material deliveryPurchase order, delivery ticket or receiving record for the right job and siteProject accountant or superintendent
Subcontractor progress applicationSubcontract, approved schedule of values, approved change orders, last approved application, retainage historyProject manager, then project accountant
Equipment rentalRental agreement, agreed rate and billing unit, delivery and off-rent or pickup recordsSuperintendent and purchasing

Routing every bill to “the PM on the job” is where queues stall. A material bill with a clean PO and receipt rarely needs the PM at all. A progress application always needs someone who knows what was built this month.

Code each line to the work it covers

Job cost lives at a lower level than the vendor bill. Depending on your ERP, a line may need a job, a phase or cost code, a cost type or category, and a commitment reference. Labor-type charges need a phase and cost type. A rental line needs dates and a location before you can choose a job.

Vista, for example, documents several AP invoice line types and the job, phase, and cost type fields that apply to job lines (Trimble’s Vista line type documentation). Check which fields your own system expects, then verify how any proposed entry fills them.

When one charge covers more than one job, save three things with the bill: the basis for the split, the person who approved it, and a tie-out showing the distributions add back to the invoice total including taxes and fees handled separately.

Worked example: a rental bill split across two jobs (illustrative)

The supplier bills three weeks on a lift at a weekly rate of $1,200, plus $250 delivery and $250 pickup.

LineBilledSupported by recordsJob
Week 1 rental$1,200Delivery ticket to Job 114114
Week 2 rental$1,200Transfer log to Job 127127
Week 3 rental$1,200Off-rent called before week 3 beganDisputed
Delivery$250Delivery ticket114
Pickup$250Pickup ticket127
Total$4,100

Approved for posting: $2,900. Job 114 gets $1,450 ($1,200 + $250). Job 127 gets $1,450 ($1,200 + $250). The $1,200 for week 3 goes to the superintendent and purchasing as a dispute.

Before you dispute it, read the agreement. The date work stopped, the date you called the equipment off rent, and the date the supplier picked it up can all differ. United Rentals’ U.S. terms, for example, distinguish customer return from supplier pickup after the customer calls equipment off rent (United Rentals U.S. rental terms). Keep the supplier’s off-rent confirmation. If the supplier issues a credit, attach it to the original invoice and confirm it was applied before closing the exception.

Check a progress application against the commitment

For subcontract bills, the commitment is the control. Compare each line of the current application with the last approved one. Approved change orders should increase the contract sum. Pending ones should appear separately, with the amount and approval status visible to the reviewer. If the subcontractor changed the previously billed amount on a line, the reviewer should see the old figure next to the new one.

AIA’s G702 brings together the contract sum, net change by change orders, total completed and stored to date, retainage, and previous certificates to calculate the current payment due (AIA’s sample G702). Use your signed subcontract and its required form for the calculation. The full line-by-line method, including stored materials and pending changes, is in the subcontractor pay application guide.

Retainage payable at posting

When AP approves a draw, the withheld amount should land in its own liability account, tied to the job and commitment. Illustrative: a subcontractor bills $60,000 of completed work this period under a 10% retainage term.

AccountDebitCredit
Job cost (job, cost code, commitment)$60,000
Accounts payable, subcontractor$54,000
Retainage payable$6,000

The full $60,000 hits the job. Only $54,000 is due now. Your reviewer needs to see what was withheld on earlier draws, what is withheld now, and what remains before release. When a release is requested, the supporting evidence and the authorized approver should travel with it. The construction retainage guide covers the owner side of the same balance.

When a bill can post but cannot be paid

The PM approves the work. The coding is right. But the payment packet is missing a lien waiver, a current certificate of insurance, or a certified payroll week. AP may need to record the liability (so job cost and the AP aging are correct at month end) while keeping the bill out of the payment run. Treat those as two separate decisions with two separate records.

Tie each required document to the subcontractor, job, draw, and period it covers. A waiver from the prior draw can sit in the vendor folder looking complete while covering the wrong payment. Have your contracts team define the forms and timing for each project, then let the workflow flag what is missing. Payment release stays with the authorized person. The document checks themselves are in the lien waiver tracking guide.

HoldWho can clear itWhat they need to see
Change order awaiting approvalProject manager or contract administratorThe application line, the change request, current approval status
Job or cost code conflicts with the commitmentProject accountantProposed coding and the relevant commitment line
Retainage differs from the approved scheduleProject accountantPrior balance, current calculation, contract terms
Payment document missing or covers a different drawContracts administratorRequired document, period, payment reference

Then prove the hold works. Open the proposed payment run after the bill posts and confirm the held bill is excluded. Run it again with two open bills from the same subcontractor on different jobs, and check that the hold stops only the draw it applies to.

How holds and imports behave in common construction ERPs

The details vary enough that you should test in your own configuration. Here is what the vendors document.

SystemWhat the documentation saysWhat to test
Sage 100Invoice Payment Selection does not automatically select invoices on hold (Sage 100 help)Whether an invoice-level hold fits a bill split across two jobs with different document status
Sage 300 CREHolds can sit at vendor, invoice, distribution, job, or commitment level, and a distribution hold may not show in the invoice’s own hold status (Sage KB)What AP actually sees in payment selection, and whether a hold spills onto unrelated work
Sage 300 CRE importsAn import rejection can report that a job does not exist when the job, extra, or cost code is unavailable because of its status (Sage KB)Who fixes the setup, and how AP confirms which invoices already posted before a retry
Sage IntacctSupplier orders and subcontracts can be entered as commitments in Purchasing and converted to invoices, with retainage withheld where applicable (Sage Intacct docs)A subcontract with a change and a prior draw, landing on the right project and entity
VistaAP Unapproved Invoice Entry feeds AP Unapproved Invoice Review for assigned reviewers once an invoice is marked ready (Trimble docs)Where an automation tool’s output lands and how the existing review continues from there

Sage 300 CRE and Sage Intacct are separate products. If you are weighing a migration between them, test the proposed system with open commitments, unpaid bills, and retainage carried over, and verify that the first new draw starts from the right balances. If your current system already posts job cost correctly and enforces the holds you need, the cheaper fix is usually in how evidence reaches reviewers.

On a Sage 300 CRE import rejection, read the message before asking the vendor for a new invoice. A completed job may be closed to new cost on purpose. Have the authorized owner check the setup, correct the record, and resubmit only the rejected items.

How to test an automation tool on your own bills

Feature lists will not tell you much. Bring three cases your project accountant has already sent back, and ask every vendor to process the same records.

Hand the vendorAsk them to show you
Subcontractor bill with one pending change orderThe affected line, remaining commitment, proposed job and cost code, and who can resolve it
Approved bill with retainage and a payment holdGross amount, withheld balance, and proof the bill stays out of the payment run while the hold is open
Rental bill spanning two jobsThe dates, allocation basis, and cost code for each portion

Then push on the failure paths. Have the project accountant correct a suggested cost code and show where the correction and approval are saved. Simulate an ERP write that times out after the ERP received it, and verify the retry finds the existing bill instead of creating a second payable. Get the supported connection scope in writing: which fields the tool reads and which records it can create or update. As a reference point, ProcIndex’s stated ERP connections are QuickBooks, NetSuite, and Sage Intacct; for CMiC, Vista, Sage 300 CRE, Acumatica, or FOUNDATION, ask each vendor what it supports in your version.

A good pilot uses two successive draws on one project. Process the new draw, get the project team’s decision, trace the approved amounts into the ledger, and check the job cost report. Then reopen the next draw and confirm it starts from the right prior balance and retainage. Measure where the bill waited and how much work people repeated. If the main delay is a superintendent confirming progress, fix that handoff before adding capture rules. The AP automation implementation guide covers rollout, and the AP pricing and ROI guide covers cost comparison against measured staff time.

What goes wrong most often

  • Right vendor balance, wrong job. The AP aging ties, but costs sit on the wrong project. Check the job cost report, not only the vendor ledger.
  • A revised application posts as a second payable. Keep the original and the revision linked, and confirm the revision replaces or adjusts the first.
  • Pending change orders get paid or dropped. The amount should stay visible on the next draw until someone approves or rejects it.
  • Retainage carries forward twice. Compare the prior retainage balance on the new draw with the ledger before approving.
  • A hold set at one level is invisible at another. Always check the payment selection screen, not the invoice header.
  • Shared charges with no saved basis. Six months later nobody can explain why the split was 60/40.

Checklist for the next subcontractor draw

  1. Tie the prior retainage balance on the application to the retainage payable ledger for that commitment.
  2. Record any pending change order amount separately so it shows up again on the next draw.
  3. Post with the hold recorded and its owner named, then open the proposed payment run and confirm the hold excludes only this draw.
  4. After payment, run the job cost report, not just the vendor ledger.

See this workflow on your own ERP data

ProcIndex connects to NetSuite, Sage Intacct, and QuickBooks. Bring a recent batch and we'll walk through it with your team.

Book a Demo See ProcIndex for construction AP