{
  "schema_version": "1.7.0",
  "id": "x_SHAPI-xero-nz-payroll-employee-tax-kiwisaverstatus-required",
  "modified": "2026-11-05T00:00:00Z",
  "published": "2026-08-06T00:00:00Z",
  "summary": "NZ Payroll employee tax requests without KiwiSaverStatus return 400 from 2026-11-05",
  "details": "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.\n\nSend 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.",
  "affected": [
    {
      "ecosystem_specific": {
        "provider": "xero",
        "endpoint": {
          "method": "POST",
          "path": "/payroll.xro/2.0/Employees/{EmployeeID}/Tax"
        },
        "change_class": "required-field",
        "trigger": {
          "any": true
        },
        "effective_date": "2026-11-05"
      }
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://developer.xero.com/changelog"
    },
    {
      "type": "WEB",
      "url": "https://raw.githubusercontent.com/XeroAPI/Xero-OpenAPI/master/xero-payroll-nz.yaml"
    }
  ],
  "database_specific": {
    "severity": "critical",
    "status": "verified",
    "url": "https://shapi.dev/osv/xero-nz-payroll-employee-tax-kiwisaverstatus-required.json"
  }
}
