Skip to main content
PaySlipIQ

PaySlipIQ Public API

Payslip 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.

5-line integration

Pick your language. Drop the snippet into your service. Replace the placeholder key.

cURL

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"}'

Node.js

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' }),
});

Python

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())

Authentication

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_xxx

Rate limits

Per-account limits enforced as token buckets. Burst of 2x for 5 seconds, then back to RPM.

Free

60 rpm

GBP 0 a month

  • - 60 requests per minute
  • - JSON responses
  • - Email support
  • - Anomaly + take-home endpoints

Pro

600 rpm

GBP 99 a month

  • - 600 requests per minute
  • - Webhook delivery
  • - Slack alerts
  • - Priority support

Enterprise

6000 rpm

Custom a month

  • - 6000 requests per minute
  • - Single sign-on
  • - Custom data residency
  • - Named account manager

Endpoint reference

POST /api/v1/analyse

Request body

FieldTypeRequiredDescription
grossnumberyesGross pay for the period.
taxCodestringyesUK PAYE tax code, for example 1257L or BR.
frequencyenumyes"monthly", "weekly" or "fortnightly".
payenumbernoIncome tax already deducted (optional).
ninumbernoNI already deducted (optional).
pensionnumbernoEmployee pension this period.
idempotencyKeystringnoUsed to dedupe replayed POSTs.

Response body

FieldTypeDescription
expectedNetnumberNet pay implied by 2026/27 PAYE rules.
anomaliesarrayPer-rule findings with severity and message.
takeHomeobjectAnnualised take-home breakdown.
taxCodeMetaobjectDecoded tax code allowance and notes.
requestIdstringTrace identifier for support.

Error codes

StatusNameDescription
400invalid_requestBody failed schema validation. Check required fields.
401unauthorisedAPI key missing or revoked. Send the key in X-API-Key.
402payment_requiredTier quota exceeded. Upgrade to Pro or Enterprise.
403forbiddenOrigin not in your allow list. Edit it in /developers.
404not_foundEndpoint or resource id does not exist.
409duplicate_requestIdempotency key has already been processed.
422unprocessableSchema valid but the values are unsupported (e.g. negative gross).
429rate_limitedTier RPM exceeded. Wait for the Retry-After header.
500server_errorPaySlipIQ side error. Status page links from /trust.

Ready to integrate?

Issue an API key in seconds from the developers dashboard. The Free tier is generous enough for staging and most internal HR dashboards.