Determine your correct tax rate for PIE investments in New Zealand
Yes
No
Previous Income Year 1
Previous Income Year 2
Your Prescribed Investor Rate
28%
What is a Prescribed Investor Rate (PIR)?
The Prescribed Investor Rate (PIR) is the tax rate used for income earned from a Portfolio Investment Entity (PIE). In New Zealand, many managed funds, KiwiSaver funds, and superannuation schemes are structured as PIEs. Setting your PIR correctly is crucial because it ensures you pay the right amount of tax on your investment returns immediately, rather than waiting for an end-of-year adjustment.
How is PIR Calculated?
For New Zealand tax residents, your PIR is calculated based on your income from the two previous income years. You can generally choose the lower rate if you qualify in either of those years.
The standard rates for individuals are:
10.5%: If your taxable income was $14,000 or less AND your total income (taxable + PIE) was $48,000 or less.
17.5%: If your total income (taxable + PIE) was $70,000 or less (and you don't qualify for 10.5%).
28%: If your total income was over $70,000.
Non-residents generally default to a PIR of 28%.
Why Does Your PIR Matter?
If your PIR is set too high, you will pay too much tax on your investment earnings. While the IRD may refund this in some cases, it reduces the compounding power of your investment during the year. Conversely, if your PIR is set too low, you will be required to pay the shortfall at the end of the tax year, potentially resulting in an unexpected tax bill.
Using the "Look-Back" Rule
The unique feature of the PIR system is the look-back rule. You assess your income for the two previous tax years (April 1 to March 31). If you qualified for a lower rate in either of those two years, you are entitled to use that lower rate for the current tax year. This calculator checks both years based on your inputs and applies the most favorable valid rate.
function calculatePIR() {
// Retrieve input values
var residency = document.getElementById("residencyStatus").value;
var taxable1 = parseFloat(document.getElementById("taxableIncomeYear1").value);
var pie1 = parseFloat(document.getElementById("pieIncomeYear1").value);
var taxable2 = parseFloat(document.getElementById("taxableIncomeYear2").value);
var pie2 = parseFloat(document.getElementById("pieIncomeYear2").value);
// Handle NaN/Empty inputs by treating them as 0
if (isNaN(taxable1)) taxable1 = 0;
if (isNaN(pie1)) pie1 = 0;
if (isNaN(taxable2)) taxable2 = 0;
if (isNaN(pie2)) pie2 = 0;
var finalRate = 28; // Default max rate
var reason = "";
if (residency === "no") {
finalRate = 28;
reason = "As a non-resident for tax purposes, your Prescribed Investor Rate is generally fixed at 28%.";
} else {
// Calculate totals for Year 1
var totalIncome1 = taxable1 + pie1;
var rateYear1 = 28; // Default for year 1
if (taxable1 <= 14000 && totalIncome1 <= 48000) {
rateYear1 = 10.5;
} else if (totalIncome1 <= 70000) {
rateYear1 = 17.5;
} else {
rateYear1 = 28;
}
// Calculate totals for Year 2
var totalIncome2 = taxable2 + pie2;
var rateYear2 = 28; // Default for year 2
if (taxable2 <= 14000 && totalIncome2 <= 48000) {
rateYear2 = 10.5;
} else if (totalIncome2 <= 70000) {
rateYear2 = 17.5;
} else {
rateYear2 = 28;
}
// The user qualifies for the lower of the two years
if (rateYear1 < rateYear2) {
finalRate = rateYear1;
reason = "You qualify for " + finalRate + "% based on your income in Year 1 (Total: $" + totalIncome1.toLocaleString() + "). Since this is lower than your Year 2 rate, you can use this lower rate.";
} else if (rateYear2 < rateYear1) {
finalRate = rateYear2;
reason = "You qualify for " + finalRate + "% based on your income in Year 2 (Total: $" + totalIncome2.toLocaleString() + "). Since this is lower than your Year 1 rate, you can use this lower rate.";
} else {
finalRate = rateYear1;
reason = "Based on your income over the last two years, your applicable rate is " + finalRate + "%. Your income bracket was consistent across both years.";
}
}
// Display results
document.getElementById("finalPIR").innerText = finalRate + "%";
document.getElementById("pirDetail").innerText = reason;
document.getElementById("resultContainer").style.display = "block";
}