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 | Release | Refresh |
|---|---|---|---|
plutus.sst_rates_boundaries | Streamlined Sales Tax rate and boundary files, one pair per state, as posted by each member state | Latest state files (for example 2026 Q4); the file name is returned with every rate as source_version | Checked 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 isambiguous, 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.
| Check | What it guards |
|---|---|
file_layout | Each file matches the SST layout; rejected lines stay under 1% |
state_rate_present, zip5_records_present | Every published state has a state rate and a 5-digit ZIP fallback |
boundary_rates_resolve | Every jurisdiction a boundary record assigns resolves to exactly one rate on the dates served |
rate_values_plausible | State rates at most 10%, combined general rates at most 20% |
row_count_range, row_count_change | Row counts within bounds; no state's rows drop by more than half |
unique_record_id, required_fields_present | One row per record key; no missing required fields |
enabled_states_covered | Every enabled state is either restaged or carried over with its current files |
benchmark_rates | Hand-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
- Streamlined Sales Tax Governing Board: Rate and Boundary Files
- Streamlined Sales Tax Governing Board: State Detail (member states)