How-to: Use NetSuite's updated "Suitetax" feature

Monte Barnard
Monte Barnard Expensify Team Posts: 4 Expensify Team
edited April 9 in How-to Docs

The new SuiteTax feature in NetSuite replaces the existing "Legacy" tax functionality. As it stands the two features are not built to coexist in a single environment. NetSuite developed an automated migration process that will run on all transactions containing legacy tax data when SuiteTax is enabled in an account. (Note – there is no GL or financial impact to the migration process). When used with Expensify, SuiteTax offers enhancements for International customers. SuiteTax can work side by side with other tax engines within the same NetSuite account. Businesses are no longer forced to choose between NetSuite tax or a third party like Expensify; they can now determine per nexus which tax engine will be used. This ensures that customers can pull in a specialized solution where needed.

Basically, SuiteTax takes care of the tax accounts for us. So we no longer need to sync these with your instance of NetSuite. You'll no longer need to select which Tax accounts taxes should post to when exporting to NetSuite, woohoo! Our Integration with SuiteTax is still in Beta but is ready to rock n roll for our users!

Note: As we can't yet add SuiteTax to our bundle accounts due to that removing some legacy tax fields we still want to give our bundle access to, you'll want to make sure to manually add these permissions to the Expensify Integration role in NetSuite.

Importing Tax Codes

SuiteTax will still use the traditional "Tax Code" object in NetSuite, which is used to represent singular rates for both purchase and sales tax. 

We will import Tax Codes 1-to-1 as Tax Rates into Expensify. Tax Codes will be filtered to import based on the following criteria:

  1. We'll only import Tax Codes from the Country of the subsidiary you're syncing with your policy. This ensures we don't get any nexus conflicts on a single report
  2. We'll only import Tax Codes that can be applied to Purchases, as Expensify only deals with Purchases, not Sales).
  3. We will not import any Tax Codes that have a negative tax rate, as Negative rates are not supported in Expensify.

We will not import Tax Codes for US subsidiaries. According to NetSuite's own documentation, "the current version of SuiteTax Engine does not support taxes on US purchases."

We'll import three fields from NetSuite to display in Expensify:

  1. The Name of the Tax Code ("NL_ZR") -> First Half of "Name" in Expensify
  2. The Description of the Tax Code ("Zero Rate for Netherlands") -> Second Half of "Name" in Expensify
  3. The Rate of the Tax Code ("0%") -> "Value" in Expensify

Note that:

  1. The "Reverse Charge for Sales for NETHERLANDS" rate does not get imported, since it can only be applied to Sales transactions.
  2. Since this was just a mock-up, the field inputs show as editable in the screenshot above. These would be disabled in practice.

Tax Groups

Before, with Legacy Tax, we opted to only import "Tax Groups." We did this for two reasons:

  1. At the time, "SalesTaxItems" (Tax Codes in NetSuite API-speak) were not retrievable.
  2. Tax Groups can hold one or more Tax Codes, which make it a better format for Expensify. This is because Tax Groups could represent combinations of Provincial/Federal taxes as a single rate (commonly done in Canada), which made it easier to map to an Expensify Tax Rate object (which can only support one percentage).
  3. However, Tax Groups get completely replaced in SuiteTax. 

Coding on transactions: Expense Reports and Vendor Bills

Tax Rates will be coded on Expensify expenses like they are now. Then, once they're exported to NetSuite, they'll appear attached to each line item in the "Tax Details" section of the Expense Report or Vendor Bill.

Under SuiteTax, taxes will show up as their own lines. 

Coding on transactions: Journal Entries

Journal Entries are also different in that there is no "Tax Details" section. Instead, information about the tax is input directly onto the journal line.

The Credit Line applying the Journal to the Account Payable account will not contain any tax information. Here's an example set of lines from NetSuite:

Mileage Expenses

When using SuiteTax, mileage expenses are required to pass a tax amount to NetSuite to export successfully. If you are seeing an error, please enable Track Tax under Settings > Policies > Group [Policy Name] > Expenses > Distance.

UI Additions & Changes

We’ve gone ahead and removed the tax account selectors from the NetSuite configuration for users with SuiteTax. Here’s an example of the changes.

Legacy Tax Users

If you’re still on Legacy Tax there’s no need to worry. Right now, when your policy syncs we’ll check to see if you're using SuiteTax vs. Legacy Tax. It's not possible to have both Legacy and SuiteTax on at the same time in an account, If you're still using legacy tax, we will still support the integration as we do now. We will not remove any functionality around legacy tax.