---
title: "Contracting against salaried employment, on what you actually keep"
method: POST
path: "/v1/contractor-vs-employee"
tags: ["Calculators"]
---

# Contracting against salaried employment, on what you actually keep

`POST /v1/contractor-vs-employee`

## Request

- Base URL: `https://api.calculate.co.nz`
- URL: `https://api.calculate.co.nz/v1/contractor-vs-employee`
- Auth: API key in header `X-API-Key`

Compare a contract rate with a salary honestly.

Almost everyone compares the two headline numbers as though they were the
same kind of number. They are not. An employee's package includes things a
contractor funds out of the rate:

  - Employer KiwiSaver, at least 3.5% from 1 April 2026, less ESCT. A
    contractor gets no match, so the same percentage costs them all of it.
  - Annual leave, ten sick days and eleven public holidays. Around 45 of
    the 260 working days in a year.
  - The ACC work levy, which an employer pays and a contractor does not.

So two comparisons come back. `cash_difference` is take-home against
take-home, and it is the one that flatters contracting because it ignores
all of the above. `package_difference` is the honest one. It is common for
a contract to be well ahead on cash and behind on package, and if you quote
only the first you have given bad advice.

`breakeven_contract_income` answers the question people actually have,
which is what they need to charge. It is solved by bisection rather than
scaled linearly, because the tax ladder is piecewise and a linear guess is
wrong at every bracket edge.

`annual_contract_income` is the year's total invoicing, NOT a rate to be
multiplied up. `billable_weeks` only expresses the implied rate.

GST is excluded throughout: over $60,000 of turnover registration is
compulsory, but GST is collected and passed on rather than earned. Also
absent, and worth saying out loud: notice periods and personal grievance
rights have real value and no dollar figure.

## Request body

- ContractorVsEmployeeRequest
  - `annual_gross_salary` number, required: The salaried offer, gross.
  - `annual_contract_income` number, required: Total expected to invoice across the year, GST exclusive. This is the year's total, not a rate: it is NOT scaled by billable_weeks.
  - `annual_business_expenses` number: Deductible business expenses for the year.
  - `billable_weeks` number: Weeks expected to bill. Used only to express the implied rate.
  - `acc_work_levy_pct` number: ACC work levy as a percentage of liable income. A contractor pays this; an employee's employer does. Varies a lot by industry.
  - `employer_kiwisaver_rate_pct` number: Employer contribution. Minimum 3.5% from 1 April 2026.
  - `own_kiwisaver_rate_pct` number: The person's own contribution rate, applied to both sides.
  - `annual_leave_days` number: Annual leave in the employment offer.
  - `has_student_loan` boolean: Applies to both sides.
  - `claim_ietc` boolean: Whether the independent earner tax credit is claimable.

## Response `200`

Both sides costed, the difference on cash and on package, and the breakeven rate.

- ContractorVsEmployeeResponse
  - `result` ContractorVsEmployeeResult, required
    - `employee_salary` number, required: Salary as given.
    - `employee_paye` number, required: PAYE on the salary.
    - `employee_acc_levy` number, required: ACC earners levy on the salary.
    - `employee_student_loan` number, required: Student loan deductions.
    - `employee_ietc` number, required: Independent earner tax credit.
    - `employee_kiwisaver_own` number, required: Their own KiwiSaver contribution.
    - `employer_kiwisaver_gross` number, required: Employer contribution before ESCT.
    - `employer_kiwisaver_esct` number, required: ESCT deducted from it.
    - `employer_kiwisaver_net` number, required: What actually reaches the fund. This is the part a contractor loses.
    - `employee_net_cash` number, required: Take-home pay.
    - `employee_leave_value` number, required: Annual leave, ten sick days and eleven public holidays at the daily rate. Around 45 of 260 working days.
    - `employee_package_value` number, required: Cash plus employer KiwiSaver plus paid leave. The number to compare.
    - `contract_income` number, required: Contract income as given.
    - `business_expenses` number, required: Expenses as given.
    - `contractor_taxable_income` number, required: Income less expenses.
    - `contractor_income_tax` number, required: Income tax on the taxable amount.
    - `contractor_acc_earners_levy` number, required: ACC earners levy.
    - `contractor_acc_work_levy` number, required: ACC work levy, which an employee does not pay.
    - `contractor_student_loan` number, required: Student loan deductions.
    - `contractor_ietc` number, required: Independent earner tax credit.
    - `contractor_kiwisaver_own` number, required: Their own contribution, with no employer match against it.
    - `contractor_net_cash` number, required: What the contractor keeps.
    - `contractor_billable_weeks` number, required: Billable weeks as given.
    - `contractor_implied_weekly_rate` number, required: Contract income divided by billable weeks.
    - `contractor_implied_daily_rate` number, required: Contract income divided by billable days.
    - `cash_difference` number, required: Contractor net cash less employee net cash. Positive favours contracting. This is the comparison that flatters contracting, because it ignores employer KiwiSaver and paid leave.
    - `package_difference` number, required: Contractor net cash less the employee's full package. Positive favours contracting. This is the honest comparison.
    - `better_on_cash` string, required: 'contractor' or 'employee'.
    - `better_on_package` string, required: 'contractor' or 'employee'.
    - `breakeven_contract_income` number, required: The contract income, before expenses, at which contracting matches the salaried package. Answers 'what do I need to charge'.
    - `notes` string[], required: What drove the result.
    - `excludes` string[], required: What this deliberately does not model.
  - `disclaimer` string, required: Scope and limits of this calculation.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/calculate/apis/calculate-co-nz-api.md) · [All operations](https://skmtc.dev/calculate/apis/calculate-co-nz-api/llms.txt) · [OpenAPI document](https://skmtc.dev/calculate/apis/calculate-co-nz-api/revisions/aa59a8e76614?raw)
