Skip to main content

Overview

ElasticFunnels calculates sales tax at checkout. For US buyers you can use one of three external services (TaxJar, Avalara AvaTax, TaxCloud) or the built-in rates. EU VAT, UK VAT, Canadian tax and Australian GST always use the built-in rules. Tax is collected only on merchants where Collect tax at checkout is switched on. See Turn tax on for a merchant. Two places work together:
  • The merchant’s Tax configuration tab (Merchants → open a merchant → Tax configuration) decides whether and how tax is calculated for orders that merchant processes: which provider, the US states where you collect tax, your origin address, shipping and VAT settings.
  • Integrations → Tax holds your TaxJar, Avalara and TaxCloud credentials for the brand. When a brand integration and the merchant tab both hold a key for the same provider, the integration’s key is used.
ElasticFunnels uses the provider to calculate tax only. Orders are not recorded or committed as transactions in TaxJar, Avalara or TaxCloud, so they do not appear in the provider’s reports or filings. Keep your own records for filing.

Supported providers

The merchant Tax configuration tab

Turn tax on for a merchant

New merchants start with Collect tax at checkout off. Until you switch it on, that merchant’s checkouts, upsells and subscription renewals charge no tax at all: no US sales tax from TaxJar, Avalara or TaxCloud, and no built-in EU VAT, UK VAT, Canadian tax or Australian GST. To collect tax, open the merchant, go to Tax configuration, switch on Collect tax at checkout, pick the provider and save. The same switch is on the merchant form. Merchants that existed before this switch was added were turned on for you, so their checkouts keep charging tax as before.

Saved keys

Provider keys typed on this tab are stored encrypted. Saved provider keys are masked when you open the tab again: you see dots and, for long keys, the last four characters. Saving the tab without touching a masked field keeps the stored key. Type a new key to replace it, or clear the field to remove it. The merchant API returns the same masked values.

Nexus: which states are taxed

  • Tax provider set to None (built-in): your nexus checkboxes decide. Buyers in states you have not ticked pay no US sales tax.
  • A provider selected: the nexus set up in that provider decides, and the checkboxes are not used for the calculation. With TaxJar, states missing from your TaxJar nexus list are answered with $0 without a calculation call. A TaxJar account with no nexus states but an origin address on the Tax tab is treated as having nexus in the origin state. Avalara and TaxCloud apply the nexus configured in their own dashboards.
If the provider cannot answer, the checkout uses the built-in estimate. That estimate follows the provider’s nexus list when it is known (TaxJar), otherwise your checkboxes. Tick your nexus states even when you use a provider, so the estimate taxes the right states.

How it works

  1. The customer fills in their billing and shipping address on the checkout step.
  2. With a provider selected, ElasticFunnels sends it the cart: the destination address, your origin address, the line items (with each product’s tax category and discounts) and the shipping amount.
  3. The provider returns the tax, including any tax on shipping.
  4. ElasticFunnels adds the tax line to the order total and re-renders the order summary.
  5. When payment succeeds, the tax is stored on the conversion with a tax report that names the provider.
The same answer is reused for 10 minutes for an identical cart, so a re-submitted payment (for example after 3D Secure) does not call the provider twice. With None (built-in), ElasticFunnels looks up the rate for the buyer’s ZIP code from a connected TaxJar or Avalara integration when there is one, then from Avalara’s free tax tables, then from a static per-state rate. TaxCloud is not used for these rate lookups.

Tax-exempt products

A product with Tax exempt switched on (product Pricing tab) is never taxed. When a provider calculates the cart, the exempt line is sent so the provider taxes it at $0:

One-click upsells

Card (NMI, Stripe, Authorize.Net) and PayPal one-click upsells are taxed with the same merchant tax settings and provider as the front sale. Card upsells send the upsell’s real shipping amount, so tax on shipping is charged the same way as on the first order.

Subscription renewals

Every renewal is taxed again when it is charged, with the merchant’s current tax settings:
  • The tax is calculated at the subscription’s ship-to address, stored when the subscription was bought. If a subscription has no ship-to address, the billing address is used and the tax report notes it.
  • The renewal charges the price before tax plus the newly calculated tax. If the rate changed since the first order, the renewal charges the new total.
  • A retention offer discount applies to the price before tax, and tax is calculated on the discounted price.
  • An EU business customer whose first order was reverse-charged (valid VAT number) keeps the reverse charge on renewals, even when the VAT check cannot confirm the number again at renewal time.
  • If the provider fails, the renewal still goes through with the built-in estimate, as at checkout (see When the provider fails).

