Skip to main content
Explanation

Sales Tax Management in UltraCart

UltraCart provides flexible options for managing sales tax, catering to various business needs and geographical requirements. This guide outlines the available methods, their advantages, and how to configure them within your UltraCart account.

Introduction

Managing sales tax accurately is crucial for any e-commerce business. UltraCart offers several approaches to help you comply with tax regulations, ranging from automated solutions to granular manual control. Choosing the right method depends on your business's complexity, sales volume, and geographical reach.

Ways to Manage Sales Tax

Sales Tax Management Methods

UltraCart supports the following primary sales tax methods:

  1. UltraCart Managed

  2. Self Managed

  3. Avalara Integration

  4. TaxJar Integration

  5. Sovos Integration

  6. Anrok Integration

Tip: Merchants seeking the most precise and compliant tax calculations, especially when dealing with complex product classifications or street-level accuracy, should consider Avalara, TaxJar, Sovos, or Anrok.

MethodProsCons
UltraCart Managed- Default Method
- Easy to Setup
- No Additional Fees
- United States only
- Basic sales tax collection based upon zip code not street address.
:::note
Warning: UltraCart Managed Rates are ZIP-code-level only and do not support:
- Street-level tax jurisdiction calculations
- Distinctions between item/service tax classes
For businesses needing more precise tax handling or support for multiple tax classifications, we recommend using Avalara, TaxJar, or Sovos.
:::
note
In summary, since the csv file provided by Avalara can't handle the 1-to-many nature of multiple tax counties in a zip, whenever the checkout encounters that situation, the highest tax rate is chosen to ensure the minimum tax is collected. Therefore, each merchant must decide if this is sufficient for their situation. If this is not desired, the alternative is to use Avalara, TaxJar, or Sovos for the most accurate sales tax services.
In summary, since the csv file provided by Avalara can't handle the 1-to-many nature of multiple tax counties in a zip, whenever the checkout encounters that situation, the highest tax rate is chosen to ensure the minimum tax is collected. Therefore, each merchant must decide if this is sufficient for their situation. If this is not desired, the alternative is to use Avalara, TaxJar, or Sovos for the most accurate sales tax services.
Self Managed- All Countries
- Fine Grained Control Of Minute Details
- Manual setup of everything
- Time intensive setup
- Manual updates
- Requires external tax tables
Avalara- Easy To Setup
- Complete Tax Solution
- Automatically Identify New Nexus Points.
- Can File Taxes For You (Additional fee)
- Requires Avalara plan
- See Avalara for additional restrictions
TaxJar- Easy To Setup
- Complete Tax Solution
- Automatically Identify New Nexus Points.
- Can File Taxes For You (Additional fee)
- Requires TaxJar plan
- See TaxJar for additional restrictions
Sovos- Easy To Setup
- Complete Tax Solution
- Automatically Identify New Nexus Points.
- Can File Taxes For You (Additional fee)
- Requires Sovos plan
Anrok- Easy To Setup
- Complete Tax Solution (calculation, filing, remittance, reconciliation)
- Nexus Monitoring Across 100+ Countries
- Requires Anrok plan
- Requires products to be tagged with Anrok tax categories

Special Fees

Effective July 1, 2022, Colorado imposes a retail delivery fee on all deliveries by motor vehicle to a location in Colorado with at least one item of tangible personal property subject to state sales or use tax.

Please see their full announcement here: https://tax.colorado.gov/retail-delivery-fee

For more information please see the following documentation Colorado Retail Delivery Fee

UltraCart Managed

UltraCart Managed is a simple, no-cost solution suitable for basic U.S. sales tax collection.

info

Important Notice regarding Sales Tax Calculation

UltraCart Managed Rates: The rates are provided by Avalara and are only accurate to the zip code level.

There can be addresses within those zip codes that may have a higher rate, but to get that higher rate you will have to use an API style integration like Avalara or TaxJar service which can calculate that.

The free UltraCart Managed rates are simply the import of the free tax tables from Avalara. We can't modify those rates or guarantee perfect accuracy.

info

United States Only

The "UltraCart" managed sales tax configuration pertains to the United States only.

For international support please contact one of the integrated Sales Tax processing services:

  • TaxJar (United States & Canada)

  • Avalera (Worldwide - Please contact Avalera directly for specific details)

As of 06/19/2019, the UC managed tax provider will populate the tax county automatically. This information can be backfilled upon request.

Required Steps

To use UltraCart Managed sales tax:

  1. Activate UltraCart Managed as your tax provider.

  2. Select all states where you wish to collect sales tax.

