US sales-tax rates

State rate and, where the state's revenue department publishes an open ZIP-keyed file (OH, WA on 2026-10-24), the combined state + local rate averaged across the jurisdictions in the ZIP with its minimum and maximum. coverage says what you got: zip_average, state_only (state rate plus the statewide population-weighted average and maximum local rates, from the dated 51-row table), or none (unknown prefix, territory, military mail). Address-level jurisdiction assignment is not offered. Table verified 2026-10-24; next review 2027-01-15.

About the coverage

State rates for the 50 states and DC from a dated table (verified 2026-10-24, next review 2027-01-15); ZIP-level combined averages for OH and WA from the revenue departments’ own files. Address-level jurisdiction assignment is not offered: it needs licensed boundary data. The per-state coverage table is on the "US sales-tax rates by ZIP" page.

GET/us/sales-tax

US sales-tax rate for a ZIP code

State rate and, where the state's revenue department publishes an open ZIP-keyed file (OH, WA on 2026-10-24), the combined state + local rate averaged across the jurisdictions in the ZIP with its minimum and maximum. coverage says what you got: zip_average, state_only (state rate plus the statewide population-weighted average and maximum local rates, from the dated 51-row table), or none (unknown prefix, territory, military mail). Address-level jurisdiction assignment is not offered. Table verified 2026-10-24; next review 2027-01-15.

Tiers
anonymousfreecreditsplan
Cost
1 call

Parameters

NameInTypeDescription
zip*querystringFive-digit ZIP; ZIP+4 accepted, the +4 is ignored.Example: 98101

Request

curl
curl "https://veriport.io/api/v1/us/sales-tax?zip=98101"

Response 200

The lookup, with its coverage.

FieldTypeDescription
zip*string
statestring | null
stateNamestring | null
coverage*"zip_average" | "state_only" | "none"
stateRatenumber | nullPercent. CA, UT and VA include their mandatory statewide local add-on (source convention, said in notes).
combinedobject | nullWith zip_average: the combined rate across the ZIP.
combined.averagenumber
combined.minnumber
combined.maxnumber
combined.jurisdictionsinteger
combined.periodstring
combined.fetchedOnstring (date)
combined.methodstring
statewideobject | nullWith state_only: statewide figures to estimate with.
statewide.averageLocalRatenumber | null
statewide.maxLocalRatenumber
statewide.averageCombinedRatenumber | null
statewide.localRatesboolean
verifiedOn*string (date)
nextReviewstring (date)
sources*object[]
notes*string[]
200 OK · application/json
{
  "zip": "98101",
  "state": "WA",
  "stateName": "Washington",
  "coverage": "zip_average",
  "stateRate": 6.5,
  "combined": {
    "average": 10.55,
    "min": 10.55,
    "max": 10.55,
    "jurisdictions": 1,
    "period": "2026Q4",
    "fetchedOn": "2026-10-24",
    "method": "Average of the combined rates of the ZIP+4 ranges in the ZIP, weighted by range width; min and max over those ranges."
  },
  "statewide": null,
  "verifiedOn": "2026-10-24",
  "nextReview": "2027-01-15",
  "sources": [
    {
      "title": "Washington State Department of Revenue — downloadable database",
      "url": "https://dor.wa.gov/taxes-rates/sales-use-tax-rates/downloadable-database",
      "consulted": "2026-10-24"
    }
  ],
  "notes": [
    "Address-level jurisdiction assignment is not offered: a ZIP is a postal route, not a tax boundary."
  ]
}

Headers: RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, RateLimit-Policy, X-Quota-Remaining, X-Tier.

Errors

  • 400invalid_parameter — A parameter is missing or malformed.
  • 401unauthorized — The API key is missing, unknown or revoked.
  • 402quota_exceeded — Monthly allowance and credits are used up.
  • 429rate_limited — Too many requests per second.

Sources