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.
| 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. |
| 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/.
Dates matter. Employee PRSI steps from 4.20% to 4.35% on 1 October 2026, so
the answer for the same salary differs before and after that date. Every response includes
computed_for_date, resolved in Irish local time. 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 29 July 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.