Activating UltraCart Managed

  1. Navigate to Home → Configuration (Checkout) → Sales Tax.

  2. Ensure that "UltraCart Managed" is selected as your tax provider.

salestax01.png

Selecting States to Collect Tax

  1. Click the Settings button for "UltraCart Managed."

  2. On the settings screen, select a state from the dropdown menu.

  3. Click the plus button to add it to the list of states where tax is collected.

  4. Repeat for all desired states.

  5. When finished, click the Save button.

salestax02.png

Editing State Level Options

You can modify state-specific sales tax options by clicking the pencil icon next to a configured state:

  1. Click the pencil icon next to the state you wish to edit.

  2. Select the desired options from the "State Level Options" dialog.

  3. Click the OK button to save your changes.

SalesTax-Edit-StateOptions.PNG

State Level Options

FieldDescription
FieldDescription
Quickbooks CodeSelf-managed tax states can have a custom QuickBooks Code for assigning a tax rate within QuickBooks. Other tax providers automatically send the state, county, and city names to QuickBooks, where tax jurisdictions are created automatically.
Use UltraCart Managed RatesIf enabled, UltraCart manages the tax rates, eliminating the need to manually configure rates for the State, County, City, and Postal Code levels. This option leverages the automated rate updates provided by UltraCart's managed service while allowing manual control over taxability options.
Tax ShippingIf active, shipping costs are added to the taxable subtotal.
Tax Gift WrapIf active, any gift wrap fees are added to the taxable subtotal.
Don't collect state taxIf active, state tax is not collected, even if other jurisdictions (county, city, postal code) within that state might still collect tax.
Don't collect county taxIf active, county tax is not collected, even if other jurisdictions (state, city, postal code) within that county might still collect tax.
Don't collect city taxIf active, city tax is not collected, even if other jurisdictions (state, county, postal code) within that city might still collect tax.
Don't collect postal code taxIf active, postal code tax is not collected, even if other jurisdictions (state, county, city) within that postal code might still collect tax.

After saving, the state will appear in the list of states configured for taxation.

Adding County Tax Rates

  1. Click the plus button to the right of the state to add county tax rates.

  2. The process is the same as configuring state tax rates.

salestax06.png

Click the plus button at the right of the state to add county tax rates. The process is the same as the state tax rates.

salestax07.png

Once the county is saved, click the plus sign next to the county to add city rates.

salestax08.png

Adding City Tax Rates

  1. Once the county is saved, click the plus button next to the county to add city rates.

  2. The "Add City" dialog contains the same fields as the state and county configuration.

  3. Repeat this process for as many states, counties, and cities as needed.

salestax09.png

Adding Postal Code Tax Rates

If you need to add postal code tax rates to a city, click the plus button to the right of the city and follow the same process as the other jurisdictions.

salestax10.png

Configure Other Countries for Tax Collection

Other countries are configured on the right side of the Self Managed settings screen. The process for configuring tax rates for other countries is similar to configuring U.S. states, but it begins at the country level. You will add the country first, then any sub-jurisdictions as needed.

salestax11.png


Third-Party Sales Tax Provider Configuration

Each third-party tax provider has its own dedicated setup guide, linked below, so this page stays focused on the overall Sales Tax options rather than duplicating each provider's instructions:

  • Configuring Avalara — Account ID/License Key setup, item and shipping tax codes, and connection testing.

  • Configuring TaxJar — API token setup, tax codes, connection testing, and exporting historical orders.

  • Configuring Sovos — Credential setup, test mode, and going live.

  • Configuring Anrok — API key, Default/Shipping Product ID mapping, and testing.


Tax Exempt Customers

Tax exemption in UltraCart rides on a customer profile. Three things have to be true before that customer checks out tax free. Miss any one of them and the checkout collects tax as normal, with no error and no warning on screen.

  1. The customer profile is marked tax exempt in UltraCart.
  2. If you calculate tax through an API based provider, the provider specific fields are filled in and a matching customer record exists inside that provider's system.
  3. The customer logs in to their customer profile during checkout.
warning

Catch this before the order processes. Once an order reaches Processed status, UltraCart locks its tax amount and you cannot edit it back down to zero. Correcting it then means refunding and recreating the order. See Correcting Tax on a Processed Order.

Step 1: Mark the profile tax exempt in UltraCart

Navigate to Main Menu → Operations → Customer Profiles → Manage, edit the customer's profile, and open the Taxes tab. Enable Tax Exempt and enter the customer's Tax ID Number.

