Free
60 rpm
GBP 0 a month
- - 60 requests per minute
- - JSON responses
- - Email support
- - Anomaly + take-home endpoints
PaySlipIQ Public API
One POST returns UK 2026/27 anomaly findings, expected take-home and a decoded tax code. JSON in, JSON out. 5-line integration. Rate-limited fairly across Free, Pro and Enterprise tiers.
Pick your language. Drop the snippet into your service. Replace the placeholder key.
curl https://payslipiq.co.uk/api/v1/analyse \
-H "X-API-Key: psk_live_xxx" \
-H "Content-Type: application/json" \
-d '{"gross":3500,"taxCode":"1257L","frequency":"monthly"}'import fetch from 'node-fetch';
const r = await fetch('https://payslipiq.co.uk/api/v1/analyse', {
method: 'POST',
headers: { 'X-API-Key': process.env.PSI_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ gross: 3500, taxCode: '1257L', frequency: 'monthly' }),
});import os, requests
r = requests.post('https://payslipiq.co.uk/api/v1/analyse',
headers={'X-API-Key': os.environ['PSI_KEY']},
json={'gross': 3500, 'taxCode': '1257L', 'frequency': 'monthly'})
print(r.json())All requests carry your live key in the X-API-Key header. Keys are issued from the developers dashboard. Never put a live key in a browser bundle. Rotate keys at any time. Revoking a key invalidates it instantly.
X-API-Key: psk_live_xxxPer-account limits enforced as token buckets. Burst of 2x for 5 seconds, then back to RPM.
60 rpm
GBP 0 a month
600 rpm
GBP 99 a month
6000 rpm
Custom a month
POST /api/v1/analyse
| Field | Type | Required | Description |
|---|---|---|---|
| gross | number | yes | Gross pay for the period. |
| taxCode | string | yes | UK PAYE tax code, for example 1257L or BR. |
| frequency | enum | yes | "monthly", "weekly" or "fortnightly". |
| paye | number | no | Income tax already deducted (optional). |
| ni | number | no | NI already deducted (optional). |
| pension | number | no | Employee pension this period. |
| idempotencyKey | string | no | Used to dedupe replayed POSTs. |
| Field | Type | Description |
|---|---|---|
| expectedNet | number | Net pay implied by 2026/27 PAYE rules. |
| anomalies | array | Per-rule findings with severity and message. |
| takeHome | object | Annualised take-home breakdown. |
| taxCodeMeta | object | Decoded tax code allowance and notes. |
| requestId | string | Trace identifier for support. |
| Status | Name | Description |
|---|---|---|
| 400 | invalid_request | Body failed schema validation. Check required fields. |
| 401 | unauthorised | API key missing or revoked. Send the key in X-API-Key. |
| 402 | payment_required | Tier quota exceeded. Upgrade to Pro or Enterprise. |
| 403 | forbidden | Origin not in your allow list. Edit it in /developers. |
| 404 | not_found | Endpoint or resource id does not exist. |
| 409 | duplicate_request | Idempotency key has already been processed. |
| 422 | unprocessable | Schema valid but the values are unsupported (e.g. negative gross). |
| 429 | rate_limited | Tier RPM exceeded. Wait for the Retry-After header. |
| 500 | server_error | PaySlipIQ side error. Status page links from /trust. |
Issue an API key in seconds from the developers dashboard. The Free tier is generous enough for staging and most internal HR dashboards.