US payroll tax API

Payroll tax rules you can audit.

Federal and state withholding, unemployment, disability and paid-leave rules as clean JSON — effective-dated, versioned, and traced to the official document every figure came from.

Free sandbox No credit card Key in under a minute
GET /v1/rates/lookup
$ curl "…/v1/rates/lookup?work_state=CA&pay_date=2025-10-15" \
    -H "Authorization: Bearer $ITX_API_KEY"

200 OK · x-request-id: req_7hQ2kLp0aX1c

{
  "tax_code": "US-CA:SUI",
  "effective_from": "2025-01-01",
  "parameters": {
    "wage_base": "7000.00",
    "new_employer_rate": "0.034"
  },
  "version": { "number": 3, "published_at": "2025-01-06T15:02:11Z" },
  "sources": [
    { "url": "https://edd.ca.gov/…", "sha256": "4be1…" }
  ]
}
51
States + DC, plus federal
114
Tax programs tracked
0
Programs with a published version
0 edits
to published versions — changes are new versions
Why teams switch

The tax table your payroll engine can trust

Built for engineers who have to explain every number on a pay stub — to customers, to auditors and to themselves.

Effective-dated

Ask for a pay date and get the rules in force that day — before and after every mid-year change.

Traceable to the source

Each tax carries the official source URLs and the SHA-256 fingerprint of the exact documents we read.

Human-approved

An AI agent proposes, people approve. Nothing is published until a tax reviewer signs off.

Point-in-time history

Versions are immutable. Replay what the API answered on any past date with as_of.

Change feed

Poll one endpoint to learn what was published or superseded since your last sync.

Predictable JSON

snake_case, decimal strings for rates and money, request ids on every response, OpenAPI 3.1.

How the data is made

An AI agent does the reading. People do the approving.

Every version passes the same five steps. If anything doesn't add up, it stops and waits for a person.

Fetch

Only approved .gov sources. Each copy is fingerprinted; unchanged documents are skipped.

Extract

The agent reads the document twice, independently, into a strict schema.

Verify

Every value must appear in a verbatim quote, and both reads must agree.

Review

A tax reviewer sees the diff against what's live and approves or rejects.

Publish

A new immutable version goes live, effective-dated, and lands in the change feed.

See the full process
One call per paycheck

Everything that applies to a pay date, in one response

Pass the work state and pay date. Add a residence state and filing status if you have them. You get every federal and state tax in force, with the parameters your engine needs — and a list of anything not yet published, so nothing goes missing silently.

  • Rates and money as exact decimal strings — no float drift
  • meta.unavailable tells you what we can't answer yet
  • A request_id on every response for support
  • OpenAPI 3.1 spec for generated clients
const res = await fetch(
  "https://tax-api.itensiahr.com/v1/rates/lookup?work_state=CA&pay_date=2025-10-15&filing_status=single",
  { headers: { Authorization: `Bearer ${process.env.ITX_API_KEY}` } }
);
const { data, meta } = await res.json();

for (const tax of data.taxes) {
  console.log(tax.tax_code, tax.parameters);
}
if (meta.unavailable.length) console.warn("Not yet published:", meta.unavailable);
Coverage

Federal, all 50 states and DC

Income tax withholding, unemployment, disability, paid family leave and long-term care where a state has them. The map shows what is published right now — not what we plan to have.

All taxes published Half or more Some In the pipeline
See coverage by state and tax
Get started

From sign-up to first response in three steps

1

Create a free account

Your Sandbox key is shown once, right after sign-up. No card, no sales call.

2

Make a request

Call /v1/rates/lookup from your code, or try it in the playground first.

3

Upgrade when you ship

Move to a paid plan for production volume, the change feed and historical queries.

Built for

Teams that move money on payday

Payroll platforms

Replace spreadsheets and hand-keyed rate tables with an API your engine reads on every run.

HR & PEO software

Onboard employers in new states without researching each agency's publications.

Finance & forecasting

Model employer tax cost with the wage bases and rates that apply to a given date.

Audit & compliance

Show exactly which published rule produced a number, and what the source said at the time.

Pricing

Start free. Pay as you grow.

Every plan includes every state. You only pay for successful production requests.

Sandbox

Build and test your integration.

Free
No credit card
Get a free key
  • 1K requests / month
  • Federal + all 50 states and DC
  • 30 requests / minute
  • Hard monthly cap
  • Change feed
  • Historical as-of queries
  • Community support
  • Uptime SLA

Starter

For payroll products launching in a few states.

$149/mo
Billed monthly · 14-day trial
Start building
  • 25K requests / month
  • Federal + all 50 states and DC
  • 120 requests / minute
  • Overage $8 per 1,000
  • Change feed
  • Historical as-of queries
  • Email support
  • Uptime SLA

Enterprise

High volume, SLA and dedicated support.

$1,999/mo
Billed monthly · 30-day trial
Talk to sales
  • 2M requests / month
  • Federal + all 50 states and DC
  • 3,000 requests / minute
  • Overage $1 per 1,000
  • Change feed
  • Historical as-of queries
  • Dedicated support
  • 99.9% uptime SLA
FAQ

Questions, answered

Where does the data come from?

Only from official publications: the IRS, the Social Security Administration and each state's revenue and workforce agencies. Every tax in a response links to the documents it came from and the SHA-256 fingerprint of the exact copy we read.

Is AI deciding my tax rates?

No. An AI agent reads the official documents and proposes values, but every value must appear word-for-word in the source, two independent reads must agree, and a human tax reviewer approves each version before it is published. Nothing reaches the API without that approval.

What happens when a rate changes mid-year?

Rules are effective-dated. You ask for the rules in force on a pay date and get exactly those, before and after the change. The change feed tells you what was published or superseded since your last check.

Can I reproduce last quarter's numbers?

Yes. Published versions are never edited, only superseded. On Growth and above, pass as_of to see what the API would have answered at any past moment, which makes audits and amended returns reproducible.

Do you calculate the withholding for a paycheck?

Not today. The API returns the rates, wage bases, brackets and thresholds your payroll engine needs; your engine applies them to wages. Calculation endpoints are on the roadmap.

Is this legal or tax advice?

No. The data is provided to help software apply published rules. You remain responsible for your filings; consult a qualified professional for advice on your situation.

Stop maintaining tax tables by hand

Get a Sandbox key now and make your first request in minutes.