Methodology · US Sales Tax Rates API

Methodology: US Sales Tax Rates

Rates and boundaries come from the rate and boundary files each Streamlined Sales Tax member state posts, for the states GET /v1/sales-tax/coverage lists as published. The files are checked twice a month; a state is restaged only when its files change. A release is published only after every jurisdiction a boundary record assigns resolves to exactly one rate on the dates served, rates are plausible, and hand-verified benchmark rates read from each state's own rate tables match.

By New Odyssey · Published · Markdown

Sources

Dataset, source and refresh
DatasetSourceReleaseRefresh
plutus.sst_rates_boundariesStreamlined Sales Tax rate and boundary files, one pair per state, as posted by each member stateLatest state files (for example 2026 Q4); the file name is returned with every rate as source_versionChecked on the 2nd and 16th of each month; stale after 100 days

Published states (17 as of 2026-10-21): IN, KY, MI, MN, ND, NE, NJ, NV, OK, RI, SD, TN, UT, VT, WI, WV, WY. GET /v1/sales-tax/coverage is the authoritative list, with each state's files, their checksums and the dates served. Every other state answers unsupported.

How values are produced

  • Files are found through the directory index of the SST site and checked with HEAD requests (ETag, Last-Modified, Content-Length); a state is restaged only when a file changed or its served date range moved.
  • Rates are exact decimal fractions as the state publishes them: general and food/drug, each intrastate and interstate.
  • Lookups fall back from address range to ZIP+4 to 5-digit ZIP, and say which method matched (match.method) and how confident it is. A 5-digit ZIP that spans several jurisdiction sets is ambiguous, with every candidate; no single rate is chosen.
  • Addresses are normalised deterministically (no geocoding); the state files are normalised the same way.
  • Each state is served for dates from five years before its latest file quarter to the end of that quarter. Dates outside that range are unsupported, so an unposted quarter is never answered from older files.
  • Rows a state file gets wrong are repaired only where the fix is unambiguous (for example ZIP codes written without their leading zero), and each repair is counted; otherwise they are left out.

Validation checks

Every release runs the dataset's required checks before it can become active. A blocking check that fails stops the release, and the previous one keeps serving. Records that did not change keep their original published_at, and every record carries a provenance block with its source_url, the source snapshot it was read from and the validation status of its release.

Checks run on each release
CheckWhat it guards
file_layoutEach file matches the SST layout; rejected lines stay under 1%
state_rate_present, zip5_records_presentEvery published state has a state rate and a 5-digit ZIP fallback
boundary_rates_resolveEvery jurisdiction a boundary record assigns resolves to exactly one rate on the dates served
rate_values_plausibleState rates at most 10%, combined general rates at most 20%
row_count_range, row_count_changeRow counts within bounds; no state's rows drop by more than half
unique_record_id, required_fields_presentOne row per record key; no missing required fields
enabled_states_coveredEvery enabled state is either restaged or carried over with its current files
benchmark_ratesHand-verified combined rates for real addresses and ZIP+4s, read from each state's own rate tables (not the SST files), must match

Known limits

  • Rates, not tax due. No product taxability, sourcing, nexus or exemption rules. See How sales tax rates by address work.
  • ZIP-level states. Some states (for example Minnesota, North Dakota, Utah and West Virginia) publish ZIP-level boundaries only, so street addresses match at ZIP+4 or ZIP level.
  • Single-rate states (for example Indiana, Kentucky, Michigan, New Jersey and Rhode Island) map every ZIP to the state rate. New Jersey's Urban Enterprise Zone and Salem County reduced rates apply only to qualified sellers and are not applied.
  • Nebraska Good Life Districts are not applied; affected responses carry a notice.
  • Not included: states outside the Streamlined Sales Tax agreement, tax calculation on a transaction, lodging, excise and other special taxes.

Data from the Streamlined Sales Tax Governing Board rate and boundary files, as posted by each member state. The Streamlined Sales Tax Governing Board does not certify Olympus or its use of the data, and Olympus is not a Certified Service Provider.

Sources