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.
Background
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:
- 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.
- 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:
- From Account (mandatory): During posting, look for line amounts from this account. The sum of these amounts you want move away from.
- 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.
- 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:
- 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.
- 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.
- 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.
Marty,
Do you know if a mass-update feature that would allow a bulk/batch reclassify of transactions (such as checks) from one expense account to another? That is a very useful feature Quick Books online has and I hope the same can be achieved via Netsuite….
Hello Author,
We have a bunch of tools in our Utilities library free of charge for customers. One of which is the capacity to bulk-update where NetSuite’s mass-update does not have reach. Your challenge can be attacked in a number of ways. We would have to consider if the books are going to be closed; If your books are open, we could walk transactions and specifically change lines that meet specific criteria. If this is a one-time concern, we probably would use this technology to build a targetted plug-in to solve your issue:
https://blog.prolecto.com/2020/04/04/fully-automate-complex-netsuite-data-imports/
If this was an-ongoing concern, we would adapt our tool to indicate source and target account.
Marty
Marty