Marty Zigman Marty Zigman
Prolecto Labs Accelerator Templates

Take Control: A Simplified Approach to NetSuite Revenue Recognition and Cost Amortization

Accounting NetSuite



This article is relevant if you are using NetSuite and would like to understand an alternative approach to produce revenue recognition and cost amortization under GAAP Accounting ASC 606 or otherwise.

Background

The general approach to recognize revenue in NetSuite is to couple the invoice event to the item fulfillment (shipment) event when property rights have transferred to the customer.  NetSuite does a great job in this manner as the application has a very strong distribution/trade industry application architecture. When our clients have this simple model, we automate the shipment event to the invoice event by providing tools.  See related article, Best Practices for Automating NetSuite Invoice Generation

However, the world is not that simple.  Indeed, as we see more subscription-based business models, the billing event may not at all represent the revenue earned event. For project-based organizations that have lengthy service engagements, the revenue event is likely not tightly coupled to the agreed-upon billing terms.  It’s sometimes better to think of these billing event situations as a “request for monies”… In these cases, the request for monies may simultaneously produce a deferred revenue liability and a receivable at the same time  — yet no revenue.

NetSuite’s Advanced Revenue Management Module

My firm has been working with NetSuite since 2008. After 10+ years helping clients adopt the NetSuite platform, I have implemented NetSuite’s version one and version two Revenue Recognition systems designed for companies that have billing events that are independent of the revenue earned event.  In my assessment, the latest revenue recognition system (Advanced Revenue Management or ARM) has been a welcome upgrade to the earlier version.

While I won’t go into detail about NetSuite’s Advanced Revenue Management Module, it’s very important to understand the module’s intent as you determine the proper configuration for the business case. I suggest all business use cases and assumptions be modeled, configured, and tested to confirm that you get the desired behavior and accounting.  In some respects, the module is demanding to work with because it is flexible to solve for complex revenue recognition situations across the many different ways that NetSuite can be used.

The Situation for Project-Based Organizations

In a recent client request to lead in the re-implementation of the Service Resources Planning (SRP or aka Advanced Projects) subsystem, the need for a NetSuite Sales Order became a superfluous record structure — instead, working only with Project records provided all the needed planning information to manage the project billing and resource coordination. The simplification to turn off sales orders made much sense for the client — yet, without the sales order in play, the Advanced Revenue Recognition Module did not quite have the right revenue recognition algorithm required.

Taking Control over Revenue Recognition and Cost Amortization

In many business models, the mechanism to determine when revenue is earned can be assessed through various business events which may be naturally expressed in transactions or other records. Thus, it is possible to calculate what revenue should be by using built-in tools, such as a saved search. For example, our client had two good internal practices that made measuring earned and forecasted revenue easy:

  1. Forecasted Revenue: by using a staffing plan with named resources over the project time horizon, a curve can be plotted to anticipate how many services will be delivered which will approximate how revenue will be earned in the future.
  2. Earned Revenue: monthly, project managers will make an assessment of the project’s percent complete — this recurring assessment was very meaningful despite how much actual labor has or had so far been put into the project effort.  This assessment is then recorded in NetSuite’s built-in Project Percent Complete Override feature.

In addition, the anticipated total project cost, presented as a project budget, was also known and managed in an ongoing fashion.  Hence, with all these factors in hand, it becomes straightforward to calculate the following:

  1. Assess Total Revenue Earned to Date: by using the project budget and the percent complete to date, we can determine the total revenue that should be recognized.
  2. Assess Previous Revenue Earned To Date: Using linkages to the general ledger, we can determine the total amount of revenue that has already been recognized.
  3. Assess Current Period Revenue: We can calculate current period revenue by comparing revenue that has already been recorded as earned against the total revenue that should be earned. The amount may be positive or negative and we can deal with this as more revenue was earned or too much revenue was recognized.

Introducing a Custom NetSuite Revenue Recognition Transaction

Many readers may note that I have a dislike over the use of journal entries when there is a recurring anticipated business operation or pattern. I favor distinct transaction types as these can be used to capture all kinds of extra attributes and it becomes much easier to close the books and explain the financial statements with transaction types that share the same internal practice.  Hence, recording revenue is a recurring practice.

