NetSuite

NetSuite Sales Tax Integration Guide

Platform
NetSuite
Versions
2018.2+
Extension
SuiteApp.com
Last Updated
August 8, 2019

We put together this integration guide for NetSuite users looking to better understand TaxJar’s integration for sales tax calculations, reporting, and filing.

You’ll learn how TaxJar provides calculations directly through SuiteTax and syncs invoices, cash sales, and credit memos for reporting / filing. Along the way, we’ll configure your NetSuite account to collect sales tax where you have nexus, handle product / customer exemptions, and much more. For a primer on everything sales tax, read our Sales Tax 101 guides before getting started.

TaxJar for NetSuite requires a TaxJar Plus subscription. To sign up for Plus or upgrade your existing account please contact our sales team.

SuiteTax Requirement

To use TaxJar’s integration with NetSuite, you’ll need to enable SuiteTax for your NetSuite account. Keep in mind that SuiteTax is currently in beta with known limitations. Please review these limitations before continuing. If you have any questions, contact us before continuing this guide.

Behind the scenes, SuiteTax allows TaxJar to provide rooftop-accurate calculations down to the jurisdiction-level directly inside NetSuite. It’s an easier, more accurate way to calculate sales tax compared to the old way of manually adding state or zip-based rates (known as Legacy Tax). SuiteTax lets you use different tax calculation engines for nexuses and override tax details on transactions.

The SuiteTax feature must be shared to your NetSuite account before it can be enabled. Contact your NetSuite account manager and submit a SuiteTax enablement request with the help of NetSuite Customer Support. Your SuiteTax enablement request will be reviewed by the SuiteTax approval team. If your request has been approved, the SuiteTax feature will be shared to your NetSuite account.

Before you can enable the SuiteTax feature, your account must meet the following prerequisites:

  • For existing NetSuite accounts where migration of legacy records to SuiteTax is required, a Sandbox account must be available.
  • Backup of your entire NetSuite account must be requested.

Only administrators can enable the SuiteTax feature. To enable the SuiteTax feature, go to Setup > Company > Enable Features. Check the SuiteTax - Beta box on the Tax subtab, and click Save.

Getting Started with TaxJar

After enabling SuiteTax in your NetSuite account, you can install TaxJar’s NetSuite integration via SuiteBundler under Customization > SuiteBundler > Search & Install Bundles. Search for “taxjar” and install the TaxJar SuiteBundle.

Enable SuiteTax Plugin

Once the TaxJar SuiteBundle is installed, you’ll first want to enable TaxJar as a tax calculation plugin for SuiteTax. Go to Customization > Plug-ins > Manage Plug-ins. Under Tax Calculation implementations, select the checkbox next to “TaxJar” and click Save:

TaxJar Tax Calculation Plugin Implementation for SuiteTax

Configuring TaxJar

Go to TaxJar > Setup > Configuration to connect your TaxJar Plus account. Copy and paste your TaxJar API token:

TaxJar API Token

Next you’ll want to configure your tax settings. Enable calculations and/or reporting depending on the TaxJar features you want to use. Set a default sales tax payables and use tax receivables account for calculations:

TaxJar Configuration

As TaxJar only provides sales tax calculations at this time (not use tax calculations), the payables sales tax account will be used to record the amount of sales tax you collect as a liability. If you’d like to use a different payables account for each nexus, you’ll need to edit the generated tax types under Setup > Accounting > Tax Types after performing initial calculations.

Finally, you’ll be asked to review your NetSuite nexuses and tax registrations prior to using the TaxJar integration:

TaxJar Configuration Summary

Configuring Nexuses for TaxJar

In order to calculate sales tax through SuiteTax, we’ll need to properly configure your NetSuite account to use TaxJar as the sales tax engine. Go to the TaxJar dropdown in your menu bar and select Nexuses:

TaxJar Nexus Dropdown

On the Nexuses page, set up all of the countries and regions where you need to collect sales tax. If you just migrated over from SuiteTax, you may already have existing nexuses:

NetSuite Nexuses

Make sure each subnexus has a valid nexus address:

Edit NetSuite Nexus

When making sales tax calculations, these nexuses are passed to TaxJar to determine where you have nexus. They’re also synced automatically to your TaxJar account.

Configuring Tax Registrations for TaxJar

After you’ve set up your nexuses, you’ll want to assign them to tax registrations under your business subsidiaries. Go to the TaxJar dropdown in your menu bar and select Subsidiaries:

TaxJar Subsidiaries Dropdown

Choose the subsidiary you’d like to use for TaxJar and click the Tax Registrations tab:

SuiteTax Tax Registrations

When adding a new nexus, make sure you choose TaxJar when selecting the tax engine for sales tax calculations.

Product Exemptions & Taxability

