Benchmarks
We compare combined rates with official state answers, reporting correct, wrong and declined lookups separately.
Address in
90 W Broad St, Columbus, OH
Geocode → map → calculate
Sales tax rate out
Pricing below compares the work behind the rate.
Held-out provider comparison
On 22 October 2026, OpenTaxRate matched 275 of 277 held-out addresses, with 0 wrong rates and 2 declines. With self-hosted geocoders only: 269 correct, 0 wrong, 8 declined.
| Service | % correct |
|---|---|
| Avalara AvaTax | 99.6% n=277 |
| OpenTaxRate — with geocoding providers | 99.3% n=277 |
| TaxJar | 98.2% n=277 |
| OpenTaxRate — self-hosted geocoders only | 97.1% n=277 |
| Zip-Tax Earlier sample: 71 of 255 addresses, 5 per state | 93.0% n=71 |
| TaxCloud | 89.6% n=67 |
| APIVerve Separate sample: 87 addresses; ZIP code only | 87.4% n=87 |
| Geoverio | 82.3% n=277 |
| OpenSalesTax | 82.3% n=277 |
| Lovat | 78.3% n=277 |
How we tested
277 random addresses across the 50 states and DC, held out from development and labeled with each state's own published rate, tested on 22 October 2026. Correct means the state's rate to within 0.005 percentage points; a refusal counts as not correct.
| Service | Statewide rate | Street ranges | Map | California (CDTFA) | All |
|---|---|---|---|---|---|
| Avalara AvaTax | 48 / 0 / 0 | 139 / 1 / 0 | 83 / 0 / 0 | 6 / 0 / 0 | 276 / 1 / 0 |
| OpenTaxRate — with geocoding providers | 48 / 0 / 0 | 138 / 0 / 2 | 83 / 0 / 0 | 6 / 0 / 0 | 275 / 0 / 2 |
| TaxJar | 48 / 0 / 0 | 136 / 4 / 0 | 82 / 1 / 0 | 6 / 0 / 0 | 272 / 5 / 0 |
| OpenTaxRate — self-hosted geocoders only | 48 / 0 / 0 | 136 / 0 / 4 | 79 / 0 / 4 | 6 / 0 / 0 | 269 / 0 / 8 |
| Zip-Tax | 11 / 1 / 0 | 29 / 0 / 0 | 24 / 4 / 0 | 2 / 0 / 0 | 66 / 5 / 0 |
| TaxCloud | 18 / 0 / 0 | 2 / 4 / 0 | 40 / 3 / 0 | — | 60 / 7 / 0 |
| APIVerve | 24 / 0 / 0 | 32 / 5 / 0 | 18 / 5 / 0 | 2 / 1 / 0 | 76 / 11 / 0 |
| Geoverio | 47 / 1 / 0 | 119 / 16 / 5 | 56 / 20 / 7 | 6 / 0 / 0 | 228 / 37 / 12 |
| OpenSalesTax | 42 / 6 / 0 | 112 / 28 / 0 | 69 / 14 / 0 | 5 / 1 / 0 | 228 / 49 / 0 |
| Lovat | 48 / 0 / 0 | 98 / 42 / 0 | 68 / 15 / 0 | 3 / 3 / 0 | 217 / 60 / 0 |
- Statewide: one rate everywhere (8 places, including DC). Street ranges: the state publishes address lists (25 states). Map: the address is placed on tax maps (17 states). California: the state's own lookup.
- In Alaska, Colorado and Missouri the state's own lookup is run by Avalara, so Avalara is checked against itself there. OpenTaxRate is shown without those lookups. Leaving out those 18 addresses, OpenTaxRate got 259 of 259 and Avalara 258 of 259.
- OpenTaxRate ran with every geocoder it uses and without the states' own live lookups. It gave no wrong rates and refused 2 addresses, both in Missouri, whose files don't list the street and whose ZIP+4, looked up from Geocodio, the map doesn't confirm. Missouri's own lookup (STATE_LOOKUPS=MO, which the hosted API uses) answers both correctly; with it, OpenTaxRate gets all 277.
- Self-hosted geocoders only: 269 of 277 right, 0 wrong, 8 refused. Four are in street-range states where the street isn't listed and its ZIP has more than one rate (two in Missouri, which its own lookup answers), three couldn't be placed by any of the three geocoders, and one lies 40 m from the Eunice, New Mexico city line.
- Zip-Tax and APIVerve weren't asked this sample: Zip-Tax's figure is from an earlier sample of 255 addresses, 5 per state, of which it was asked 71, and APIVerve's from a separate random sample of 87 addresses (it takes a ZIP code, not a street address). TaxCloud was asked 67 of the 277.
- Geoverio was asked the same 277 officially labeled evalA addresses with full street addresses and default caching. Resolved numeric rates and explicit no-sales-tax zero rates are answers; manual-lookup responses count as refusals. Raw responses are retained; rates were not corrected to match official labels.
- OpenSalesTax v0.59.0 ran locally from its published data dump, asked by ZIP code (it takes no street address). Its wrong rates are mostly ZIP codes that cross city or district lines, Colorado home-rule cities it does not model, and DC, where it charges 7% though DC postponed that increase to 1 October 2027.
Separately, the development benchmark on 2026-10-23 scored 5,301 of 5,317 correct, 4 wrong and 12 declined. Public datasets, scoring rules and how to run it ↗
Reading these numbers
- We tune on the development set; the held-out set is the fair test.
- Without a key, only our own geocoders run, so more lookups are declined.
- Only the combined rate is scored, not the breakdown.
- Zero wrong in 275 still allows an error rate up to about 1.1%.
Pricing
OpenTaxRate is free without a key, or $1.95 per 1,000 lookups with one; self-hosted, it costs $0 plus hosting with its own geocoders. Most other services sell monthly plans.
Shaded figures are our estimates; the rest are the vendors' published prices, as of 2026-10-22.
| Service | Published price | Per 1,000 lookups (est.) |
|---|---|---|
| OpenTaxRate API | Free without a key; $1.95 per 1,000 lookups with one | $0–1.95 |
| OpenTaxRate, self-hosted | Free on your own server: $0 with only its own geocoders (Nominatim, Photon, Pelias), or the providers' prices for any commercial geocoders you add keys for | $0–1.14 + hosting (sample mix) |
| Avalara AvaTax | From $69 per state per month | Depends on states / contract1 |
| TaxJar | $99/mo for 200 orders | $49.501,2 |
| Zip-Tax | $29/mo, then from $0.0242 per call | Allowance unclear |
| APIVerve | $29.99/mo for 200,000 credits (2 per call); free plan 200 credits a month | $0.303 |
| TaxCloud | $79/mo for 200 orders | $39.501,2 |
| Geoverio | $0.50 per 1,000 PAYG; $9/mo for 100,000 requests; free 1,000/mo | $0.50 PAYG / $0.09 at capacity |
| Lovat | €20 per 5,000 extra transactions, plus a plan fee | €0.40 + plan2,3 |
| API Ninjas | Developer $59/mo for 100,000 calls; $39/mo with annual billing | $0.59 at capacity |
| TaxRate.io | $9.99/mo for 10,000; $19.99/mo for 100,000 requests | $0.20–1.00 at capacity3 |
| SalesTaxAPI | $19/mo for 2,000 requests; extra requests $5 per 5,000 | $9.50 entry / $1.00 extra3 |
| Stripe Tax | $0.05 per calculation | $50 |
| Quaderno | $83/mo for 1,000 transactions | $8.301 |
| Anrok | $50 per market per month for ecommerce; $100 otherwise | $5–100 (one market)1 |
| Zip2Tax | $1,500/yr for 1,000 lookups a month | $125 |
- 1 The plan also covers filing, registration or other compliance work, so this is the whole plan fee spread over lookups, not a per-call price like Stripe's.
- 2 A lookup counts as a fraction of an order or transaction (1/10).
- 3 Rates by ZIP code, not street address.
How we estimated, and sources
Each estimate uses the plan and utilization stated below; several assume the entire allowance is used. At lower volume the effective cost rises. Overage prices exclude base fees, and per-state plans do not imply nationwide coverage. These are planning figures, not quotes. Prices change; dates are when we read each page.
- OpenTaxRate API. Our own price. Without a key, lookups use only our own geocoders and cost nothing. With a key they may also use commercial geocoders, at $1.95 per 1,000 lookups that return a rate; declined addresses aren't charged. OpenTaxRate pricing (2026-10-22)
- OpenTaxRate, self-hosted. No fee from us. Provider counts below are scaled to 1,000 lookups from a 309-address run, not raw counts for 309 addresses. For example, 78 Geocodio calls ÷ 309 × 1,000 ≈ 252. This models the observed provider mix at the listed unit prices, not a maximum or an invoice. Different addresses, retries, storage rights and provider plans change the cost; HERE’s current public page does not expose its unit rate.
- With only its own geocoders, no provider is paid: $0 plus hosting.
- Geocodio: 252 calls × $1.00 per 1,000 = $0.25
- Geocodio ZIP+4 standardization: 243 × 2 lookups × $1.00 per 1,000 = $0.49
- HERE: 246 calls × $0.83 per 1,000 = $0.20
- Mapbox: 104 calls × $0.75 per 1,000 = $0.08
- Esri: 42 calls × $0.50 per 1,000 = $0.02
- Google: 19 calls × $5.00 per 1,000 = $0.10
- Census and OpenStreetMap (Pelias, Photon): free
- Total about $1.14 per 1,000 at this provider mix; without Google, about $1.04. Free tiers and provider terms apply separately. Mapbox’s $0.75 rate is for temporary results; permanent storage starts at $5 per 1,000 with no free tier. Using that rate adds about $0.44 at this mix. Hosting and other paid services are excluded.
- Avalara AvaTax. The published $699/year is per state for a compliance bundle, equivalent to $58.25/month. At 2,000 lookups/month in one paid state, that is $29.13 per 1,000. It is not a nationwide API quote; API eligibility and state coverage need confirmation. The old rates-by-address documentation URL now redirects to generic developer navigation, so it no longer substantiates a free production API. Avalara pricing (2026-10-22) · AvaTax rates by address (2026-10-22)
- TaxJar. $99 ÷ 2,000 lookups, on Professional, the cheapest plan with the API. TaxJar pricing (2026-10-22)
- Zip-Tax. Growth is $29/month and overage starts at $0.0242/call ($24.20 per 1,000 extra calls). The public page does not tie an included call allowance to this price; the calculator’s default 15,000 must not be treated as the allowance. The free plan advertises 100 calls/month; our account stopped after 100 total. Zip-Tax pricing (2026-10-22)
- APIVerve. $29.99 ÷ 100,000 calls on Starter, the vendor's own figure. Larger plans come to $0.20 and $0.15. The API takes a 5-digit ZIP code. APIVerve pricing (2026-10-22) · Sales tax API (2026-10-22)
- TaxCloud. $79 ÷ 2,000 lookups. The price is from our 2026-10-21 reading; on 2026-10-22 the page showed order tiers without prices. TaxCloud pricing (2026-10-21)
- Geoverio. PAYG has no monthly fee. Starter: $9 ÷ 100,000 × 1,000 = $0.09 only when fully used. Benchmarked with full street addresses on the same 277 officially labeled evalA cases; see the measured accuracy column. Low subscription unit prices depend on utilization. Geoverio pricing (2026-10-22) · Sales tax API documentation (2026-10-22)
- Lovat. 10 lookups count as one transaction, so €20 covers 50,000 lookups past the plan's allowance. The plan fee isn't published. Lovat is now called Lappa. Lovat transaction pricing (2026-10-22)
- API Ninjas. $59 ÷ 100,000 × 1,000. Sales tax documentation accepts street_address with city and state; combined rates and commercial use require a paid plan. Developer disallows data caching/storage. Not benchmarked; street input alone does not establish rooftop accuracy. API Ninjas pricing (2026-10-22) · Sales tax API (2026-10-22)
- TaxRate.io. Basic: $9.99 ÷ 10,000 × 1,000 ≈ $1.00; Advanced: $19.99 ÷ 100,000 × 1,000 ≈ $0.20. The vendor describes US ZIP-level lookups. Public pages are old; current availability and billing need confirmation. Not benchmarked. TaxRate.io pricing (2026-10-22) · TaxRate.io coverage (2026-10-22)
- SalesTaxAPI. Starter: $19 ÷ 2,000 × 1,000 = $9.50. Extra requests: $5 ÷ 5,000 × 1,000 = $1, plus the plan fee. Enterprise is $199 for 100,000 ($1.99 per 1,000 at capacity). Documentation requires state and 5-digit ZIP, not a street address. Not benchmarked. SalesTaxAPI pricing (2026-10-22) · SalesTaxAPI docs (2026-10-22)
- Stripe Tax. $0.05 × 1,000, using the Calculations API alone. With the Transaction API, each $0.50 transaction includes 10 calculations. Stripe Tax pricing (2026-10-22) · Stripe: how Tax is billed (2026-10-22)
- Quaderno. $83 ÷ 10,000 API calls on Business, fully used. Startup is $41 for up to 2,500 API calls ($16.40 per 1,000 at capacity); Hobby is $24 for 250 ($96 per 1,000). These are different utilization scenarios, not the bill for 1,000 calls. Quaderno pricing (2026-10-22)
- Anrok. Starter costs $50 per market per month for ecommerce and $100 otherwise. At 1,000 lookups/month in one market, that is $50–100 per 1,000; at 10,000, $5–10. Each registered US state is a separate market. API eligibility and high-volume fees depend on contract; this is not a nationwide API quote. Anrok pricing (2026-10-22)
- Zip2Tax. $1,500 ÷ 12,000 lookups, for the street-address database. The ZIP-level one is $389 a year. Zip2Tax pricing (2026-10-22)
Accuracy vs. price
2,000 lookups per month. Higher and further left is better.
○ Conditional price or separate sample. Details on the benchmarks page.
Appendix
Chart data and assumptions
| Service / assumptions | Correct / asked | USD / 1,000 | Comparison |
|---|---|---|---|
| 99.3% · 275/277 | $1.95 | Not dominated in this comparison | |
| 82.3% · 228/277 | $0.50 | Not dominated in this comparison | |
| 89.6% · 60/67 | $39.50 | Conditional; excluded from frontier | |
| 98.2% · 272/277 | $49.50 | Dominated in this comparison | |
| 99.6% · 276/277 | $29.13 | Conditional; excluded from frontier | |
| 87.4% · 76/87 | $14.99 | Separate sample; excluded from frontier |
OpenTaxRate API. Keyed plan; first 100 free excluded. The measured run enabled all configured providers with Geocodio’s quota exhausted; production quotas and budgets can change coverage.