Tax quotes at checkout

The checkout asks for a tax quote each time the buyer changes the address. To protect your provider account from abuse, quotes are limited to 40 per checkout session and 150 per IP address in 10 minutes. When a buyer hits the limit, the checkout keeps showing the last tax it calculated, if any. The final tax is always calculated again when the payment is processed, so a limited quote never changes what is charged. Templates can show a note in that case with checkout.tax_pending. The calculated tax flows into Shopify Order Sync (so your accountant sees matching numbers in Shopify), into the ElasticFunnels reports, and into the receipt email.

Setup

TaxJar

1

Get an API token

Sign up at taxjar.com. Open Account → TaxJar API → API Tokens and copy your token.
2

Add the key

Go to Integrations → Tax → TaxJar, paste the token and save. Or paste it on the merchant’s Tax configuration tab instead.
3

Select TaxJar on the merchant

On the merchant’s Tax configuration tab, set Tax provider to TaxJar and fill in the origin address.
4

Set nexus states in TaxJar

TaxJar decides which states are taxable from the nexus states in your TaxJar account. Keep that list current, and tick the same states on the Tax tab so the fallback estimate matches.

Avalara

1

Get account credentials

From your Avalara account: Settings → License and API Keys → copy the Account ID and License Key.
2

Add the credentials

Go to Integrations → Tax → Avalara. Paste both credentials, fill in Company code and save. Turn on Sandbox while you test against Avalara’s sandbox.
3

Company code

Use the company code from your AvaTax account (Settings → Companies). The integration’s company code is used first; if it is empty, the company code on the merchant Tax tab is used, otherwise DEFAULT.
4

Select Avalara on the merchant

On the merchant’s Tax configuration tab, set Tax provider to Avalara and fill in the origin address. Avalara applies the nexus configured in your AvaTax account.

TaxCloud

1

Sign up

Sign up at taxcloud.com. The plan is free for sellers in SST member states.
2

Get API credentials

Open Websites → pick your site → Manage Tax States to confirm coverage, then copy the API Login ID and API Key.
3

Add the credentials

Go to Integrations → Tax → TaxCloud. Paste both values and save, or enter them on the merchant’s Tax configuration tab.
4

Select TaxCloud on the merchant

Set Tax provider to TaxCloud and fill in the origin address. TaxCloud needs an origin address; without one the checkout uses the built-in estimate.

Sandbox mode

The sandbox setting follows the key that is sent:
  • The key comes from a brand integration: the integration’s Sandbox setting decides. The merchant tab’s sandbox toggle is used only when the integration has no sandbox setting at all.
  • The key is typed on the merchant Tax tab: the tab’s Use TaxJar sandbox or Use Avalara sandbox toggle decides.
With neither set, calls go to the provider’s production service.

When the provider fails

If the provider returns an error, an empty answer or does not respond, the checkout does not stop. The order is charged the built-in estimate (see Nexus), and the order’s tax report is marked as a fallback with the provider’s error. Every provider call is reported back to the app:
  • Key from a brand integration: the outcome shows on that integration’s Activity tab, and the integration raises a keeps failing item in Actions under the usual rule (10 or more errors, and more than half of its calls, in 24 hours). See Integration activity.
  • Key typed on the merchant Tax tab: the same rule raises a critical Action named “Provider tax calculation keeps failing for merchant”, which links to the merchant’s Tax tab.
Either item closes itself once the provider answers again.

Pausing a tax integration

A paused tax integration is not used at checkout: its key is not sent and it is skipped for rate lookups. If the merchant’s Tax tab selects that provider and has no key of its own, the checkout uses the built-in estimate. Resume the integration to use it again.

Troubleshooting

Collect tax at checkout is off on the merchant (new merchants start with it off), the buyer’s state is not a nexus state (in your provider, or in the Tax tab checkboxes when the provider is None), the product is marked tax exempt, or the provider failed and the estimate found no nexus. Check the tax report on the conversion record and the integration’s Activity tab.
The order may have used the built-in estimate after a provider error. The conversion’s tax report says so and shows the error. Fix the error shown on the integration’s Activity tab or in Actions.
Shopify Order Sync sends the tax amount exactly as collected in ElasticFunnels. If Shopify shows a different number, you have Shopify’s automatic tax also turned on. Turn it off for orders tagged ElasticFunnel, or set Shopify to “tax included” so it doesn’t recompute.
The most common cause is a wrong or missing company code. Check Company code on the Avalara integration form (or on the merchant Tax tab) against your AvaTax account.