To assign a specific item in NetSuite to a TaxJar product category for exemptions, simply edit the item and click the TaxJar tab. Select a TaxJar category and save the item:

TaxJar Product Exemptions

For assigning items in bulk to a given TaxJar category, use the mass update feature under Lists > Mass Update > Mass Updates and select an item type under General Updates.

You can review all of your categorized items under TaxJar > Reports > Exempt Items.

Customer Exemptions & Taxability

To exempt a specific customer in Netsuite for calculations and reporting, edit the customer and click the TaxJar tab. Check the TaxJar Exempt checkbox and select an exemption type from the dropdown:

TaxJar Customer Exemptions

If you decide to perform a mass update on your customer records to exempt a batch of customers from sales tax, they’ll automatically enqueue and sync to TaxJar. To manually backfill customers, go to the TaxJar dropdown in your menu bar and select Backfill > Customers:

TaxJar Backfill Customers Dropdown

You can review all of your exempt customers under TaxJar > Reports > Exempt Customers.

Sales Tax Adjustments

If you need to refund sales tax on a previous order for a customer that was processed prior to exempting them, we recommend fully refunding the order and making a copy of the original order via Actions > Make Copy.

Address Validation

TaxJar provides US address validation directly inside NetSuite to ensure valid addresses are sent to our API for accurate sales tax calculations. To set up address validation, go to Customization > Forms > Address Forms. You’ll find a custom address form named “TaxJar Address Validation Form”:

TaxJar Address Validation Form

Click the “Edit” link and go to the “Country” tab to enable the form in the United States:

TaxJar Address Validation Form Country Selection

You can now validate addresses anywhere in NetSuite! Upon clicking the “Validate Address” button, we’ll automatically clean up the address and add a ZIP+4 postal code:

TaxJar Address Validation

Discount Items

Order-level discounts and line discounts should behave similar to native NetSuite behavior for both sales tax calculations and reporting / filing. Discounts added as a line item to an order will discount the preceding line item.

If you use discount items for gift card redemptions or other scenarios which may require applying the discount after calculating tax, use the “Apply After Tax” checkbox on the “TaxJar” tab when configuring a discount item:

TaxJar Apply Discounts After Tax

Sales Tax Calculations

TaxJar directly integrates with SuiteTax (Beta) and provides sales tax calculations for the following records in NetSuite:

  • Quotes
  • Opportunities
  • Sales orders
  • Invoices
  • Cash sales
  • Credit memos
  • Cash refunds
  • Return authorizations

Before making a calculation, TaxJar requires a valid shipping address and one or more line items in a given record. After providing this information, click the Preview Tax button to get a summary of sales tax organized by jurisdiction:

SuiteTax Sales Tax Summary

For US calculations, this summary may include state, city, county, and district tax. In Canada, GST / PST / QST amounts. In other countries, VAT will be listed. You’ll also notice the tax is broken out for each line item under the Tax Details tab:

SuiteTax Tax Details Tab

Once a record is processed, the underlying tax types and tax codes may be referenced in your NetSuite Tax Report under Reports > Financial > Tax Report. You can review the underlying API requests and responses under TaxJar > Reports > Logs to verify calculations.

If you save the record before previewing tax, don’t worry. TaxJar will automatically calculate sales tax after you save a record.

Import transactions using a connector via SuiteTalk / web services? SuiteTax will automatically trigger a sales tax calculation when you import a new transaction. To skip this calculation and import the existing sales tax collected, you’ll need to override the “Tax Details” tab via taxdetailsoverride.

Backup Rates

When sales tax is previewed or calculated, a request is made to our API through SuiteTax. In the unlikely event that our API is unavailable (we boast 99.99% uptime), we’ll apply a backup rate as a fallback to ensure you collect sales tax. A backup rate is an average tax rate across all postal codes in a given region or country.

After configuring the integration, we’ll retrieve backup rates for every region and country we currently support and store the rates directly inside NetSuite. Each month we’ll update the rates using a scheduled script for accurate backup calculations.

TaxJar Backup Rates

You can review the current backup rates under TaxJar > Reports > Backup Rates.

Skip & Override Calculations

When importing orders from an external platform such as Shopify, Amazon, eBay, or a custom homegrown system, you may want to skip API calculations and bring in the sales tax you’ve already collected “as-is”. TaxJar makes it easy to pass in a custom field and generate the tax details for SuiteTax. You can set this field using a NetSuite connector such as Celigo / FarApp, CSV imports, or your own SuiteTalk web services integration.

Use one of the following custom transaction body fields to import tax for an order without recalculating tax in SuiteTax:

  • custbody_tj_external_tax_amount for order-level sales tax amounts
  • custbody_tj_external_tax_rate for order-level sales tax rates

