1. Documentation /
  2. Avalara AvaTax

Avalara AvaTax

Overview

↑ Back to top
Avalara AvaTax provides seamless integration with Avalara’s tax calculation and management services. You can easily and automatically get and charge the appropriate tax rates for your store based on your origin address and your customers’ addresses, and manage all tax reporting in your AvaTax dashboard. AvaTax is available for merchants in almost every country! Avalara AvaTax allows you to charge appropriate tax automatically and track tax records for your WooCommerce transactions, and can also enable AvaTax address validation for your customers. Set your default product and tax shipping codes, override product codes as needed for categories or individual products, and you’re on your way!

Requirements

↑ Back to top
  • An Avalara account
  • WooCommerce 3.9.4 or newer
  • WordPress 5.6
  • PHP 7.4 or newer (you can see this under WooCommerce > Status)
  • Taxes enabled on your WooCommerce store (head to WooCommerce > Settings, and ensure that the Enable tax rates and calculations checkbox is selected. If not, select it and click the Save changes button to continue)

Installation

↑ Back to top

Add to site

Make sure you have your WooCommerce store set up on your WordPress account and your store URL is publicly accessible.
  1. On the WooCommerce dashboard, select the Add to site option. It displays your available WooCommerce sites on your WordPress account.
  2. Select an existing site to install the Avalara for WooCommerce plugin.
    If you want to add a new store, select the Add a new site option and provide the URL of your WooCommerce store to install the plugin.

    The Installing extension page shows that the plugin installation is in progress. After the installation is complete, it displays the plugin page. You can proceed with connecting and configuring your plugin.

Download and install

  1. Download the extension from your WooCommerce dashboard.
  2. Go to Plugins > Add New > Upload and select the ZIP file you just downloaded.
  3. Click Install Now, and then Activate.
  4. Click Configure and read the next section to learn how to set up and configure the plugin.

Getting started

↑ Back to top
Follow the steps below to connect the plugin:
    1. Login to Avalara.
    2. Select Account and copy your Account ID to add to the plugin settings.
Finding your account ID in AvaTax.
    1. If you recently created your account, you should have received your license key via email from the account admin. If you don’t have that email, you can reset your license key by following these steps:
      • Go to Settings > License and API Keys > Generate License Key.
      • Click Generate. This will create a new license key that you’ll need to use anywhere a license key is required, including the plugin settings.
    2. From your WooCommerce site, go to WooCommerce > Settings > Tax > AvaTax and paste these values in the Account Number and License Key fields.
Updating your connection settings in the WooCommerce AvaTax plugin.
  1. Click Save Changes. When the page refreshes, you’ll be able to enable Tax Calculation and Address Validation.
Once connected, you can enable tax calculation and/or address validation in their dedicated settings sections. If enabling tax calculation, you’ll need to ensure that the Origin Address is populated in the plugin settings. That’s it! You’re ready to start calculating taxes with AvaTax. Click here to learn more about available extension settings.

Extension settings

↑ Back to top

Connect to Avalara

  • Account ID: Enter your Avalara account ID. Click here for instructions on finding your account number.
  • License key: Enter your Avalara license key. Click here for instructions on finding your license key.
  • Connect to Production: Connects your WooCommerce store to your default company in your production account in Avalara. Use this account to calculate taxes for customer transactions on your storefront.
  • Connect to Sandbox: Connects your WooCommerce store to your default company in your sandbox account in Avalara. Use this account to perform test transactions. You can switch between your multiple Avalara accounts by entering the respective Account ID/License key and selecting Update Connection.

Advanced Settings

↑ Back to top

Tax Calculation

  • Enable tax calculation: Allow AvaTax to calculate taxes for your store. This will override all configured WooCommerce tax rates and only use rates from AvaTax.
  • Save transactions in Avalara for reporting: Submit transactions as “committed” any time the order is sent to AvaTax (which will not be editable). Disable leaving transactions as “uncommitted” in AvaTax for your manual review and commit.
  • Company name: Displays your default company name if you have configured a single company in Avalara. If you have multiple companies, it displays a drop-down to select the company of your preference.
  • Calculate Colorado retail delivery fee: Set to enable calculation of the Colorado retail delivery dee automatically. This option is available only to those users who have enabled Colorado in the nexus. Retails delivery fee collection does not apply to all business. Read more information.
  • Shipping tax code: The default shipping tax code for all shipping methods in your store. FR is used by default. Start typing in this field to search and select the default tax code from the auto-lookup results.

