NZ 7dmini Side-Business Tax Calculator

This calculator shows how claiming expenses affects your tax. By default, store revenue is $0 (just claiming expenses reduces your taxable income), but you can adjust the revenue.

Location

Auckland Wellington Christchurch Hamilton Tauranga Napier Dunedin Palmerston North Nelson Rotorua

Other Income Sources

Yes

Main Employment & Store Revenue

Home Office Calculation (For Interest/Rent & Rates)

Select rooms used for business and enter total home size:






Expenses (Weekly, NZD)

Interest / Rent:

Percentage determined by home office calculation (max 30%).

Rates:

Percentage determined by home office calculation (max 30%).

Phone Bill:
Percentage for business use (max 30%):
%
Power Bill:
Percentage for business use (max 30%):
%
Water Bill:
Percentage for business use (max 30%):
%
Petrol Cost:
Percentage for business use (max 30%):
%
Other:
Percentage for business use (max 30%):
%

Summary

body {margin:0;padding:0;font-family:'Inter',sans-serif;} .tax-calculator-container{max-width:600px;margin:40px auto;background:#fefefe;border-radius:10px;padding:30px;box-shadow:0 4px 12px rgba(0,0,0,0.1);color:#333;} h1{text-align:center;font-size:1.8rem;margin-bottom:10px;} .description{text-align:center;color:#666;font-size:0.9rem;margin-bottom:20px;} .calc-section{margin-bottom:30px;} .calc-section h2{font-size:1.2rem;border-bottom:1px solid #ddd;padding-bottom:5px;margin-bottom:20px;color:#444;} .input-row,.expense-row{display:flex;flex-direction:column;margin-bottom:20px;} .input-row label,.expense-row strong{font-weight:600;margin-bottom:5px;} input[type="text"],select{border:1px solid #ccc;border-radius:5px;padding:8px;font-size:0.9rem;outline:none;width:100%;max-width:200px;} input[type="range"]{width:100%;} .slider-title{font-size:0.85rem;color:#555;margin:5px 0;} .note{margin-top:5px;font-size:0.85rem;color:#555;} .rooms-selection{margin:10px 0;} .info-msg{font-size:0.9rem;} #toggleDetailsBtn{padding:6px 12px;border:none;background:#00aaff;color:#fff;border-radius:5px;cursor:pointer;font-size:0.9rem;margin-top:10px;} #toggleDetailsBtn:hover{background:#008ecc;} .results{background:#f9f9f9;border-radius:8px;padding:20px;border:1px solid #eee;} .results h2{margin-top:0;font-size:1.2rem;margin-bottom:20px;} .result-row{display:flex;justify-content:space-between;margin-bottom:10px;font-size:0.95rem;flex-wrap:wrap;} .result-row strong{color:#111;} .result-row span{color:#333;font-weight:500;}.currency-input{position:relative;max-width:200px;width:100%;} .currency-input::before{content:'$';position:absolute;left:10px;top:50%;transform:translateY(-50%);color:#333;font-size:0.9rem;} .currency-input input{padding-left:20px;border:1px solid #ccc;border-radius:5px;width:100%;}@media screen and (max-width:600px){ .tax-calculator-container{margin:20px;padding:20px;} .result-row{flex-direction:column;align-items:flex-start;} #toggleDetailsBtn{margin-top:15px;} }document.addEventListener('DOMContentLoaded',function(){ var cityData={ auckland:{salary:1200,interest_rent:650,phone:25,power:18,water:15,rates:60,petrol:35,other:12}, wellington:{salary:1100,interest_rent:600,phone:20,power:17,water:14,rates:55,petrol:32,other:10}, christchurch:{salary:1050,interest_rent:550,phone:22,power:16,water:13,rates:50,petrol:30,other:10}, hamilton:{salary:1000,interest_rent:500,phone:20,power:15,water:12,rates:48,petrol:28,other:9}, tauranga:{salary:950,interest_rent:530,phone:19,power:14,water:12,rates:50,petrol:27,other:9}, napier:{salary:900,interest_rent:480,phone:18,power:14,water:11,rates:45,petrol:26,other:8}, dunedin:{salary:920,interest_rent:450,phone:18,power:14,water:11,rates:42,petrol:25,other:8}, palmerston_north:{salary:880,interest_rent:470,phone:17,power:13,water:10,rates:40,petrol:24,other:7}, nelson:{salary:890,interest_rent:490,phone:18,power:13,water:10,rates:45,petrol:24,other:7}, rotorua:{salary:870,interest_rent:460,phone:17,power:13,water:10,rates:43,petrol:23,other:7} };var roomSizes={bedroom:12,office:10,lounge:20,kitchen:15,garage:25};var otherBusiness=document.getElementById('otherBusiness'); var otherBusinessMsg=document.getElementById('otherBusinessMsg'); var citySelect=document.getElementById('citySelect'); var primaryIncome=document.getElementById('primaryIncome'); var storeRevenue=document.getElementById('storeRevenue'); var homeSize=document.getElementById('homeSize'); var calculateHomeUseBtn=document.getElementById('calculateHomeUseBtn'); var homeUseResult=document.getElementById('homeUseResult'); var roomCheckboxes=document.querySelectorAll('.room-checkbox');var summaryText=document.getElementById('summaryText'); var toggleDetailsBtn=document.getElementById('toggleDetailsBtn'); var resultArea=document.getElementById('resultArea');var exp_interest_rent=document.getElementById('exp_interest_rent'); var exp_rates=document.getElementById('exp_rates'); var cats=['phone','power','water','petrol','other'];var businessHomePercentage=0;otherBusiness.addEventListener('change',function(){ if(isOtherBusinessChecked()){ otherBusinessMsg.style.display='block'; disableAllInputs(true); }else{ otherBusinessMsg.style.display='none'; disableAllInputs(false); calculateTax(); } });citySelect.addEventListener('change',function(){ applyCityDefaults(citySelect.value); if(!isOtherBusinessChecked()) calculateTax(); });toggleDetailsBtn.addEventListener('click',function(){ if(resultArea.style.display==='none'){ resultArea.style.display='block'; toggleDetailsBtn.textContent='Hide Details'; } else { resultArea.style.display='none'; toggleDetailsBtn.textContent='Show Details'; } });calculateHomeUseBtn.addEventListener('click',function(){ var totalArea=parseFloat(homeSize.value)||0; if(totalArea30) perc=30; businessHomePercentage=perc; homeUseResult.style.display='block'; homeUseResult.textContent="Business Use: "+perc.toFixed(2)+"% of home (capped at 30%)";cats.forEach(function(cat){ document.getElementById('slider_'+cat).value=perc; document.getElementById('input_'+cat).value=Math.round(perc); }); if(!isOtherBusinessChecked()) calculateTax(); });var dynamicInputs=[ 'primaryIncome','storeRevenue','homeSize','citySelect','calculateHomeUseBtn', 'exp_phone','slider_phone','input_phone', 'exp_power','slider_power','input_power', 'exp_water','slider_water','input_water', 'exp_petrol','slider_petrol','input_petrol', 'exp_other','slider_other','input_other', 'exp_interest_rent','exp_rates' ]; roomCheckboxes.forEach(cb=>dynamicInputs.push(cb));dynamicInputs.forEach(function(id){ var elem=document.getElementById(id); if(elem && !id.startsWith('slider_') && !id.startsWith('input_')){ elem.addEventListener('input',function(){ if(!isOtherBusinessChecked()) calculateTax(); }); } });cats.forEach(syncExpensePercentage); applyCityDefaults('auckland'); calculateTax();function isOtherBusinessChecked(){return otherBusiness.checked;}function disableAllInputs(disable){ dynamicInputs.forEach(function(id){ var elem=document.getElementById(id); if(elem) elem.disabled=disable; }); roomCheckboxes.forEach(cb=>cb.disabled=disable); }function applyCityDefaults(city){ var data=cityData[city]; primaryIncome.value=data.salary; storeRevenue.value=0; exp_interest_rent.value=data.interest_rent; exp_rates.value=data.rates; document.getElementById('exp_phone').value=data.phone; document.getElementById('exp_power').value=data.power; document.getElementById('exp_water').value=data.water; document.getElementById('exp_petrol').value=data.petrol; document.getElementById('exp_other').value=data.other;businessHomePercentage=0; cats.forEach(function(cat){ document.getElementById('slider_'+cat).value=30; document.getElementById('input_'+cat).value=30; }); }function syncExpensePercentage(cat){ var slider=document.getElementById('slider_'+cat); var input=document.getElementById('input_'+cat); slider.addEventListener('input',function(){ var val=Math.min(slider.value,30); slider.value=val; input.value=val; if(!isOtherBusinessChecked())calculateTax(); }); input.addEventListener('input',function(){ var val=parseFloat(input.value)||0; val=Math.min(Math.max(val,0),30); input.value=val; slider.value=val; if(!isOtherBusinessChecked())calculateTax(); }); }function calculateNZTax(income){ if(income<=14000)return income*0.105; else if(income<=48000)return(14000*0.105)+(income-14000)*0.175; else if(income<=70000)return(14000*0.105)+(48000-14000)*0.175+(income-48000)*0.30; else if(income taxNoStore if(netBenefit > taxNoStore) { netBenefit = taxNoStore; }var effectiveTax=(storeProfitAnnual!==0)?(additionalTax/storeProfitAnnual)*100:0;document.getElementById('noStoreIncome').textContent=incomeNoStoreAnnual.toFixed(2); document.getElementById('noStoreTax').textContent=taxNoStore.toFixed(2); document.getElementById('withStoreIncome').textContent=incomeWithStoreAnnual.toFixed(2); document.getElementById('withStoreTax').textContent=taxWithStore.toFixed(2); document.getElementById('additionalTax').textContent=additionalTax.toFixed(2); document.getElementById('totalDeductibleExpenses').textContent=totalDeductibleAnnual.toFixed(2); document.getElementById('storeProfit').textContent=storeProfitAnnual.toFixed(2); document.getElementById('netBenefit').textContent=netBenefit.toFixed(2); document.getElementById('effectiveTaxRate').textContent=effectiveTax.toFixed(2);// Summary line logic // If netBenefit>0 and storeRevenue=0: "Tax refund due" // If netBenefit>0 and storeRevenue>0: "Extra money in pocket" // If netBenefit0 && weeklyRevenue===0) { summaryText.textContent="Tax refund due: $"+netBenefit.toFixed(2); } else if(netBenefit>0 && weeklyRevenue>0) { summaryText.textContent="Extra money in pocket: $"+netBenefit.toFixed(2); } else { var extraCost=Math.abs(netBenefit); summaryText.textContent="Additional Tax Due: $"+extraCost.toFixed(2); } } });
×