Solve NetSuite VAT / GST Exclusive Pricing Challenges

This article is relevant and you are using NetSuite for global trade and need the ability to handle Value Added Tax (VAT) or Goods and Services Tax (GST) treatment.


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:

  1. 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.
  2. 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!
  3. 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.

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 setup a conversation.

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

| Category: Accounting, NetSuite | 4 Comments


  1. Francesco
    Posted April 16, 2018 at 5:41 am | Permalink

    Hi Marty, we’re currently developing a workaround for VAT inclusive pricing in SCIS/SCA/ERP. We’re setting the unit price as “gross price” (VAT included) for EU countries and “net price” (tax excluded) for US, then we play around with the standard fields to get the correct amount calculated. Using Avalara’s “TAX INCLUDED” transaction body field we noticed an error with custom discounts in “amount” format (not percentage). The tax is calculated but included twice. It’s a NetSuite issue I think. Did you face it too?



  2. Posted April 22, 2018 at 7:52 am | Permalink

    Hello Francesco,

    Speaking with one of our my consultants, we don’t recall having any such problem, but that could be because we always used percentage discounts. Those give you a problem if you add them after saving the order but we created a workaround for that. We had to study the interaction carefully to get the desired behavior.


  3. Francesco
    Posted April 24, 2018 at 6:13 pm | Permalink

    Hi Mary, we opened a case for the issue and if you want I’ll keep you updated. The behavior is replicable in NetSuite UI. You just need to set the rate of a discount line to, for instance, -12, then change the amount to -10 and finally change the tax amount to -2. The amount is automatically reverted to the value of rate (-12), so you get a gross amount of -14.
    By the way, I think we crossed paths today @ SW18.



  4. Posted April 29, 2018 at 9:08 am | Permalink

    Thank you Francesco. I am enthusiastic about how SuiteTax will help us in our tax implementations.

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>