Address validation

  • Validate address: Allow customers to validate their addresses at checkout for US and Canada using the Validate Address option. After you set up address validation, it displays the Validate Address button for billing and shipping addresses at the Checkout page when placing orders. You need to select the Validate Address button to validate your address.

Exemption certificate management

  • Enable exemption certificates: Enables WooCommerce admins and storefront customers to add, create, or manage exemption certificates. The plugin reads the country or exposure zone details from your nexus configuration. This option is available to you and enabled by default only if you have a subscription to the Avalara exemption certificate management service.

Transactions outside the US

  • Collect Business VAT ID: Allow customers to enter a VAT ID at checkout.
  • Calculate customs duties: Allow customers to calculate customs duties for orders outside of the US. In AvaTax, line items must have fully qualified tariff code to calculate customs duties for the destination country. After you enable this, you need to connect to AvaTax again to synchronize your products in WooCommerce with AvaTax. You also need to select the the countries outside of the US to automatically assign the HS Codes. The following settings are available only after you enable this options:
  • AvaTax username: If taxes should be calculated in the cart, calculate taxes in the cart for international addresses.
  • AvaTax password: Allow customers to enter a VAT ID at checkout.
  • Countries for HS Code assignment: Select the countries outside of the US where you want to calculate the customs duties. Avalara assigns HS Codes automatically only for the selected countries.
  • Sync products with Avalara: Select Connect to synchronize your products in WooCommerce with Avalara.

Additional setting

  • Avalara Transport: Specify who will be responsible for the transportation of goods in a VAT transaction. This setting is available when you edit the specified shipping method at Settings > Shipping > Add Shipping Zone > Add Shipping Method.

Logs

  • Enable logging: Log API requests to the WooCommerce > Status > Logs to assist with troubleshooting. You can view the transactions logs at WooCommerce > Status > Logs.

Exempt users

↑ Back to top
There are two ways to exempt users from taxes on your site:

Exempt users in AvaTax

By setting up exemptions directly in AvaTax, you can ensure that customers are exempt from taxes whether they’re a registered user of your site or a guest. To do this, set the user’s email address as the customer code in the AvaTax exemption certificate. Their exemption will then be applied based on their eligibility in AvaTax when they enter their email address at checkout.

Exempt users in WooCommerce

You also set up exemptions in WooCommerce by going to Users, selecting the user in question, and updating the Tax Exemption field. When this user places an order on your site, they’ll be exempt from taxes (partially or fully, based on the type of exemption). Click here to learn more about tax exemption.
WooCommerce AvaTax customer tax exemptions
Set User Tax Exemption

Setting product tax codes

↑ Back to top
Your default product tax code, configured in the plugin settings will be used for all products unless overridden at the category level or product level. If you have a tax code set for a category, it will override the default tax code for all products in that category. The tax code can be set while creating or editing a category of products.
WooCommerce AvaTax category tax code
Category Tax Codes
If you set a tax code for a product, this will override any category or default product tax codes you’ve configured, as these rules are most specific. You can set a tax code for a product under Product Data > General:
WooCommerce AvaTax product tax code
Product Tax Code
If your product is variable, you can still set the tax code here, which is inherited by variations. You can also set variation-specific tax codes if needed.
WooCommerce AvaTax set variation tax code
Variation-specific tax codes

Address validation

↑ Back to top
AvaTax provides address validation services for a limited number of countries. If a customer checks out where address validation is supported, the customer can validate their address by clicking Validate Address. If the address is validated properly, the fields will be adjusted and the customer will see a success message. WooCommerce AvaTax address validation success If the address is incorrect, a notice will be displayed with whatever error is returned so the customer can make the suggested adjustment and re-validate the address. WooCommerce AvaTax address validation error