Most merchants let tax exempt customers sign up as wholesale customers and upload their own exemption certificate. The upload link sits under Operations → Customer Profiles → Settings.

For the full field list on that tab, see Tax configuration and exemptions.

Step 2: Configure the provider specific fields

With UltraCart Managed or Self Managed tax, the Tax Exempt toggle is the whole story. With Avalara, TaxJar, Sovos, or Anrok it is not. UltraCart sends a customer identifier along with the tax request, and the provider decides the exemption from the record it holds under that identifier. If the identifier is missing on either side, the provider prices the order as taxable and UltraCart collects tax.

ProviderFill in on the profile Taxes tabMust already exist in the provider's system
AvalaraAvalara Customer Code, Avalara Entity Use CodeA customer record under the matching customer code, with the exemption certificate or entity use code on file. See Configure Avalara Entity Use Code.
TaxJarTaxJar Customer Code, TaxJar Exemption TypeA customer created in TaxJar first, whose code you then copy back into UltraCart. See Configuring TaxJar.
SovosSovos Customer CodeA customer record under the matching customer code, with the exemption on file.

Anrok is not in the table above. Confirm any customer level exemption setup with Anrok directly before you rely on it at checkout.

Step 3: The customer logs in at checkout

The exemption belongs to the customer profile, so the shopper has to log in to that profile during checkout to receive it. An order placed as a guest is taxed normally, even when the email address on it matches an exempt profile exactly.

Auto Link Orders to Customer Profile does not change this. That setting attaches a guest order to the matching profile for historical purposes, but the order does not receive the profile's benefits. See Customer Profile Configuration.

If your customers are not logging in, check that profile login is available on your storefront. Single Page Checkout covers which themes support customer profile login during checkout.

An exempt customer was charged tax

Work the three requirements in order. The first one is by far the most common cause.

  1. Open the order and check whether it is linked to a customer profile and whether the customer logged in. A guest checkout explains most of these.
  2. Open that profile's Taxes tab and confirm Tax Exempt is on and the provider specific fields are populated.
  3. Open your provider's dashboard and confirm a customer record exists under that same code with the exemption on file.
  4. Review the tax provider log for the order, described in the Logs section below. The request UltraCart sent shows which customer code went to the provider, and the response shows the exempt amount the provider returned.

If the order has already processed, its tax is locked. Fix the setup so it does not recur, then see Correcting Tax on a Processed Order for the correction path on the order itself.

Troubleshooting

info

Troubleshooting Tool

If you need to verify or troubleshoot a tax calculation for an order, please first compare the rate using this simple sales tax look up tool:

https://www.taxjar.com/sales-tax-calculator/

If you see a discrepancy between the recorded sales tax in an order compared to the tax displayed in the look up tool, then you can further troubleshoot the issue by reviewing the logs for either Avalara or TaxJar.

Logs

Avalara and TaxJar record important communications for review. Shopping cart tax calculations are not stored to logs, but any operation against an order is logged. This means the final tax calculation is stored, as well as any transaction notifications (order placed and order refunded).

Within the Avalara and TaxJar settings screens are log buttons. Clicking either button will display a log history.

salestax21.png

The log files will contain the request and response make to the tax service.

Here is an example. If the logs fail to assist you in solving any problems, notify UltraCart support and involve them.