To test out this functionality, you can also edit these fields directly inside the TaxJar subtab on a transaction record. Click the Preview Tax button or save the record to apply the tax.

Sales Tax Reporting

TaxJar automatically syncs invoices, cash sales, credit memos, and cash refunds for sales tax reporting and filing. This is done automatically behind the scenes when one of these records is created or updated inside NetSuite. To backfill older transactions from NetSuite into TaxJar, go to the TaxJar dropdown in your menu bar and select Backfill > Transactions:

TaxJar Backfill Transactions Dropdown

From there, use the datepickers in the From Date and To Date to select a date range of transactions to backfill:

TaxJar Backfill Transactions

Click Sync to TaxJar and transactions with a transaction date within that range will be queued for syncing. To monitor the queue system, go to TaxJar > Reports > Queue to view pending, processed, and invalidated transactions:

TaxJar Queue Report

You can browse and filter through all of your synced transactions under TaxJar > Reports > Synced Transactions:

TaxJar Synced Transactions Report

Transaction States

TaxJar only imports paid in full invoices and fully applied credit memos. Cash sales and cash refunds are always synced over. Additionally, only transactions shipped to the US with USD currency are synced to TaxJar. At this time TaxJar only supports reporting and filing in the United States.

After a customer payment is recorded, any associated invoices will be synced if they’re in a paid in full status.

After a customer refund is recorded, any associated credit memos will be synced if they’re in a fully applied status.

Standalone Refunds

If you create credit memos or cash refunds separately from an invoice or cash sale in NetSuite, you will need to specify a reference transaction before syncing the order to TaxJar. Click the TaxJar subtab on a refund transaction and select a synced order from the TaxJar Reference Transaction field:

TaxJar Reference Transaction

After saving, our integration will reference this transaction as a fallback if we can’t find an originating order for the refund.

Marketplace Exemptions

If you sell on marketplaces such as Amazon, eBay, Etsy, or Walmart and import orders from these channels into NetSuite, you can designate them as marketplace exempt for TaxJar reporting and filing. Simply change the TaxJar Provider field from “api” to “amazon”, “ebay”, “etsy”, or “walmart” when editing a transaction:

TaxJar Marketplace Exemptions for NetSuite

You can also set a provider for many transactions at once using the mass update feature under Lists > Mass Update > Mass Updates. After doing so, make sure to backfill these transactions into TaxJar via TaxJar > Backfill > Transactions.

Import marketplace transactions using a connector via SuiteTalk / web services? You can programmatically set the transaction body custom field custbody_tj_provider to the channel of your choice before creating the order or refund in NetSuite.

Skipping / Filtering Transactions

If you’d like to skip specific transactions from syncing to TaxJar, you can use the “Skip TaxJar Sync” checkbox on individual transactions on the “TaxJar” subtab:

TaxJar Skip TaxJar Sync Checkbox

For skipping transactions in bulk, use the mass update feature under Lists > Mass Update > Mass Updates and select Invoice, Cash Sale, Credit Memo, or Cash Refund under General Updates > Transaction Types.

Import transactions using a connector via SuiteTalk / web services? You can programmatically set the transaction body custom field custbody_tj_sync_skip to true (T) or false (F) based on your given logic or criteria.

Wrapping Up

Congratulations, you’ve finished setting up TaxJar and NetSuite! At this point you should be collecting sales tax in NetSuite and syncing transactions for reporting / filing.

Current Limitations

The following items are currently unsupported by TaxJar in NetSuite:

  • If “Item Line Shipping” is enabled, TaxJar will use the first line item shipping address for calculations and reporting. At this time, TaxJar does not support multiple shipping addresses through our API.
  • TaxJar does not currently support use tax calculations for the following record types: Credit card charge, credit card refund, purchase order, vendor bill, vendor credit, vendor return authorization. Calculations will be skipped for these record types when attempting to estimate or record tax via SuiteTax.

TaxJar requires SuiteTax to provide rooftop accurate sales tax calculations at the jurisdiction level. Review the known limitations of SuiteTax in the NetSuite Help Center prior to installing SuiteTax.

Integration Changelog

Curious to see what’s changed with our integration lately? Read on to learn more!

v1.3.0 - 2019-08-08

  • Automatic SuiteTax mapping for external transactions. Use the custbody_tj_external_tax_amount and custbody_tj_external_tax_rate transaction body fields to import your sales tax “as-is” from external platforms without recalculating tax.
  • Override state-level nexus mismatches in SuiteTax. If TaxJar determines a different nexus state / region from what SuiteTax determines, we will automatically override the nexus to ensure sales tax is recorded in the proper sales tax payable account.
  • Refactor discount calculations to fully support order-level discounts, line discounts, and discounts applied with items after tax such as gift card redemptions.
  • Sync exempt prospect and lead customer records to TaxJar when backfilled.
  • Fall back to company ship-from address in NetSuite Standard Edition.
  • Require default payable and receivable accounts in TaxJar configuration for SuiteTax.

