1. Home
  2. Library
  3. Tool reference

Estimate New Zealand employee pay-run cost.

LiveNew Zealand1 credit

What it does

Work out what one employee really costs each pay: PAYE, KiwiSaver and employer contribution tax, a minimum-wage check, and the dated payday filing and PAYE payment deadlines.

Ask your AI

Estimate New Zealand employee pay-run cost. Ask me for any detail you need first, then show the result with its source and date, and list anything a person should check.

What comes back

Covers tax codes M and M SL with weekly, fortnightly, four-weekly or monthly pay.

Good to know

  • Covers tax codes M and M SL with weekly, fortnightly, four-weekly or monthly pay.
  • An ACC employer levy rate is your own estimate if you supply one.
  • Awards, leave accrual, holiday pay and secondary tax codes are outside this estimate.
For developers
Tool IDnz_employee_cost
ServerNew Zealand
Credit behaviour1 credit

Input schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "tax_year": {
      "type": "string",
      "enum": [
        "2025-26",
        "2026-27"
      ]
    },
    "gross_pay": {
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    },
    "pay_frequency": {
      "type": "string",
      "enum": [
        "weekly",
        "fortnightly",
        "four_weekly",
        "monthly"
      ]
    },
    "payday": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "hours_worked": {
      "type": "number",
      "minimum": 0.01,
      "maximum": 1000
    },
    "tax_code": {
      "type": "string",
      "enum": [
        "M",
        "M SL"
      ]
    },
    "kiwisaver_employee_rate": {
      "type": "string",
      "enum": [
        "3",
        "4",
        "6",
        "8",
        "10",
        "none",
        "3.5"
      ]
    },
    "employer_kiwisaver_rate_percent": {
      "description": "Employer KiwiSaver contribution rate as a percent. If omitted, uses 3% for 2025-26 or 3.5% for 2026-27.",
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "acc_employer_levy_rate_percent": {
      "description": "Optional user-supplied ACC employer levy estimate rate as a percent of gross pay. No ACC rate is inferred or looked up.",
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "esct_rate_threshold_income": {
      "description": "IRD's ESCT threshold amount: prior-year salary or wages plus gross employer contributions for an employee employed for the whole previous tax year; otherwise the current-year estimate including employer contributions. The selected rate stays fixed for the tax year.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    },
    "paye_payment_schedule": {
      "type": "string",
      "enum": [
        "monthly",
        "twice_monthly"
      ],
      "description": "Use monthly when the employer's connected-business annual PAYE plus ESCT is below NZD 500,000; otherwise use twice_monthly."
    }
  },
  "required": [
    "tax_year",
    "gross_pay",
    "pay_frequency",
    "payday",
    "hours_worked",
    "tax_code",
    "kiwisaver_employee_rate",
    "paye_payment_schedule"
  ],
  "additionalProperties": false
}

Shared output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "summary": {
          "type": "string"
        },
        "data": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "executionId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "creditsCharged": {
          "type": "number",
          "minimum": 0
        },
        "usage": {
          "type": "object",
          "properties": {
            "credits_charged": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "credits_remaining": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "credits_charged"
          ],
          "additionalProperties": false
        }
      },
      "required": [
        "summary",
        "data",
        "creditsCharged"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "error": {
          "type": "object",
          "properties": {
            "code": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "retryable": {
              "type": "boolean"
            }
          },
          "required": [
            "code",
            "message",
            "retryable"
          ],
          "additionalProperties": false
        },
        "usage": {
          "type": "object",
          "properties": {
            "credits_charged": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "credits_remaining": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "credits_charged"
          ],
          "additionalProperties": false
        }
      },
      "required": [
        "error"
      ],
      "additionalProperties": false
    }
  ]
}

Ready to use this tool?

Connect Aroai to your AI and try a request.