estimateTax for order [START]
===== estimate tax request start =====
{
"lines": [
{
"number": "1",
"quantity": 3,
"amount": 58.5,
"itemCode": "Bone",
"description": "TJ's DOGGIE BONES (6 lbs.)\nCode: 4W5S41JXG4\nCode: B2BJZVM1PF\nCode: JMK9XQRRRZ"
}
],
"type": "SalesOrder",
"companyCode": "",
"date": "Nov 8, 2018 1:57:19 PM",
"customerCode": "GuestCustomer",
"purchaseOrderNo": "",
"addresses": {
"singleLocation": {
"line1": "30 Pryor Street",
"line2": "",
"city": "Atlanta",
"region": "GA",
"country": "US",
"postalCode": "30303"
}
},
"description": "DEMO-0009104135",
"email": "joe@somewhere.com"
}
===== estimate tax request end =====
===== estimate tax response start =====
{
"id": 0,
"code": "dfaf643b-d866-407b-a1a4-3f3499e7fd1d",
"companyId": 0,
"date": "Nov 8, 2018 12:00:00 AM",
"paymentDate": "Nov 8, 2018 12:00:00 AM",
"status": "Temporary",
"type": "SalesOrder",
"customerVendorCode": "GuestCustomer",
"reconciled": false,
"purchaseOrderNo": "",
"totalAmount": 58.5,
"totalExempt": 0.0,
"totalDiscount": 0.0,
"totalTax": 5.21,
"totalTaxable": 58.5,
"totalTaxCalculated": 5.21,
"adjustmentReason": "NotAdjusted",
"locked": false,
"version": 1,
"exchangeRateEffectiveDate": "Nov 8, 2018 12:00:00 AM",
"exchangeRate": 1.0,
"description": "DEMO-0009104135",
"email": "joe@somewhere.com",
"modifiedDate": "Nov 8, 2018 6:57:17 PM",
"modifiedUserId": 1152574,
"taxDate": "Nov 8, 2018 12:00:00 AM",
"lines": [
{
"id": 0,
"transactionId": 0,
"lineNumber": "1",
"description": "TJ's DOGGIE BONES (6 lbs.)\nCode: 4W5S41JXG4\nCode: B2BJZVM1PF\nCode: JMK9XQRRRZ",
"discountAmount": 0.0,
"exemptAmount": 0.0,
"exemptCertId": 0,
"isItemTaxable": true,
"itemCode": "Bone",
"lineAmount": 58.5,
"quantity": 3.0,
"reportingDate": "Nov 8, 2018 12:00:00 AM",
"tax": 5.21,
"taxableAmount": 58.5,
"taxCalculated": 5.21,
"taxCode": "PP051195",
"taxCodeId": 38011,
"taxDate": "Nov 8, 2018 12:00:00 AM",
"taxIncluded": false,
"details": [
{
"id": 0,
"transactionLineId": 0,
"transactionId": 0,
"country": "US",
"region": "GA",
"exemptAmount": 0.0,
"jurisCode": "13",
"jurisName": "GEORGIA",
"stateAssignedNo": "",
"jurisType": "STA",
"nonTaxableAmount": 0.0,
"rate": 0.040000,
"tax": 2.34,
"taxableAmount": 58.5,
"taxType": "Sales",
"taxName": "GA STATE TAX",
"taxAuthorityTypeId": 45,
"taxCalculated": 2.34,
"rateType": "General",
"rateTypeCode": "G"
},
{
"id": 0,
"transactionLineId": 0,
"transactionId": 0,
"country": "US",
"region": "GA",
"exemptAmount": 0.0,
"jurisCode": "121",
"jurisName": "FULTON",
"stateAssignedNo": "060A",
"jurisType": "CTY",
"nonTaxableAmount": 0.0,
"rate": 0.030000,
"tax": 1.76,
"taxableAmount": 58.5,
"taxType": "Sales",
"taxName": "GA COUNTY TAX",
"taxAuthorityTypeId": 45,
"taxCalculated": 1.76,
"rateType": "General",
"rateTypeCode": "G"
},
{
"id": 0,
"transactionLineId": 0,
"transactionId": 0,
"country": "US",
"region": "GA",
"exemptAmount": 0.0,
"jurisCode": "04000",
"jurisName": "ATLANTA",
"stateAssignedNo": "060A",
"jurisType": "CIT",
"nonTaxableAmount": 0.0,
"rate": 0.015000,
"tax": 0.88,
"taxableAmount": 58.5,
"taxType": "Sales",
"taxName": "GA CITY TAX",
"taxAuthorityTypeId": 45,
"taxCalculated": 0.88,
"rateType": "General",
"rateTypeCode": "G"
},
{
"id": 0,
"transactionLineId": 0,
"transactionId": 0,
"country": "US",
"region": "GA",
"exemptAmount": 0.0,
"jurisCode": "ENVK0",
"jurisName": "ATLANTA TSPLOST TL",
"stateAssignedNo": "060A",
"jurisType": "STJ",
"nonTaxableAmount": 0.0,
"rate": 0.004000,
"tax": 0.23,
"taxableAmount": 58.5,
"taxType": "Sales",
"taxName": "GA SPECIAL TAX",
"taxAuthorityTypeId": 45,
"taxCalculated": 0.23,
"rateType": "General",
"rateTypeCode": "G"
}
]
}
],
"addresses": [
{
"id": 0,
"transactionId": 0,
"boundaryLevel": "Address",
"line1": "30 Pryor Street",
"line2": "",
"line3": "",
"city": "Atlanta",
"region": "GA",
"postalCode": "30303",
"country": "US",
"taxRegionId": 2131921,
"latitude": "33.753427",
"longitude": "-84.389125"
}
],
"summary": [
{
"country": "US",
"region": "GA",
"jurisType": "State",
"jurisCode": "13",
"jurisName": "GEORGIA",
"taxAuthorityType": 45,
"stateAssignedNo": "",
"taxType": "Sales",
"taxName": "GA STATE TAX",
"rateType": "General",
"taxable": 58.5,
"rate": 0.040000,
"tax": 2.34,
"taxCalculated": 2.34,
"nonTaxable": 0.0,
"exemption": 0.0
},
{
"country": "US",
"region": "GA",
"jurisType": "County",
"jurisCode": "121",
"jurisName": "FULTON",
"taxAuthorityType": 45,
"stateAssignedNo": "060A",
"taxType": "Sales",
"taxName": "GA COUNTY TAX",
"rateType": "General",
"taxable": 58.5,
"rate": 0.030000,
"tax": 1.76,
"taxCalculated": 1.76,
"nonTaxable": 0.0,
"exemption": 0.0
},
{
"country": "US",
"region": "GA",
"jurisType": "City",
"jurisCode": "04000",
"jurisName": "ATLANTA",
"taxAuthorityType": 45,
"stateAssignedNo": "060A",
"taxType": "Sales",
"taxName": "GA CITY TAX",
"rateType": "General",
"taxable": 58.5,
"rate": 0.015000,
"tax": 0.88,
"taxCalculated": 0.88,
"nonTaxable": 0.0,
"exemption": 0.0
},
{
"country": "US",
"region": "GA",
"jurisType": "Special",
"jurisCode": "ENVK0",
"jurisName": "ATLANTA TSPLOST TL",
"taxAuthorityType": 45,
"stateAssignedNo": "060A",
"taxType": "Sales",
"taxName": "GA SPECIAL TAX",
"rateType": "General",
"taxable": 58.5,
"rate": 0.004000,
"tax": 0.23,
"taxCalculated": 0.23,
"nonTaxable": 0.0,
"exemption": 0.0
}
]
}
===== estimate tax response end =====
estimateTax for order [END]

