NZ Payroll employee tax requests without KiwiSaverStatus return 400 from 2026-11-05
- Provider
- Xero
- Endpoint
POST /payroll.xro/2.0/Employees/{EmployeeID}/Tax- Effective
- 2026-11-05
- Severity
- critical
- Change
- required-field
- Status
- verified
What changed
From 2026-11-05, KiwiSaverStatus is required when creating or updating employee tax details in NZ Payroll, for every tax code except WT and NSW. Requests that omit it return 400 Bad Request. Xero says it will not provide test instances or workarounds.
What to do
Send KiwiSaverStatus explicitly in every POST to /payroll.xro/2.0/Employees/{EmployeeID}/Tax whose tax code is not WT or NSW. Get it from your own employee record or read the current tax details with a GET before updating. Treat a 400 on this call as a data error to show the user, not a reason to retry.
Sources
- Provider notice (2026-08-06)
- https://raw.githubusercontent.com/XeroAPI/Xero-OpenAPI/master/xero-payroll-nz.yaml
Check your code
bash
npx shapi-cli scan .shapi scan lists the call sites this change affects; shapi fix repairs them test-first when the advisory has an automatic fix. All advisories · Markdown · OSV · JSON