All articles

Accounting

Sales Tax — Rates, Sur-Tax, Liability vs Collected

How JewelTrak computes sales tax (TaxRate + SurTaxRate over a threshold), why some invoices have $0 tax (out-of-state, wholesale, taxable=0), and the difference between Tax Liability and Tax Collected on reports.

JewelTrak computes sales tax per invoice based on three rate fields stored on the order: TaxRate, SurTaxRate, and SurTaxThreshold. Understanding how they combine is important for jurisdictions like Florida that have a base state rate and a discretionary county “sur-tax” capped at a threshold per item.

How tax is calculated

The base tax applies to the entire invoice subtotal. The surtax cap is applied per item, not per line and not per invoice:

base tax  = subtotal × TaxRate

per line: surtax = min(|lineExt|, qty × SurTaxThreshold) × SurTaxRate
          (algebraically equivalent to giving each item its own SurTaxThreshold cap)

total tax = base tax + Σ (surtax for each line)
  • TaxRate — the base rate that applies to the entire subtotal (e.g. 6% state).
  • SurTaxRate — an additional rate (e.g. 1% county discretionary).
  • SurTaxThreshold — the dollar cap per item above which the SurTaxRate stops applying. Common in Florida ($5,000 cap).

Why per-item matters

A line of qty 3 at $3,000 each is three separate items for surtax purposes — each $3K item is under the $5K cap, so the full $9,000 line gets surtaxed:

3 × $3,000 watches in Florida (6% + 1%, $5,000 cap):
  base   = 9,000 × 0.06                 = $540
  surtax = min(9,000, 3 × 5,000) × 0.01 = $90    (full line under per-item cap)
  total                                 = $630

Contrast a single $8,000 item — only $5,000 of it gets surtaxed:

1 × $8,000 watch in Florida (6% + 1%, $5,000 cap):
  base   = 8,000 × 0.06                 = $480
  surtax = min(8,000, 1 × 5,000) × 0.01 = $50    (capped at one item × threshold)
  total                                 = $530

Service lines (StockType = ‘S’) are treated as a single item — the cap applies once to the line’s full amount.

Why this changed. Earlier versions capped surtax against the invoice subtotal as a whole, which under-collected on multi-quantity lines above the threshold. The math now matches the Florida DOR guidance (and equivalent rules in other surtax states): each item carries its own cap.

Trade-ins

A trade-in lowers the price being taxed. It doesn’t earn tax back. Florida taxes “the sales price of the new article, less the credit for the used article taken in trade” (§212.09). So JewelTrak:

  1. taxes the items being sold as above, each with its own surtax cap;
  2. takes the trades off the taxable amount, all the trades on the invoice together;
  3. charges surtax on whichever is smaller: the items’ capped surtax amount, or what’s left after the trades.

Tax never goes below $0 because of a trade. If the trade is worth more than the purchase, the extra is the shop buying the piece, not a tax refund. A real return of a sold item still refunds its own tax.

$20,000 ring, $15,000 trade (6% + 0.5%, $5,000 cap):
  taxable = 20,000 − 15,000               = $5,000
  base    = 5,000 × 0.06                  = $300
  surtax  = min(5,000, 5,000) × 0.005     = $25

$60,030 band, $60,030 of trades:
  taxable = $0, so tax = $0

Invoices paid in full before September 23, 2026 keep the tax they were paid under.

Invoices imported from your old system keep its tax math, with one change: a trade can no longer take the tax below $0. If the trade is worth more than everything else on the invoice, the tax is $0 rather than a refund. Imported invoices already paid in full keep the tax they were paid under.

Rates are stored as decimals (0.06 = 6%) — the display layer converts to percentages.

Where the rates come from

Rates are per invoice, written at order creation time, copied from:

  1. The store’s default rates (Settings → Stores → [store] → Tax setup), OR
  2. The customer’s override (some out-of-state customers have their own tax setup).

You can edit the rates on an individual invoice if needed — the saved rate is what’s used for the calculation.

When tax is $0

