Handling Contract Retainage in NetSuite

NetSuite is a powerful ERP system but above everything it is a business platform that can easily be adjusted to meet any business need. In this article, we will focus our attention on Contract Retainage, a concept common but not limited to Construction Industry. We will demonstrate how NetSuite can handle A/R retainage.

contract retainage

What is Retainage?

A common occurrence in construction industry is the practice of retention of funds, where a percentage of a total value of the project is held back from payment until the customer is satisfied with the project completion. A common retention amount could equal to 5 – 10 percent of the contract value or the amount invoiced, but this could vary. The basic premise here is that the retention provides a customer with some security against any defects on the project.

How does it work?

In a normal scenario, when a contractor earns revenue under an accrual method like CCM (Completed Contract Method) or PCM (Percentage of Completion Method), they will issue an invoice and record this amount as an account receivable (A/R) until the payment is made and the funds are collected. Unfortunately, this method does not apply to retainage.

According to revenue standards, the contractor doesn’t have the right to the retainage portion of an invoice. Therefore, in most cases it cannot be treated as a receivable amount until the contract obligations are fulfilled. Thus, the contractors will keep this amount separately on their books (typically in a separate asset account). Note that some customers may retain these funds for over one year, consequently this may take a serious bite out of contractor’s already narrow profit margins. Therefore, it is important to keep tight control and tracking over the retained assets.

Handling in NetSuite

For practical purposes we will assume that the goal here is to separate regular A/R from Retainage A/R. Also, we will not issue the Retainage Invoice until the date when contractor’s obligations are met, and the customer is willing to release the retained funds.

When the Contractor is generating a Sales Order or an Invoice, it is helpful to stipulate the Retention fees that the customer will retain and not pay until the inspections are completed and the contract is finalized.

Please note that we are not using any code in the example below and are demonstrating out of the box functionality and basic NetSuite configuration.

  • We create a non-posting discount item in NetSuite. We can set the % of retainage directly on the item record. Note, the non-posting discount will help us reduce the A/R by the retention percentage.

non-posting discount item

  • On the Invoice issued to the customer we will add the subtotal line and underneath we will apply the retention item.

Invoice issued to the customer

  • As seen in the image above, the system will reduce the Invoice amount by the ‘Retention’ percentage on the retention line. The user will set the date when the retainage is to be Invoiced, by which time all contractual obligations should be met (Retainage Invoice Date is a custom line field).

Retention percentage on the retention line

  • This Retainage Invoice Date can be used to create a Saved Search that we can quickly turn into a reminder.

Retainage Invoice Date

  • This helps the A/R team stay on top of any retained funds and generated Retainage Invoices when needed.

generated Retainage Invoices

  • Note, we created a simple workflow that will show the [Invoice Retainage] button only if the retainage was not invoiced and the ‘Retainage Invoice Date’ is the past.

Invoice Retainage

  • When you click on the button, a new Invoice transaction will pop-up.

new Invoice transaction

  • Notice, all fields (highlighted fields) linking to the original customer and the original invoice are pre-populated. The only portion that must be populated by the user is the Items tab.
  • The user will add the ‘Contract Retainage’ item and the amount that equals to the funds retained on the original Invoice.
  • After saving the Retainage Invoice, the user will go to the original invoice and make sure that the retention line is flagged as ‘Retainage Invoiced’.

Retainage Invoiced

Retainage Invoiced 2

  • After this change on the original Invoice, the reminder will be updated automatically.

original Invoice

  • Note, the last two steps can be automated to avoid any potential errors.

Accounting Considerations

In the example that we walked you through above, we configured the ‘Contract Retainage’ item (which was added to the Retainage Invoice) to produce the following GL impact:

GL Impact Accounting Considerations

Depending on the company’s accounting policies we can do the following:

  1. Use a separate A/R account to track ‘Retainage’ aging.
  2. For each accounting period generate a reversing Journal Entry that will move our total retained funds into a special (other current asset) account. The reversal will ensure that whatever retainage was invoiced no longer appears in our special asset account. This practice is useful when company wants to show retained funds on their books especially if the contracts are executed over a prolonged period of time.

Note, a simple report (similar to the reminder shown above) can be created to show the amount that must be booked via a Journal Entry.

Final Thoughts

In conclusion, we demonstrated a semi-automated way of handling retainage in NetSuite. This process can be further enhanced and automated if your organization has other unique needs or large volume of transactions. In any case, we hope that we gave you some direction and ideas on how to deal with this common occurrence in the construction realm.

Also, don’t hesitate to reach out to us if you have any questions or suggestions on an alternative approach to retainage.

Leave a Reply

Your email address will not be published. Required fields are marked *