Submit transactions to AvaTax

↑ Back to top
Documents can only be sent to Avalara once, so transactions are only sent to Avalara upon payment. This reduces the number of documents that may need to be voided due to failed payment or cancellation.

Customer orders

↑ Back to top
When a customer completes an order from the checkout process on your site, the customer’s tax is estimated at checkout. That tax is finalized when the order data is sent to Avalara and submitted as a document in AvaTax. If the payment is submitted during the checkout (for example, payment is accepted with a credit card), the transaction will be automatically sent to AvaTax without action needed. For other cases where payment isn’t accepted immediately (e.g. paying via check or cash on delivery), you can manually send an order to Avalara using the Send to Avalara order action. WooCommerce AvaTax Send to Avalara This action can only be taken once per order, so it should be done when the payment is complete.

Manually created orders

↑ Back to top
When manually creating an order in WooCommerce, you can calculate taxes by following the steps below:
  1. Select the customer (if they’re already registered) or enter their full billing and/or shipping address and email address.
  2. Add products to the order.
  3. Save the order.
  4. Click Recalculate.
Recalculating taxes in a WooCommerce order. This won’t immediately record a transaction document in Avalara, but is meant to estimate the taxes to charge the customer. Once the customer has paid and a shop admin marks the order as “Processing” or “Complete” (and the totals are no longer editable), the shop admin can use the Send to Avalara action to record the transaction officially. This action can only be used once. Using the "Send to Avalara" action in a WooCommerce order.

Refund orders

↑ Back to top
Starting with version 1.15.0 of the plugin, full and partial refunds issued in WooCommerce will be automatically reflected in Avatax. The sales tax adjustment will be automatically applied for the month of the refund, not the month of the order. No additional tax adjustments are required.
Note: Refunds issued before updating the plugin to version 1.15.0 (released on November 13th, 2021) will still show as voided docs. If you need to adjust refund data for orders before the update, please contact Avalara. If you’re not using the latest version of the plugin, the old process will apply:
  • When an order is refunded in full, the corresponding Avalara document is voided and no return adjustment is sent.
  • If you need to partially refund an order, you should create a Return Invoice in Avalara to determine the correct amount of tax to refund for each order item.
To refund an order in WooCommerce:
  1. Log into WordPress.
  2. Navigate to WooCommerce > Orders.
  3. Select an order and click the Refund button.
  4. Set the quantity or manually input the refund amounts for each item you’d like to refund. The refund total amount cannot be more than the order total amount.
  5. Click the Refund button to automatically refund the order. You will see a note under Order notes that the refund has been sent to Avalara.

Refunds for committed versus uncommitted transactions

↑ Back to top
Orders from your shop will be sent to Avatax as either a committed or uncommitted transaction depending on your settings in WooCommerce. Our plugin supports any type of refund issued for committed transactions. For uncommitted transactions, refunds will fail if it’s a full, tax-only, percentage, or partial refund. Any other refund will succeed. Whether you need to send transactions to AvaTax as committed or uncommitted depends on your business. We recommend consulting with a tax professional to choose the best option for you. To enable committed transactions:
  1. Log into WordPress.
  2. Navigate to WooCommerce > Settings > Tax and select the AvaTax page.
  3. Enable Set transactions as “committed” when sending to Avalara.
  4. Save changes.
For uncommitted transactions that are sent to AvaTax, you can change the status of the transaction in your AvaTax dashboard.

Refund scenarios

↑ Back to top
Our plugin supports a wide range of refund scenarios. Here are some scenarios and what to expect:

Full refunds

To refund the entire order, set the quantity to match the original order quantity for each item you’d like to refund. This will automatically populate the total including tax to be refunded.

Tax-only refunds

To refund the full taxes for an order, set the refundable tax amount to match the original tax for each item. You can also partially refund the tax for one or more items within the same order. If taxes are refunded partially, the amount will be distributed across all tax rates because AvaTax does not support tax-rate-based refunds. To refund an order in full after refunding only taxes, set the quantity for all items to match the original quantity. Then set the refundable tax amount to zero, or manually enter the refund amount for each item. Please be sure to enter the correct tax as WooCommerce does not validate the tax refund amount. For example, if an item’s tax is $2, it’s possible to set the refund tax amount to more than $2 as long as it doesn’t exceed the total refundable amount for the order.

