Why doesn't actual tax match expected tax
Sometimes your "Expected" sales tax on a single transaction differs from the "Actual" sales tax collected. You can read up on the two reports, here. There are a few reasons why this might occur.
Inconsistent data is being sent to TaxJar's API between Tax Calculations and Order Creation
Make sure you are sending in the same ship from and ship to details. Something as small as a changed street address can completely change the rate from the time the sales tax calculation is made until the time the expected sales tax reports.
Sales tax is not being sent in with line_items
The other common problem is that you need to make sure that the sales tax parameter is sent in with the line_items. If you send in line_items when using our API to create orders, our reports will be built off of the line_items. Make sure you let us know how much tax was collected on each line_item, otherwise, our actual reports will not recognize that they were taxed and we will bucket them into a presumed exemption row. In this case, the expected reports will still be accurate.
TaxJar doesn't provide sales tax calculations
TaxJar has several integrations for which we do not provide sales tax calculations as the e-commerce provider has built-in sales tax calculations. Because of this, we often see small discrepancies between the e-commerce platform and our expected reports. This is expected. The e-commerce platform might be calculating rates that are slightly different than we expect.
Sales tax has weird rounding behavior
When calculating sales tax on an individual transaction, the TaxJar API is calculating sales tax on each line item. We do this because we support item exemptions. Orders could potentially have a mix of fully taxable, fully exempt, and/or reduced rate items, so we calculate the sales tax on each item individually.
The "Amount to Collect" parameter is the sum of these sales tax calculations, which is then rounded. However, when transactions are imported into the system, the reports are built using the sales tax collected on each line item. So, the rounding occurs immediately after (unit price rate) instead of adding up all of the un-rounded sales tax and rounding the final sum.
Sales tax rates are also a combination of various jurisdiction rates. For example, a 7% rate may be the combination of a 4% state rate, a 2% county rate, and a 1% city rate. At checkout, we can calculate this as (order total .07), however, when allocating sales tax to be remitted to the correct jurisdiction, we have to report whole numbers. The math then becomes (order total .04) + (order total .02) + (order total * .01)
These small variances are essentially caused by when the rounding takes place. However, rounding is necessary at different times in different scenarios.