A $0 tax line on an invoice means one of:

  • Taxable = 0 on the order header — the customer is tax-exempt or the sale qualifies (out-of-state ship-to, resale certificate on file, etc.).
  • Wholesale customer — the customer’s contact type is Wholesale or they’re a vendor; sales to wholesale don’t generally collect tax.
  • TaxRate = 0 — the store has no rate configured (rare; usually a setup oversight).

The Sales Tax Liability report breaks invoices into three sections: Retail Taxable, Retail Non-Taxable, and Wholesale, so you can see which bucket a tax-free sale fell into.

Tax Liability vs Tax Collected

On the report, both columns usually show the same number — but they can diverge:

  • Tax Liability = what the formula says you owe based on the invoice subtotals (the calculated amount).
  • Tax Collected = what you actually charged the customer.

In the current model, these are equal — every invoice’s tax is the calculated value. The two columns exist for jurisdictions where you might collect a different amount (e.g. invoice-level tax overrides). If you don’t override, expect them to match.

Zero-tax filter

The Sales Tax Liability report has a Zero-tax filter:

  • Include zero-tax: every invoice in the date range shows. This is the default for most shops.
  • Exclude zero-tax: leaves out
    • non-taxable Retail invoices, meaning a Retail sale with tax turned off. Invoices with the order type Retail Tax Exempt, and Wholesale invoices, still show.
    • invoices that come to $0, where the subtotal, tax and shipping add up to nothing because a trade or an adjustment offset the sale. Card fees aren’t counted in that test.

This is the same rule as legacy’s “Hide adjusted retail” store setting, and a shop that had that setting on starts with Exclude zero-tax already chosen. Either way you can switch it for any run, and Print, Excel, CSV and Email always match what’s chosen on screen. The filter doesn’t apply to the cash-basis version of the report.

Cash outlet invoices

Invoices whose Sales Outlet is Cash never show on the sales tax report, whatever the filters, the same as in legacy.

Cash-basis report (shops that report tax when paid)

Some shops report sales tax when an invoice is paid rather than when it’s sold. For them the report lists each taxable invoice in the period it became paid in full, with all of its tax, and the dates you pick are payment dates.

A return that you refunded shows in the period of the refund, with its tax as a negative amount, so it reduces the tax for that period.

Voided invoices

Voiding an invoice never changes a period you may already have filed. Instead:

  • A sale shows in the period of its invoice date, even if it was voided later. Rerunning that period gives the same tax you reported.
  • In the period it was voided, the invoice shows again as a Void row: the same figures, negative, dated the day it was voided, with “sold” and the original date under it. That negative tax is what you can take back on your next return.
  • An invoice dated and voided in the same period doesn’t appear at all, because the sale and its void cancel out.

On the cash-basis version, the same applies to the period the invoice was paid in full: it’s reversed in the period it was voided only if it had been paid off in an earlier one.

Excel and CSV mark these rows VOID, with the original sale date next to the customer’s name.

Returns work separately: a return invoice already carries negative tax in the month it’s written.

Which invoice document you can print

Email, Share, Print and Download PDF each offer up to three versions of the invoice, and which ones appear depends on the order itself — because these are tax records, not layouts:

The orderDocuments offered
Taxable (any type)Standard only
Not taxableStandard and Resale
Type is Retail Tax ExemptTax Exempt only

So a sale that charged tax can’t produce a resale certificate, and an exempt sale can’t be papered over with an ordinary invoice. When only one version applies — the common case for a taxable retail sale — the button just prints it, with no menu to choose from.

If you tick Taxable on a Retail Tax Exempt order the buttons switch off, because that combination contradicts itself. Clear Taxable, or change the Type, and they come back.

Tips

  • File the Sales Tax Liability report monthly with your state’s sales tax return.
  • The Tax Collected total should match what you remit to the state (down to the rounding rules — JewelTrak rounds per-line at 2 decimals).
  • For a customer who claims tax-exempt status, mark Taxable = 0 on the invoice and record their resale-certificate number on the contact record so the verification + audit trail lives in JewelTrak. See Resale Certificates for the capture + verify workflow.
  • If you ship to multiple states, set up a per-customer rate override or use the customer’s default address to drive the rate.