Income tax calculator

Use as a guide only. Not guaranteed accurate. Make sure you read the qualifiers for each input.
More info on each parties policy can be found on their website.


Before you start

This calculator doesn't take all policies into account (such as Working for Families & IETC). These policies can make a considerable difference depending on your situation, please look into them.

Results

More/less values are derived from Labours current tax policy.

Total Tax

Tax difference

Tax over income

If you liked this site, you may also find polidex.co.nz interesting.

Calculations

In the interest of transparency I've released the code that calculates the tax amounts.

//tax brackets
//where 's' is the start of the bracket, 'e' is the end, and 'r' is the rate
//Labour
let labourTax = u.calcTax([
    { s: 0,     e: 14000,      r : .105 },
    { s: 14001, e: 48000,      r : .175 },
    { s: 48001, e: 70000,      r : .300 },
    { s: 70001, e: 180000,     r : .330 },
    { s: 180001,e: 9999999999, r : .390 }
], income, 'Labour', false);

//National
let nationalTax = u.calcTax([
    { s: 0,     e: 15600,      r : .105 },
    { s: 15601, e: 53500,      r : .175 },
    { s: 53501, e: 78100,      r : .300 },
    { s: 78101, e: 180000,     r : .330 },
    { s: 180001,e: 9999999999, r : .390 }
], income, 'National', labourTax);

//TOP
let topTax = u.calcTax([
    { s: 0,     e: 15000,      r : 0 },
    { s: 15001, e: 80000,      r : .200 },
    { s: 80001, e: 180000,     r : .350 },
    { s: 180001,e: 250000,     r : .420 },
    { s: 250001,e: 9999999999, r : .450 }
], income, 'Top', labourTax);

//Greens
let greensTax = u.calcTax([
    { s: 0,     e: 10000,      r : 0 },
    { s: 10001, e: 50000,      r : .170 },
    { s: 50001, e: 75000,      r : .300 },
    { s: 75001, e: 120000,     r : .350 },
    { s: 120001,e: 180000,     r : .390 },
    { s: 180001,e: 9999999999, r : .450 }
], income, 'Greens', labourTax);

//ACT
let actTax = u.calcTax([
    { s: 0,     e: 70000,      r : .175 },
    { s: 70001, e: 180000,     r : .330 },
    { s: 180001,e: 9999999999, r : .390 }
], income, 'Act', labourTax);

//Te Pati Maori
let tePatiMaori = u.calcTax([
    { s: 0,     e: 30000,      r : 0 },
    { s: 30001, e: 60000,      r : .150 },
    { s: 60001, e: 90000,      r : .330 },
    { s: 90001, e: 180000,     r : .390 },
    { s: 180001,e: 300000,     r : .420 },
    { s: 300001,e: 9999999999, r : .480 }
], income, 'Te Pati Maori', labourTax);

//tax bracket calculation
//loop through the brackets and add the total tax
u.calcTax : function(brackets, income, party, labourTax) {
    var remaining = income;
    var tax = 0;
    for(let b in brackets) {
        let bracket = brackets[b];
        let range = bracket.e - bracket.s;
        if(remaining >= range) {
            tax += (range * bracket.r);
            remaining -= range;
        } else {
            tax += (remaining * bracket.r);
            break;
        }
    }
    return tax;
}

//wealth tax, TOP
wealthTax = (landvalue *= 0.0075);

//wealth tax, Greens
if((netassets-debt) >= 2000000) {
    wealthTax = (((netassets-debt)-2000000) * 0.025);
}

//rebate, ACT
rebate = u.calcTax([
    { s: 0,        e: 2000,       r : 0 },
    { s: 2001,     e: 12000,      r : .08 },
    { s: 12001,    e: 48000,      r : 0 },
    { s: 48001,    e: 58000,      r : -.08 },
    { s: 58001,    e: 99999999999,r : 0 }
], income);

//wealth tax, Te Pati Maori
wealthTax = u.calcTax([
    { s: 0,        e: 2000000,    r : 0 },
    { s: 2000001,  e: 5000000,    r : .02 },
    { s: 5000001,  e: 10000000,   r : .04 },
    { s: 10000001, e: 99999999999,r : .08 }
], (netassets - debt));
View results