Taxability Information Codes (TICs)
Taxability Information Codes (TICs)
Product-specific tax rules for clothing, food, software, and more
Available on Pro and Enterprise plans. TICs require the
product_rates entitlement on your API key. If your key doesn’t
carry it, any request with a taxabilityCode parameter returns
response code 113. See Response Codes
for the full list.
Not every product is taxed at the default sales tax rate. Most states apply reduced rates, exemptions, or thresholds to specific categories like clothing, groceries, prescription medication, software, and digital goods. Ziptax’s Taxability Information Codes (TICs) let you attach a product category to a rate request and get back the rules that actually apply to that product in that jurisdiction.
When to use a TIC
Most integrations don’t need TICs at first. The default sales tax rate is correct for general merchandise in most places. You should attach a TIC when:
- You sell categories that are commonly taxed differently (clothing, groceries, SaaS, digital downloads, medical items).
- Your team is filing returns and needs line-item detail showing why a reduced rate or exemption was applied.
- You’re operating in states with aggressive category carve-outs (Minnesota on clothing, New York on apparel under $110, Texas on food and medicine, and so on).
If you’re selling a mix, the right pattern is to store a TIC on each product in your catalog and pass it through on the rate request at checkout.
The TIC catalog
Ziptax publishes the full list of supported codes at
GET /data/tic. The feed is flat. Each entry is a row with an id, a
parent (for grouping into categories), a short title, and a longer
label:
Pulling the feed
Caching
The catalog changes rarely. New categories may be added, but existing IDs are stable. Pull it once, store it in your own database, and refresh on a weekly or monthly cadence. The feed has a separate rate limit of 100 requests per minute, so don’t use it as a per-request lookup. Treat it as a reference table.
Don’t call /data/tic on every product view in your storefront. Cache
the list server-side and ship a read replica to your catalog service
instead.
Attaching a TIC to a rate request
Pass the taxabilityCode query parameter on any
GET /request/v60 call:
The base response fields (baseRates, taxSummaries) are unchanged.
Ziptax adds a productDetail object with the TIC metadata and the
rateRules that apply in this jurisdiction right now:
Reading the rateRules array
Each rule describes how a single jurisdiction treats this product category, filtered to rules active on the current date:
Common shapes
- Fully exempt (prescription drugs in most states):
effectiveTaxRate: 0,percentTaxable: 0. - Reduced rate (grocery food in Illinois):
effectiveTaxRate: 0.0175instead of the normal 6.25%. - Threshold exemption (clothing in New York under $110):
exemptUnder: 110, meaning anything under $110 is exempt and anything above is taxed normally. - Blended (Tennessee single-article tax): use
sat_item_totalalongside the TIC so Ziptax can compute the blended rate.
Worked example
A California retailer selling a $120 sweater to an Orange County
address passes TIC 10010 (Clothing). California doesn’t exempt
clothing at this price, so productDetail.rateRules for the CA
jurisdiction looks like the general merchandise rule and
taxSummaries[0].rate is the standard 7.75% (at the time of writing).
The same request into a New York address under $110 would return a
rule with exemptUnder: 110 and a 0% effective rate, so your app
should collect $0 in tax on that line.
Integration checklist
- Pull
/data/ticonce, store it, refresh weekly. - Let merchants or your catalog service assign a TIC to each product (or default to “general merchandise” if unassigned).
- On checkout, send one
/request/v60call per taxable line or one call per destination with the dominant TIC, depending on your mix. - Read
productDetail.rateRulesfor that jurisdiction and apply theeffectiveTaxRate/exemptUnder/exemptOverlogic yourself, or trusttaxSummaries[0].rateif Ziptax’s adjustment is sufficient. - Log the raw
productDetailresponse on every transaction. It’s the evidence trail you’ll want at filing time.
