Skip to main content

Tax API Irish PAYE, USC and PRSI as JSON

The engine behind this site, callable directly. Free, no API key, no sign-up.

Quick start

One GET request returns take-home pay for a gross salary. No key, no headers, no rate plan to sign up for.

curl "https://irishpaye.ie/api/v1/calculate?gross=60000&status=single&age=35"

Responses are JSON, cacheable for 24 hours, and CORS is open, so you can call this straight from a browser. Every endpoint is a GET with no side effects.

Endpoints

GET /api/v1/calculate

Take-home pay for a gross salary. gross is required; everything else is optional and falls back to the engine's own defaults. Booleans take true or false (1/0, yes/no and on/off also work); any other value is refused with a 400 rather than guessed.

Parameter Type Notes
grossnumberRequired. Annual gross salary, 1 to 10,000,000.
statusstringFiling status. Defaults to single. See the full list below.
ageintegerDefaults to 35. Drives PRSI exemptions and the age credit.
second_incomenumberOnly for married_two_incomes.
pensionnumberAnnual employee pension contribution to an occupational scheme or PRSA. Relieved at the marginal rate, subject to the age-related limit.
auto_enrolmentbooleanApply My Future Fund auto-enrolment (live since 1 January 2026). Not interchangeable with pension: these contributions get no income tax relief, so passing them as pension would relieve them and overstate take-home. Adds an auto_enrolment block to breakdown.
medical_cardbooleanApplies the reduced USC rates.
single_parent, home_carer, rent_tax_credit, state_pension_contributorybooleanApply the corresponding credit or exemption.

GET /api/v1/rates/2026

Every rate, band, threshold and credit the engine uses, each with the Revenue page it came from. Read directly off the engine's constants, so it cannot drift from what the calculator actually applies.

GET /api/v1/

Machine-readable discovery document listing endpoints, parameters, valid filing statuses and rate limits.

Filing statuses

All twelve statuses Revenue recognises are supported. Pass the value on the left as status.

single                 married_one_income     married_two_incomes
one_parent             widowed_no_children    widowed_children
widowed_bereavement    widowed_parent_y1      widowed_parent_y2
widowed_parent_y3      widowed_parent_y4      widowed_parent_y5

Limits, errors and versioning

Rate limits. 120 requests a minute and 5,000 a day per IP. Exceeding either returns HTTP 429 with a JSON body. If you need more, get in touch.

Errors. A rejected parameter returns HTTP 400 with error.code, a human-readable error.message, and error.fields naming each field that failed. Nothing is guessed or silently coerced.

Versioning. The version is in the path. Within v1 only additive changes are made: new response keys and new optional parameters may appear, but existing keys will not be renamed or removed. A breaking change would ship as /api/v2/.

PRSI changes mid-year. Employee PRSI steps from 4.20% to 4.35% on 1 October 2026. Annual figures apply each rate to the part of the year it covers (nine months at 4.20%, three at 4.35%), so the monthly figure is an average: a payslip from October to December deducts slightly more PRSI than it. The default tax year also moves forward when a new Budget's rates are registered, and every response states the tax_year it used and the computed_for_date. Re-query rather than storing a figure indefinitely.

Privacy. Nothing you send is stored. There are no accounts, no keys and no request logging beyond an anonymous rate-limit counter, so no salary figure is ever retained.

Accuracy and licence

The API runs the same engine as the website, so a figure here always matches the figure on the page. Rates were last verified against Revenue's published tables on 6 October 2026. See methodology and sources for how that verification works.

Free to use, including commercially, with attribution to IrishPAYE.ie. Results are estimates for planning and are not tax advice.

Building something with it, or need higher limits, historical tax years or a support commitment? Get in touch.