By using the power of the NetSuite business platform to create a custom NetSuite Revenue Recognition Transaction, we can produce a record status indicator to help drive reporting:

  1. Status Forecasted: we can create revenue recognition transaction records for future periods but which have no effect on the general ledger.
  2. Status Earned (Unapproved): we can calculate this period’s earned portion of revenue but mark it unapproved to give a responsible actor the ability to review revenue before it impacts the general ledger.
  3. Status Earned (Approved): when the responsible actor is satisfied, the record status can change to approved and post to the general ledger. NetSuite’s role-based permissions can be used to limit which people can post to the general ledger.

Using these simple record structures, we can shape the scope of how we want to record revenue. In our client’s case, they wished to have each custom Revenue Recognition Transaction be associated with a Project record. That way, in month-end work, they could quickly mark transactions as approved while they leave a few others unapproved that needed answers to questions.  Yet, because we are in control, we have the full capacity over the revenue scope captured on the record.  Should a different model make more sense, we can shape it.

Profile Driven Revenue Recognition and Cost Amortization

Once you begin to see that you can take control over how you want to record revenue, you also have the same control over cost amortization. Typically, cost is amortized over the manner for which revenue is recognized to support the matching principle.  By creating a profile record to hold all the parameters needed to drive revenue or costs, we can produce configurability in the process.

If Saved Search “just can’t quite reach” the values needed, we can bind a SuiteScript into the process to do whatever we need.

Drive the Revenue Recognition Algorithm

To make the algorithm do the calculations, we can use many approaches. For this client, we did the following:

  1. On-Demand: on the project record, we provide a “Calculate Revenue” button which will then run the algorithm which will create or update forecasted and earned (unapproved) custom revenue record structures.
  2. Bulk Processing: we created a custom list that allows the targeting of projects that are due for calculation. Because we understand scalable processing models especially when needing to process large numbers of NetSuite records, we have a number of utilities that help us process the batch in a queue to provide monitoring for ongoing application health.

Forecasted and Earned Revenue Reporting

The entire set of NetSuite reporting tools becomes available to us to produce reports, dashboards, and other alerts all shaped by the business and policy requirements.

Reclassing Liabilities and Assets

Once all your revenue recognition assessments and posting work for the period are complete, there is one more step to perform.  There may be times when your billing is behind what you have earned.  In this case, you have an “Unbilled Receivable” asset.  Thus, we created a tool that detects projects that are in a situation where the reclass from deferred revenue is needed.  By creating a reversing style journal entry, we can effectively help clean up the presentation on the balance sheet.

Get the Code to Manager Your NetSuite Revenue Recognition and Cost Amortization

While I presented the situation for a client using projects, we had another client that wished to use the Purchase Order record to help them measure cost amortization.  The good news is that the general pattern proved that our model sufficiently allowed us to capture the rules and generate the records as needed.  We easily can see how some organizations may be using values based on Departments, Classes or Item Categories to capture their revenue events.  The bundle is referenced here and is available at no license charge to our clients.

If you found this article valuable, feel free to sign up for notifications when new articles are published.  If you would like to take control of your revenue recognition and cost amortization, let’s have a conversation.

 

 

 

Marty Zigman

Holding all three official certifications, Marty is regarded as the top NetSuite expert and leads a team of senior professionals at Prolecto Resources, Inc. He is a former Deloitte & Touche CPA and has held CTO roles. For over 30 years, Marty has produced leadership in ERP, CRM and eCommerce business systems. Contact Marty to set up a conversation.

More Posts - Website - Twitter - Facebook - LinkedIn - YouTube

About Marty Zigman

Marty Zigman

Holding all three official certifications, Marty is regarded as the top NetSuite expert and leads a team of senior professionals at Prolecto Resources, Inc. He is a former Deloitte & Touche CPA and has held CTO roles. For over 30 years, Marty has produced leadership in ERP, CRM and eCommerce business systems. Contact Marty to set up a conversation.

Biography • Website • X (Twitter) • Facebook • LinkedIn • YouTube

Leave a Reply

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