Second Job / Side Hustle Tax Bill at IR3 Time 2025-26 & 2026-27 — Why You Owe Money (IRD)
Having two jobs or a side hustle is the #1 cause of unexpected NZ tax bills at year-end. How a wrong or stale M + S/SH/ST secondary code under-withholds, what IR3 reveals, and how to avoid a surprise in 2026-27. Includes worked examples at $70k, $95k, and $140k combined.
Published 21 April 2026 · Reviewed by NZ Tax Tools Editorial Desk · 8 min read
Side-Hustle Tax Calculator →
Extra IR3-time tax & ACC earner levy on freelance / contract / Airbnb / gig income when you also have a PAYE day job. Includes monthly set-aside.
Two jobs. Side-gig Uber on Friday nights. Selling on Etsy alongside the day job. All of these create the single most common cause of unexpected NZ tax bills at year-end: a secondary tax code that doesn’t match your actual combined income.
This guide explains how NZ’s M + S/SH/ST/SA tax code system works, why a wrong or stale secondary code causes under-withholding while a correctly-matched one usually doesn’t, why the problem only surfaces at IR3 or automatic-assessment time, and how to avoid the wash-up shock in 2026-27. Covers 2025-26 and 2026-27.
Want a fast sanity check? Our tax code checker recommends the correct code based on your combined income. The take-home pay calculator lets you confirm the number against your payslip.
The Mechanics — How M + Secondary Codes Interact
NZ has one set of marginal brackets and two different withholding systems sitting on top of them.
The brackets (2025-26 & 2026-27 same structure):
| Income range | Marginal rate |
|---|---|
| $0 – $15,600 | 10.5% |
| $15,601 – $53,500 | 17.5% |
| $53,501 – $78,100 | 30% |
| $78,101 – $180,000 | 33% |
| Over $180,000 | 39% |
The primary code (M or ME): your main job is paid as if it were your only income. The employer applies the progressive brackets — you get the tax-free-ish slice through the bottom bracket first, then step up.
The secondary codes (SB / S / SH / ST / SA): flat rates applied to every dollar the secondary employer pays you. IRD tells you which rate to pick based on total combined income from all sources:
| Code | Rate | Use when combined income is… |
|---|---|---|
| SB | 10.5% | $15,600 or less |
| S | 17.5% | $15,601 – $53,500 |
| SH | 30% | $53,501 – $78,100 |
| ST | 33% | $78,101 – $180,000 |
| SA | 39% | Over $180,000 |
For a full breakdown of what each of these codes means and when to use it, see secondary tax codes SB, S, SH, ST and SA explained.
If you pick the right secondary code and nothing changes during the year, withholding is reasonably close to correct. The problems start when:
- You pick the wrong secondary code (very common — the IR330 form relies on you forecasting combined income correctly)
- You pick the right one but circumstances change — bonus, pay rise, new side gig — mid-year
- You’re close to a bracket boundary and the secondary code lags by one tier
- Your secondary employer uses S by default when you hand them an IR330 without specifying one
Where the Real Risk Sits: the Wrong Code, Not the Right One
Here’s a fact worth being precise about: when your secondary code is correctly matched to your combined income and your primary job alone already sits in the same tax bracket as your combined total, the reconciliation gap is exactly zero — the flat secondary rate and the progressive M-code rate land on the same number by construction. The real risk isn’t the mechanism, it’s picking (or being defaulted to) the wrong code.
Say your primary job earns $60,000 PAYE and you pick up a $15,000 secondary role. Combined income is $75,000 — both $60,000 alone and $75,000 combined sit inside the same $53,501–$78,100 (30%) bracket.
- Primary $60k → tax on $60,000 using progressive brackets = $10,221 income tax (ignoring IETC for simplicity).
- Secondary $15k at the correct code, SH (30%) → withholds $4,500.
- Total PAYE withheld: $14,721.
Your actual tax owing on $75,000 combined: $14,721 (progressive brackets applied to the full amount) — an exact match. Correctly coded, there’s no shortfall.
Now imagine the secondary employer used S (17.5%) instead — the default many payroll systems fall back to when nothing else is specified on the IR330:
- Secondary withholds: $15,000 × 17.5% = $2,625
- Total PAYE withheld: $10,221 + $2,625 = $12,846
- Tax actually owing: $14,721
- Shortfall: $1,875
Nothing changed except the code selection on one form, and the bill went from $0 to $1,875. That’s the actual mechanism behind most secondary-income tax bills: not that the flat-rate system is inherently leaky, but that the code on file doesn’t match the combined income it’s supposed to represent — because it was never updated, defaulted to S, or was set before a pay rise or new side gig pushed combined income into a higher band.
Three Worked Examples
Example 1 — $70k Combined, Correctly Coded ($0 Shortfall)
Aroha. Primary job $55,000 at M code. Evening retail second job $15,000, secondary code SH (30%) (her myIR dashboard correctly flagged SH because combined is $70k, which sits in the $53,501–$78,100 band).
- Primary PAYE: $8,721 withheld (standard M code on $55k)
- Secondary PAYE: $15,000 × 30% = $4,500 withheld
- Total withheld: $13,221
- Actual tax on $70,000 combined: $13,221
- Shortfall at IR3 time: $0 — the code matches, so withholding lands exactly right
Correctly coded, there’s nothing to true up. This is the baseline case: no bill, no refund.
Example 2 — $95k Combined, $2,325 Bill from Wrong Code
Rohan. Primary job $80,000 at M, side consulting $15,000 which he treated as a second PAYE job. He filled in the IR330 quickly and ticked S without looking up the combined figure.
- Primary PAYE: $16,278 withheld
- Secondary PAYE: $15,000 × 17.5% = $2,625 withheld
- Total withheld: $18,903
- Actual tax on $95,000 combined: $21,228
- Shortfall at IR3 time: $2,325
He should have used ST (33%) because combined income is in the $78,101–$180,000 band. ST would have withheld $4,950 from secondary — total withheld $21,228, exactly matching the $21,228 owing. Using the correct code from day one would have left him with no bill at all, not just a smaller one.
Example 3 — $140k Combined, $900 Bill from Wrong Code
Mei. Primary job $110,000 at M, weekend private tutoring $30,000 at secondary code SH (30%) (she picked SH because the form listed it as “30% bracket”, without realising her combined income had moved her into the 33% bracket).
- Primary PAYE: $26,178 withheld
- Secondary PAYE: $30,000 × 30% = $9,000 withheld
- Total withheld: $35,178
- Actual tax on $140,000 combined: $36,078
- Shortfall at IR3 time: $900
Correct code was ST (33%). With ST, secondary withholding would have been $9,900 — total withheld $36,078, an exact match with the $36,078 owing. No Special Tax Code needed here; simply using the right standard code (ST instead of SH) would have eliminated the bill entirely.
How to Prevent the Bill in 2026-27
1 — Use the right code from day one. When you fill in an IR330 for your secondary employer, include every source of income. Use our tax code checker with your total expected annual income, not just the secondary job’s number.
2 — Apply for a Special Tax Code if your income is irregular or comes from more than two sources, where the standard bands can’t track your situation precisely. IRD sets a withholding rate tailored to your circumstances. Apply in myIR → More → Tax codes → Request a special tax code. Takes 5–10 business days to issue. STC is re-issued annually — check the new certificate each April.
3 — Update the code mid-year when circumstances change. New contract, bonus, pay rise, redundancy, return to work, extra side gig — re-run your combined income estimate and hand your secondary employer a new IR330. Takes one pay cycle to bed in. This is the single biggest lever: a correctly-matched code is usually enough on its own — no Special Tax Code required.
4 — If you’re unsure your code is right, set aside a buffer until you check it. A correctly-matched secondary code should reconcile close to exactly at year-end (see the worked examples above). If you suspect your code is stale or was defaulted to the wrong band, use the tax code checker to confirm, and set aside the gap between your current code’s rate and the correct one until you fix it.
5 — Treat schedular / contract income differently. If your secondary income is invoices not payslips, the withholding rule is different — you’ll either elect a rate on IR330C or use the standard per-industry WT rate. Payroll doesn’t handle that. Schedular work goes through the IR3 schedular payments section, and reconciliation happens there. Read our schedular payments guide for that track.
What Happens at IR3 / Auto-Assessment Time
If all your income is PAYE (primary + secondary), you usually get an automatic assessment from late May and the shortfall shows up as a bill on the notice. You can pay via myIR straight away or set up an instalment arrangement.
If you had any non-PAYE income (self-employment, rental, overseas, bright-line), you must file an IR3 and the secondary-income shortfall shows up as part of the IR3 wash-up. Terminal tax due 7 February 2027 (self-filers) or 7 April 2027 (tax agent clients).
IRD charges Use of Money Interest (UOMI) on unpaid tax — 8.97% p.a. as of the rate set 16 January 2026 (IRD reviews this rate periodically, so check the current figure before relying on it) — from the original due date, but not on amounts settled inside the 30-day period after the notice of assessment. If you pay promptly on receipt there’s no interest cost.
Sources
- IRD — Tax codes and tax rates for individuals
- IRD — What tax code should I use
- IRD — Apply for a tailored tax code
- IRD — Interest on overpayments and underpayments (UOMI)
Fix your secondary code before the next IR3 surprise
If you have two jobs or a regular side hustle, five minutes on the tax code checker can save you a four-figure wash-up bill — a correctly-matched standard code (SB/S/SH/ST/SA) reconciles almost exactly at year-end on its own. If your income comes from more than two sources or changes often, a Special Tax Code in myIR is the cleanest way to pin down a precise rate.
Primary sources