Learn How To Automate NetSuite Accounting Reclass Entry Work

This article is relevant if you are using NetSuite and you desire to have general ledger account postings route differently from the standard posting routine.


NetSuite’ primary way to post to the general ledger from transactions is to use to use line information. Most of the time, transaction line information comes from item definitions. Typically,¬†item definition has reference to sales accounts (e.g, for the credits on invoices) and cost of goods sold accounts (e.g., for the debits on an item fulfillment).

Recently, a couple of our clients asked us the same question:

“For our sample orders, I want to route the cost of the goods to samples expense. However, NetSuite is routing it to Cost of Goods Sold. How do I change that?”

To solve the NetSuite Samples Orders situation, I usually open the conversation suggesting this best practice:

  1. Revenue: On the Sales Order, add a 100% off discount called “Samples” and route it as a debit to Sales. ¬†This will hold your gross sales but then you track how much revenue you give up using samples to promote your goods.
  2. Costs: For the costs, NetSuite wants¬†to debit Cost of Goods sold during the shipped item fulfillment event. To change this behavior, we need to use NetSuite’s SuiteGL technology to move the amount to Samples expense.

This general conversation often leads into a richer discussion concerning the practice and authorization for marking orders as type “Samples”¬†and exploring if the customer is responsible for sending the goods back in some period of time. ¬†Ultimately, we listen and invent ways to facilitate the entire transaction concern.

Using NetSuite SuiteGL to Drive Transactional Reclass Accounting

In my article, NetSuite Up Close: Custom GL Lines Plug-in to Reclass General Ledger Postings, I illustrate how to use SuiteGL plug-in SuiteScript to drive the changes needed.   SuiteGL is great if you are a software developer but usually outside the reach if you are a general business user.  Since the time of that article, and after a number of different client requests for general ledger reclass capacities, we bundled up the algorithms so that we can lower the implementation effort.

Introducing GL Reclass Types

To make the Prolecto GL Reclass framework flexible, we defined a custom record structure called a GL Reclass Type. This record structure (click image) allows the Finance Department to define a series of general ledger accounts as follows:

  1. From Account (mandatory): During posting, look for line amounts from this account. The sum of these amounts you want move away from.
  2. To Account (mandatory): Move the amounts from the “From” account to this account. In our example, if we had a debit in Cost of Goods Sold, we want to debit Samples Expense instead. ¬†The credit account depends on the value of the next optional setting.
  3. From Account¬†Substituted¬†(optional): if defined, instead of offsetting the “To Account” with the “From Account”, use this account instead. ¬†To continue this example, if this substituted account is not defined, we credit Cost of Goods Sold which effectively produces a reclass entry. However, assuming we indicated that we want to¬†use a substituted “COGS-Samples” account instead, we would credit “COGS-Samples” which effectively acts as contra account to Cost of Goods Sold noted in the “From Account”. ¬†Click image for clarification.

Deployment Against Targeted Transactions

The plug-in technology effectively allows us to trigger this action on any NetSuite transaction type. In our use case testing, we discovered that SuiteGL sometimes throws errors when trying to reclass against control accounts. For example, during a customer deposit posting, the system wants to debit cash and credit customer deposit liability. However, if we try to reclass the customer deposits account, it complains. Here the Account Substituted save us because we don’t touch the control account.

Criteria to Drive Automated GL Reclassing

The key to driving this automation is to determine if the transaction qualifies for reclass work. Thus, we created a custom transaction body field that allows us to hold a pointer to a specific GL Reclass Type record. Consequently, we can use a number of different approaches to ensure that our transaction gets the right reclass reference:

  1. Sourcing: we defaulted the system to source from an entity reference.  Think about always changing the accounting if an item receipt transaction comes from a particular supplier.  Yet, this sourcing rule may not make sense in your situation.
  2. Workflows: we can evaluate criteria on the transaction and then set the right GL Reclass Type during the save operation. Easy for NetSuite Administrators to setup.
  3. SuiteScript: during the BeforeSubmit event or using other techniques, set the GL Reclass Type. Convenient for simple updates to scripting work which may already be in place.

Get the NetSuite GL Reclass Bundle

Like all the software we create in our firm, we offer the bundle without charge to NetSuite customers. We assist our clients in the setup and advise them on the best practices for implementation. ¬†Since 2008, this bundle reflects our team’s capacity to be leaders in both accounting and software development on the NetSuite ERP system. If you would like to solve your NetSuite SuiteGL Reclass situation, let’s have a conversation.

Be Sociable, Share!

Marty Zigman

Holding all three official certifications, Marty is Southern California's 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 25 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 - Google Plus - YouTube

| Category: Accounting, NetSuite | Leave a comment

Post a Comment

Your email is never published nor shared. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>