Partial refunds

To fully refund a single item in an order, set the quantity to match the original order quantity for a particular item. To partially refund one or more items, set the quantity for a particular item or manually set a refund amount for each item. To partially refund particular items in an order, manually set the refund amount. Please be sure that you enter partial refund amounts correctly. Partial amounts are not validated so the refund amount can be greater than the quantity sold. It’s possible to refund a single item multiple times, for example, if you need to refund an item in two parts. Or if you refund the tax for an item first, then later the rest of the amount.

VAT support

↑ Back to top
Avalara AvaTax for WooCommerce supports VAT transactions B2C and B2B transactions for sale and digital services in and outside of the EU. Customers can provide VAT ID at the checkout page after they select the Enable VAT option. The Checkout page displays VAT ID and VAT message received from AvaTax. The logs, orders, credit memos, and refunds also display the VAT ID received from AvaTax. WooCommerce stores the VAT message from AvaTax and displays it in Order details in the WooCommerce admin and storefront.

Avalara Transport field for VAT transactions

The Avalara Transport field specifies who will be handling the transportation of goods in a VAT transaction. This helps to apply VAT correctly. You can set this from the WooCommerce shipping settings.
  1. Go to WooCommerce > Settings and select the Shipping tab.
  2. Select Add Shipping Zone.
  3. Enter the Zone Name and select the Zone Regions.
  4. Select Add Shipping Method and select an appropriate shipping method, and then select Add Shipping Method.
  5. After you have added the shipping method, select Edit to edit the shipping method.
  6. In the Avalara Transport field, specify the transporter of the goods for a VAT transaction. The default value is Seller.

Plugin Compatibility

↑ Back to top

Subscriptions

↑ Back to top
AvaTax works with WooCommerce Subscriptions to properly assess tax on initial and recurring orders. For an initial order, tax is calculated on the initial total and recurring total separately, so that customers are shown accurate totals at checkout for both components of the order. If you use a payment gateway that supports recurring total modifications, then AvaTax will also recalculate taxes before the order is processed by the payment gateway. This ensures that your customers are always charged the correct renewal amount while letting you account for changes in customer address or tax regulations automatically. Please be sure you’re using version 1.4.1+ of the plugin to recalculate renewal tax.

Customer/Order/Coupon Export

↑ Back to top
Avalara AvaTax is compatible with WooCommerce Customer / Order CSV Export – when active, AvaTax data will automatically be added to order and customer exports. For the orders export, the VAT ID for a customer will automatically be added to the export file if available. The column name will be vat_id and this will appear after the billing_company column if set, or at the end of the row if not. For customer exports, the customer VAT ID and tax exemption code are automatically added as new columns titled vat_id and tax_exemption, respectively. These are included after the billing_company column if set, or at the end of the row if not.

Local Pickup Plus

↑ Back to top
When Local Pickup Plus is used with AvaTax, the pickup location is used as the ShipTo address for that order or line item rather than the customer address, ensuring that taxes are appropriately calculated for the item’s destination. If more than one shipping location is allowed per order, then AvaTax will change the ShipTo address for each item so that taxes are calculated individually per item using the pickup location as the destination.

Frequently Asked Questions

