During a recent NetSuite implementation, we were challenged with a global taxation concern. Our client has a great product. They are based in the United States and sell worldwide through both direct-to-consumer and wholesale distribution. The client selected the Avalara tax engine both for their third-party eCommerce platform (SiteFinity, for which we integrated to NetSuite) and to drive NetSuite taxation (note, while not the subject of this article, the best practice for systems that integrate to NetSuite is to share the same tax engine).
The key advantages of using a tax engine is the work the provider does to keep up on the always-changing tax rules and rates based on different taxing jurisdictions. Â For the purposes of NetSuite, the key concern is determine the tax rate/price based on what product or service is being sold which is a factor based on the location that it is being shipped from and to. The general United States practice is to advertise customer prices before tax. In most of the rest of the world, the practice is to advertise customer prices after tax.
Best NetSuite Practice for Global Customer Price Management
The best practice is to record your customer prices as your customers are accustomed to see them. As simple as this sounds, I have seen many US customers trip up in this realm when they start to sell goods internationally. The usual first thing that a NetSuite customer does is activate the foreign currency feature as they begin to sell abroad. They know they have to handle VAT / GST tax. So they start to fill out the NetSuite foreign currency based price tables before tax as they want their invoices and communications to extend the way they do in the United States.
It is understandable to think in this manner. NetSuite organizes its order line transactions with Quantity, Rate and Amount (automatically calculated as Quantity times Rate but manually can be overridden). There is also a Tax column to hold tax amounts. This orientation, offered by NetSuite, is intuitive to an American listener.
Yet, when working with VAT or GST Tax systems, we have to back into the price of the good when we keep the price tables as the customer advertised or list prices. This is a different orientation; yet it can be managed.
NetSuite Tax Engine Treatment on Transactions
In a VAT / GST situation, the Avalara NetSuite add-in will take the Amount (defaulted as Quantity multiplied by Rate), look up the respective Tax on their systems, and then modify the Rate by using a custom price level. It effectively backs into the the true product price by overriding your Rate. Then, it will populate the Tax amount. The transaction effect is to thus to have the Amount plus the Tax equal the amount advertised to customer. Â Somewhat clever and effective (although a custom-price level may violate a management policy; matter for another article).
Challenging VAT Exclusive Treatment
We now face a challenge that we had to overcome for our client. Our client’s price tables are VAT Inclusive for citizens outside the United States; meaning, they are expressed in terms of a price that already includes the tax built-in. Yet, there are situations when the client sells goods to organizations that are VAT Exclusive; meaning, the customer does not have to pay VAT tax. If you fill-in the Tax Registration field on the customer record, the Tax engine will simply not provide a tax rate as it appears the customer is Tax Exempt. We now have a challenge. What is the amount we need to take away from our VAT Inclusive price to get to a VAT Exclusive price?
Naturally, our first instinct was to run to Avalara and ask for help. They had no offer. We were initially stuck. Fortunately, for the client’s implementation GoLive, there were relatively few customer in this situation and the short term workaround was to add a custom discount to remove the built-in tax amount. Yet, this was not scalable and certainly unacceptable for the long term.
Solving the NetSuite VAT Exclusive Tax Challenge
Given we are experts in the NetSuite platform, we knew we had many tools at our disposal. We understood that Avalara knew how to look up the correct tax. What we needed to do is to have Avalara lookup the tax price for us so we could get the benefit of their service but stop them from doing more. Yet, we didn’t want to break anything about NetSuite or Avalara’s built-in and supported integration.
Here is what we did:
- Customer Tax Exempt Registration Field: First, we created a new field on the customer record to hold the tax exempt registration. Our goal was to move the data from the built-in tax registration field to our new field. By doing so, Avalara would provide the tax as it would not think the customer is tax exempt.
- Zero out the Tax: Second, during a sales order server-side commit, Avalara will modify the rate and drop in the tax as mentioned earlier. At that point, we have the right VAT Exclusive rate. Before the record is committed to the NetSuite database, we zero out the tax that Avalara recorded. Solved!
- Set Transaction Flags: Finally, we set some internal transaction flags to indicate to Avalara to not tax further; there are a bit more details to this but this is the essence of the work.
Make NetSuite Do What You Want
One of the things I love about the NetSuite platform is the ability to get control over a situation; not that we should take control over every situation; but that we can. In this case, we leveraged the tools to get the VAT / GST Inclusive information we needed even when Avalara offered they could not help; What’s great about NetSuite is that we could bend the system to meet our client’s requirements. If you feel that it is time for you to get more out of your NetSuite investment, let’s have a conversation.