v1.2.1 - 2019-07-17

  • Sum up line discount totals manually for SuiteTax calculations.
  • Fix calculation error when using a location with multiple address lines.
  • Fix duplicate tab issue for non-inventory items “Apply After Tax” setting.

v1.2.0 - 2019-06-18

  • Skip non-inventory items (such as gift card redemptions) from calculations via “Apply After Tax” checkbox.
  • Remove “NULL” strings for empty address lines (2 & 3) when calculating sales tax.
  • Fix type error when attempting to sync a refund from a return authorization tied to a sales order.

v1.1.1 - 2019-05-07

  • Fix nexus address lookup for calculations in NetSuite Standard edition.
  • Fix script execution limit for calculations on orders with 150+ line items.
  • Fix transaction force push to sync records that have not been updated.
  • Hide calculation settings if SuiteTax is not enabled.

v1.1.0 - 2019-04-19

  • Support standalone refunds using new custom transaction body field for transaction sync.
  • Fix line item sales tax when pushing orders and refunds during transaction sync.
  • Fix type error when attempting to sync a refund from a return authorization without a reference ID.

v1.0.1 - 2019-04-12

  • Automatically enqueue customers on a mass update instead of requiring a backfill.
  • Support custom line amounts for calculations and transaction sync.
  • Improve order-level discount distribution across multiple lines for transaction sync.
  • Cache tax code and tax type IDs during calculations.
  • Skip nexus address for calculations if tax engine is not set to “TaxJar”.
  • Fix generated tax codes with duplicate county and city jurisdiction names.
  • Fix product tax codes when pushing transactions to TaxJar.
  • Fix international calculations without a state or region in the shipping address.
  • Fix tax details override error during calculation.
  • Fix transaction backfill error when exceeding scheduled script usage threshold.

v1.0.0 - 2019-03-29

  • Multi-channel transaction support for marketplace exemptions. Transaction body field custbody_tj_provider can be used to set a provider such as “amazon”, “ebay”, “etsy”, and “walmart” to designate marketplace exempt transactions within TaxJar.
  • Bundle custom address form for address validation.
  • Always show custom transaction body fields on sales records.
  • Fix transaction reference ID lookup for cash refunds.
  • Check invoice “paid in full” status and credit memo “fully applied” status prior to enqueueing records.
  • Fix skip sync lookup for customer payments and refunds when enqueueing transactions.
  • Fix “record does not exist” error when attempting to enqueue a deleted customer payment or refund.

v0.6.1 - 2019-03-07

  • Support bulk invoicing of sales orders when queueing invoices and cash sales.
  • Fix system error when failing to write a TaxJar log message.

v0.6.0 - 2019-02-04

  • Skip specific transactions from syncing via “Skip TaxJar Sync” checkbox.
  • Skip specific discount items from calculations via “Apply After Tax” checkbox.
  • Sync invoices and credit memos after applying a customer payment or refund.
  • Apply discount line items to previous line item and use absolute amounts.
  • Fix nexus address lookup when nexuses have not been saved with TaxJar custom fields for SuiteTax.
  • Fix Setup > Nexuses menu tab for NetSuite 2019.1.
  • Remove custom role for backfilling transactions until resolved in NetSuite 2019.1.

v0.5.2 - 2019-01-24

  • Fix permission issues on custom records for non-administrators.
  • Fix end date on queue worker scheduled script.
  • Automatically invalidate record in queue when deleted or no longer exists.
  • Drop cash sale deposited status requirement prior to syncing.
  • Update reports with improved labels and relative URLs.
  • Support free-form state names in addresses.
  • Tweak TaxJar configuration help text.

v0.5.1 - 2019-01-16

  • Skip SuiteTax calculations for use tax record types: Credit card charge, credit card refund, purchase order, vendor bill, vendor credit, vendor return authorization.
  • Directly override nexus if SuiteTax nexus determination differs from TaxJar.
  • Remove default tax or shipping tax if tax rate is zero percent.
  • Tax category item dropdown should now be available for inventory items.
  • Custom fields should now be shown on existing custom forms.
  • Fix “TaxJar Backfill” custom role name.

v0.5.0 - 2019-01-10

  • Initial release of our NetSuite integration. Sales tax calculations powered by SuiteTax for rooftop-accurate rates down to the jurisdiction level. Transaction sync and backfilling. Supports product exemptions, customer exemptions, shipping taxability, sourcing logic, and address validation.
Start managing your sales tax today. Be up and running in minutes.
Get in touch