Retentions
On most construction and contracting jobs, the client holds back a percentage of each progress payment, called the retention, until the work is complete and any defects have been fixed. The retention is then released in one or more stages, often half at practical completion and the rest at the end of the defects liability period.
Standard Business Central does not handle retentions. You would have to add a negative line to every invoice by hand and track the amounts owed in a spreadsheet.
Why you need it
- Retention is real money that is easy to lose track of. It can be a large share of a project's margin, and it sits unclaimed for months or years after the project finishes. If nobody claims it, it is lost.
- Contracts often specify a sliding scale. Getting the calculation right by hand on every claim is slow and error-prone.
- You need a clear balance at any time. You should be able to answer "how much retention is Customer X holding, and how much of it can we claim now?" without reconciling spreadsheets.
What you get
- A retention line added automatically to each project invoice, at a flat rate or on a tiered scale set per project or per task.
- A retention ledger that records every retention held, claimed, transferred, and reversed, by project, task, and customer.
- Retention totals on the project card and the customer card, with drill-down to the entries.
- A retention claim invoice created in one step for a percentage of the retention held.
- Manual retention entries for retention that wasn't deducted on a project invoice.
- Retention transfer when a project's bill-to customer changes.
- Automatic correction of retention entries when an invoice is cancelled or corrected, or a transaction is reversed.
How retention is accounted for
The retention is added to the sales invoice as a negative G/L account line that posts to the Retention G/L Account on the project posting group. As a result:
- The customer is invoiced the net amount (the claim less retention).
- The retention held builds up in the retention G/L account, usually a balance sheet account such as Retentions Receivable.
- When you claim the retention back, the claim invoice posts a positive line to the same account, which moves the balance into trade receivables.
GST on retention lines follows the posting setup of the retention G/L account.
Setting up
- On Project Posting Groups, fill in Retention G/L Account.
- On Projects Setup, in the Advanced Project Management FastTab:
- Turn on Use Retention Invoice if you'll use flat-rate retentions.
- Optionally, fill in Retention Description to control the text on retention lines.
- Fill in Retention Journal Template Name and Retention Journal Batch Name if you'll process manual retentions or transfers. Use a batch reserved for this purpose.
- On each project that has retention, choose a flat or tiered calculation (see below), and on the Retention Details FastTab fill in the Retention Claim % when you're ready to claim.
See Setting up Advanced Project Management for more on each field.
Choosing flat or tiered retention
Flat rate
Use a flat rate when the contract holds the same percentage on every claim.
- On the project card, Posting FastTab, enter the Retention %.
- Make sure Use Retention Invoice is turned on in Projects Setup.
Each invoice created from the project gets one retention line equal to Retention % × the total of the project lines on the invoice (excluding GST).
Tiered (retention calculation)
Use a tiered calculation when the rate changes as the contract value builds up, or when different tasks carry different rates.
- On the project card, Posting FastTab, turn on Use Retention Calculation. The Retention % field becomes read-only.
- Choose the Retention Calculation action.
- Enter one line for each band:
| Field | Description |
|---|---|
| Type | Project applies the bands to the whole project. Project Task applies them to a single task. You can't mix the two types on one project. |
| Project Task No. | The task the band applies to, when Type is Project Task. |
| Retention % | The rate for this band. Bands at 0% are ignored. |
| Start Value / End Value | The range of cumulative invoiced value the band covers. |
How the bands are applied
The bands apply to the total invoiced to date on the project (or on the task, for task-level bands), which is posted invoices less posted credit memos, excluding retention lines. Each new invoice continues from where the previous invoices stopped. If an invoice crosses from one band into the next, you get one retention line for each band, and each line shows its Retention % and Retention Base Amount.
Example. The bands are 5% from 0 to 10,000 and 3% from 10,000.01 to 999,999,999. So far 8,000 has been invoiced, and the new invoice is for 5,000.
| Band | Portion of this invoice | Retention |
|---|---|---|
| 5% band (8,000 → 10,000) | 2,000 | 100 |
| 3% band (10,000 → 13,000) | 3,000 | 90 |
| Total | 5,000 | 190 |
Rules for entering bands
- Enter bands in ascending order. Each band's Start Value must be higher than the previous band's End Value, for example 0–10,000 followed by 10,000.01–100,000. Overlapping bands are rejected.
- Give the last band an End Value higher than the project could ever reach, for example 999,999,999. Invoicing beyond the last band isn't supported. The Progress Claim report prints the last band as "thereafter".
- With task-level bands, every task you invoice needs its own bands.
Retention on the project card
The Retention Details FastTab shows the retention position for the project:
| Field | Description |
|---|---|
| Retention Claim % | The percentage of total retention held that the next claim invoice will claim. |
| Total Retentions | All retention deducted on the project to date. Drill down to see the entries. |
| Retentions Claimed | Retention already claimed back. Drill down to see the claim entries. |
| Retention Claimed % | Retentions claimed as a percentage of total retentions. |
| Rem. Retention Claimable | Retention still held. Drill down to see the open entries. |
| Practical Completion Date | The project's practical completion date. It is stamped on every new retention entry, and if you change it, you're asked whether to update the existing entries too. The date is for reference and reporting. It doesn't trigger a claim. |
On the project card and the project list, under History, Retention Ledger Entries shows the full ledger for the project, and Retention Claim Invoices lists the claim invoices and credit memos posted for it.
Retention on the customer
The customer card and the customer list show Retention Remaining Amount (LCY), which is the retention the customer is holding across all projects. Drill down to see the open entries. You can also record a free-text Retention Comment on the customer card, for example contact details for chasing retention.
Claiming retention back
When a retention falls due:
- On the project card, Retention Details FastTab, enter the Retention Claim %.
- Choose Create Retention Claim Invoice and confirm.
- The app creates a sales invoice for the project's bill-to customer, dated today, with one line to the retention G/L account. Review the invoice and post it.
When the invoice is posted, the claim is applied against the project's open retention entries, and the project and customer balances update.
It is not a percentage of the remaining balance. To release half at practical completion and the rest at the end of the defects period, create two claims at 50% each. The app won't let the claims on a project add up to more than 100%.
The Progress Claim report shows "50% Retention Claim" or "Final Retention Claim" when the claims to date reach those levels.
Manual retention
Use a manual retention to record retention that wasn't deducted on a project invoice, for example when a customer deducts retention from a payment on an invoice that had no retention line.
- On the project card, choose Process Manual Retention. The project must have Use Retention Calculation turned on or a Retention % filled in.
- Fill in the dialog:
| Field | Description |
|---|---|
| Retention % | Taken from the project, for reference. |
| Customer No. | Defaults to the project's bill-to customer. You can choose any bill-to customer used on the project's tasks. |
| Retentions Posted | The retention posted on the project to date, for reference. |
| Retention Amount to Post (Incl. GST) | The amount of retention to record. |
| Document No. / Posting Date | Used for the posted entries. |
| Comments | Saved on the retention ledger entry. |
- Choose OK and confirm.
The app posts a journal line that moves the amount from the customer's balance to the retention G/L account, and it creates a matching retention ledger entry.
The manual retention is posted through the batch set in Retention Journal Batch Name in Projects Setup. Any lines already in that batch are deleted first, so don't share it with other journal work.
Transferring retention to another customer
If a project's bill-to customer changes, for example because the contract is assigned to a new entity, the retention already held still sits with the old customer. To move it:
- Change the Bill-to Customer No. on the project.
- Open Retention Ledger Entries and select the entries to move.
- Choose Transfer Retention Entry and confirm.
For each selected entry, the app moves the remaining amount from the entry's customer to the project's current bill-to customer. It posts with today's date and the original document number plus -R. You can't transfer an entry that already belongs to the project's bill-to customer.
Corrections and reversals
The retention ledger stays in step with Business Central's standard correction tools:
- Cancel or Correct on a posted sales invoice creates corrective retention entries. Any claim that had been applied to the original retention is unwound.
- Reverse Transaction on a posted retention journal entry reverses the matching retention entries. They are marked Reversed and linked by entry number.
Find entries (Navigate) on a document includes its Retention Ledger Entries and Retention Detailed Ledger Entries.
Retention ledger reference
Retention Ledger Entries has one line for each retention held, claimed, or transferred. The main fields are Document Type/No., Claim Entry, Customer No., Project No., Project Task No., Retention %, Practical Completion Date, Retention Comment, Original Amount, and Remaining Amount.
Actions:
- Find entries opens Navigate for the entry's document.
- Comment adds or edits the retention comment on the entry.
- Transfer Retention Entry is described above.
Retention Detailed Ledger Entries has the individual movements (Initial Entry and Application) that make up each entry's remaining amount. Use it when you need to trace exactly how a balance was reached.