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 |
|---|---|---|
| gross | number | Required. Annual gross salary, 1 to 10,000,000. |
| status | string | Filing status. Defaults to single. See the full list below. |
| age | integer | Defaults to 35. Drives PRSI exemptions and the age credit. |
| second_income | number | Only for married_two_incomes. |
| pension | number | Annual employee pension contribution to an occupational scheme or PRSA. Relieved at the marginal rate, subject to the age-related limit. |
| auto_enrolment | boolean | Apply 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_card | boolean | Applies the reduced USC rates. |
| single_parent, home_carer, rent_tax_credit, state_pension_contributory | boolean | Apply 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.