Reporting

The "Custom Period Sales" report contains sections pertaining to the Sales Tax collected for the orders during the reporting period.

To run the Custom Period Sales Report, navigate:
MAIN MENU → OPERATIONS → REPORTING → (REPORTS SECTION) CUSTOM PERIOD SALES

  • Sales Tax by State - (This section shows the sales taxes collected for the state level sales tax jurisdictions.)

  • Sales Tax by State / County - (This section shows the sales taxes collected for the State & County level jurisdictions.)

  • Sales Tax by State / County / City - (This section shows the sales taxes collected for the State ,County & City level jurisdictions.)

Frequently Asked Questions

Q: What is the best option for collecting V.A.T. for orders shipped to the E.U.?
A: The best Sales tax integration option for merchants that will be processing orders where V.A.T. (Value Added Tax) are collected, is the TaxJar integration.

Q: What is a sales tax nexus and how do I identify new ones?
A: A sales tax nexus is a connection or presence that a business has in a state or jurisdiction that obligates it to collect and remit sales tax there. Nexus can be created by factors such as physical location, employees, inventory storage, or reaching a sales revenue threshold within the state. Identifying new nexus obligations can be complex as your business grows and operates across multiple jurisdictions. Solutions like Avalara, TaxJar, Sovos, and Anrok provide automated nexus monitoring and can alert you when new nexus thresholds are reached, helping ensure you remain compliant as your sales footprint expands.

Q: Where can I review a summary regarding the recent changes to the laws and regulations pertaining to Sales Tax collection for online merchants?
A: A great place to start is here: https://www.avalara.com/us/en/learn/sales-tax/south-dakota-wayfair.html
(*Please make sure to consult your CPA/Tax Professional to ensure that your business is in compliance with all tax jurisdictions, as this is outside the scope of the UltraCart service.)

Q: How can I determine the number of sales and revenue per state for a particular time period?
A: The custom period sales report (located under Operations > Reporting) has a section for Sales by US State which will provide those details.

Q: How is Sales Tax calculated if the item being sold is not shippable?
A: The sales tax calculation will use the customer billing address to calculate sales tax, if tax is being collected.

Q: How can I investigate the sales tax calculation in an order?
A: Please review the troubleshooting section earlier in this document. You can use the tax rate calculation tool to compare the recorded sales tax in an order. If a discrepancy is observed, then you can further troubleshoot the calculation by viewing the logs to see the underlying calculation details.

Was this page helpful?