↑ Back to top
Q: Which customer address is used for tax calculations? A: If the shipping address is completed, then that address is used. Otherwise, the customer billing address is assumed to also be the shipping address, and this address is used for tax calculation. In either case, the customer email address is used as the primary customer ID in Avalara. Q: Does this plugin support AvaTax Cross-Border features to calculate duties and import taxes? A: Yes! If you’re using Cross-Border calculation with AvaTax, you’ll automatically see those duties or import taxes reflected in your Avalara AvaTax tax calculation. No further configuration is needed! Click here to learn more about setting up cross-border calculation in your AvaTax account and using this feature in Avalara AvaTax. Q: Does this plugin support the calculation of the new Colorado Retail Delivery Fee? A: Yes, this plugin will automatically send the needed data to Avalara to determine if orders should include the new Retail Delivery Fee in Colorado. Our plugin is taking into consideration orders that include only virtual products, that have a local pickup shipping method in Colorado, and tax-exempt merchants and doesn’t charge them the tax fee. Also, while we’re sending the required data, you will need to map an item in your Avalara account to correctly assign the tax to a customer’s order. Please set up a new Retail Delivery Fee item and map it to the Retail Delivery Fee Tax Code (OF400000). Also, make sure that the Item Code is set as retail-delivery-fee You can find more information on mapping items to Avalara tax codes here lastly when creating manual orders, please add a “Retail Delivery Fees” fee item valued at $0.27 to automatically apply the fee to the transaction in Avalara. You can learn about manually adding fee items here. Note that this may result in two RDF fees appearing on the transaction in Avalara. To correct this, please open the transaction in your Avalara Dashboard and delete the fee with the following format: fee_ID. We are following the developer documentation for updates and will make improvements when possible. more information on how to do that is here.

Troubleshooting

↑ Back to top
Having trouble? Follow these steps to make sure everything is setup correctly before posting a support request:
  1. Please ensure that your site meets the plugin requirements.
  2. Check the FAQs to see if they address your question.
  3. Confirm that your Account Number and License Key are correct.
  4. If your gateway submits paid transactions (such as a credit card), but these orders are not sent to Avalara immediately, it usually means your gateway does not properly trigger the woocommerce_payment_completed action. While we’re happy to help debug this issue, it will need to be fixed by the payment gateway. Using the PayPal Standard gateway is a good way to compare this.
  5. If tax is incorrectly calculated, you’ll need to get in touch with the Avalara team since the rates are pulled from there.
  6. If tax is not calculated at all, please review the order notes for error sources and confirm that your origin address and tax codes are set.
  7. If you manually created the order, please ensure you follow the correct steps for manual orders.
  8. Enable logging and submit a help request with the log so we can review the transaction notes to help troubleshoot.

For Developers

↑ Back to top
Avalara AvaTax has several hooks available so that WordPress developers can customize its behavior. If you find that you need additional hooks, please submit a thread to our help desk to request the hooks you need.

Filters

↑ Back to top
apply_filter( 'wc_avatax_validate_address_button_label', $label ) – lets you change the label for address validation from “Validate Address” apply_filters( 'wc_avatax_checkout_origin_address', $origin_address, $cart ) – filters the tax origin address at checkout. Origin address is an array of address fields, $cart is the WC_Cart instance. apply_filters( 'wc_avatax_checkout_destination_address', $destination_address, $cart ) – filters the tax destination address at checkout. The destination address is an array of address fields, $cart is the WC_Cart instance. apply_filters( 'wc_avatax_order_origin_address', $origin_address, $order ) – filters the tax origin address when processing an order. Origin address is an array of address fields, $order is the WC_Order object. apply_filters( 'wc_avatax_order_destination_address', $origin_address, $order ) – filters the tax destination address when processing an order. The destination address is an array of address fields, $order is the WC_Order object. apply_filters( 'wc_avatax_tax_origin_address', $address ) – filters the tax origin address right before sending data to AvaTax. apply_filters( 'wc_avatax_tax_destination_address', $address ) – filters the tax destination address right before sending data to AvaTax. apply_filters( 'wc_avatax_order_ready_statuses', $statuses ) – filters an array of order statuses that allow manual order sending

Actions

↑ Back to top
do_action( 'wc_avatax_after_checkout_tax_calculated' ) – fires after calculating tax for a cart at checkout. do_action( 'wc_avatax_after_order_tax_calculated', $order_id ) – fires after calculating tax for an order. do_action( 'wc_avatax_order_processed', $order_id ) – fires when an order is sent to Avalara.

Questions & Support

↑ Back to top
Have a question before you download? Please fill out this pre-sales form. Already downloaded and need some assistance? Get in touch with support.