AVC Tax Savings Calculator

by Frank Liu

HTML

<h2>AVC Tax Savings Calculator</h2>
<label for="salary">Annual Salary (£): </label>
<input type="number" id="salary" placeholder="e.g. 60000" /><br />
<label for="avc">AVC Amount (£): </label>
<input type="number" id="avc" placeholder="e.g. 10000" /><br />
<button onclick="calculateSavings()">Calculate</button>

<div class="result" id="result">
  Original Taxable Income: £68000.00<br />
  New Taxable Income: £50270.00<br />
  Tax Saved: £7092.00<br />
  NI Saved: £354.60<br />
  Total Saved: £7446.60<br />
  Net Cost of AVC: £10283.40<br />
  Drops to Basic Rate: Yes
</div>

CSS

body {
  font-family: Arial, sans-serif;
  margin: 20px;
}
input {
  margin: 5px;
  padding: 5px;
}
button {
  padding: 10px;
  margin-top: 10px;
}
.result {
  margin-top: 20px;
  font-weight: bold;
}

JavaScript

function calculateSavings() {
  var salary = parseFloat(document.getElementById('salary').value);
  var avc = parseFloat(document.getElementById('avc').value);

  if (isNaN(salary) || isNaN(avc) || salary <= 0 || avc <= 0) {
    document.getElementById('result').innerHTML = 'Please enter valid numbers.';
    return;
  }

  var basicLimit = 50270;
  var basicRate = 0.2;
  var higherRate = 0.4;
  var niBasic = 0.12;
  var niHigh = 0.02;

  var originalTaxable = salary;
  var newTaxable = salary - avc;

  var originalTax =
    originalTaxable <= basicLimit
      ? originalTaxable * basicRate
      : basicLimit * basicRate + (originalTaxable - basicLimit) * higherRate;
  var newTax =
    newTaxable <= basicLimit
      ? newTaxable * basicRate
      : basicLimit * basicRate + (newTaxable - basicLimit) * higherRate;

  var originalNI =
    basicLimit * niBasic + Math.max(0, originalTaxable - basicLimit) * niHigh;
  var newNI =
    basicLimit * niBasic + Math.max(0, newTaxable - basicLimit) * niHigh;

  var taxSaved = originalTax - newTax;
  var niSaved = originalNI - newNI;
  var totalSaved = taxSaved + niSaved;
  var netCost = avc - totalSaved;
  var dropsToBasic = newTaxable <= basicLimit;

  document.getElementById('result').innerHTML = `
                Original Taxable Income: £${originalTaxable.toFixed(2)}<br>
                New Taxable Income: £${newTaxable.toFixed(2)}<br>
                Tax Saved: £${taxSaved.toFixed(2)}<br>
                NI Saved: £${niSaved.toFixed(2)}<br>
                Total Saved: £${totalSaved.toFixed(2)}<br>
                Net Cost of AVC: £${netCost.toFixed(2)}<br>
                Drops to Basic Rate: ${dropsToBasic ? 'Yes' : 'No'}
            `;
}