Progress billing and retainage from a contract
Bill a customer against a contract’s schedule of values: invoice → customer → job → contract line, with percent complete, billed-to-date, and retainage held on each line.
- Plans
- Advanced and above
- Availability
- Available
- For
- Owners, Bookkeepers, Accountants
- In KontoCore
Projects → Contracts → Progress billing
Prelaunch capability. Retainage release billing is still being verified and is not yet documented as a supported workflow.
In plain English
A big job is billed in installments as work gets done. Each invoice says how far along each part of the job is, and the customer may hold back a percentage (retainage) until the end.
What this does
A progress invoice is a normal sales invoice linked to a customer, a job, and a contract. Each invoice line points at one schedule-of-values line, so the contract always knows how much of every line has been billed and how much remains.
Retainage is calculated per line at the contract’s retainage rate and is tracked separately from the amount due now, so receivables show both what the customer owes today and what is being held. Billing the held retainage at the end of a job is being verified in prelaunch; until it is documented here, confirm the release approach with your accountant.
| Term | What it means |
|---|---|
| Schedule of values (SOV) | The contract broken into billable lines with a scheduled amount for each. |
| Billed to date | What has already been invoiced on a line. KontoCore derives it from posted invoices; it is never typed in. |
| Retainage | The portion the customer holds back on each bill until completion or release. |
More plain-language help in KontoGuide and the Glossary.
Before you start
- Create the customer and the job (project) the work belongs to.
- Create the contract on that job and enter its schedule of values and retainage rate.
- Confirm your chart of accounts includes a retainage receivable account (the default chart does).
How to
Create a progress invoice
- 1Open the job, then its contract, and choose Progress billing.
- 2For each schedule line, enter this period’s percent complete or amount. KontoCore shows scheduled value, billed to date, this period, and balance to finish.
- 3Review the retainage withheld on each line and the net amount due.
- 4Save as draft to review, then post the invoice.
What happens in your books
Posting moves the current amount into accounts receivable and the withheld portion into retainage receivable; revenue is recognized for the full billed amount. Billing a line beyond its scheduled value is blocked rather than silently allowed.
| Account | Debit | Credit |
|---|---|---|
| Accounts receivable | 9,000.00 | |
| Retainage receivable | 1,000.00 | |
| Contract revenue | 10,000.00 |
Common mistakes
- Creating a plain invoice for contract work — it won’t update billed-to-date on the schedule.
- Editing the schedule of values after billing instead of recording a change order.
- Recording customer retainage payments as general income instead of applying them to the retainage invoice.
Troubleshooting
Line can’t be billed
The amount would exceed the line’s remaining balance. Check billed to date, or add a change order if the scope grew.
Retainage looks wrong
Confirm the contract’s retainage rate and whether any line uses a different rate; then void and re-create the draft.
Related articles
Was this helpful?