body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
line-height: 1.6;
color: #333;
margin: 0;
padding: 20px;
background-color: #f4f6f9;
}
.calculator-container {
max-width: 800px;
margin: 0 auto;
background: #ffffff;
padding: 30px;
border-radius: 12px;
box-shadow: 0 4px 20px rgba(0,0,0,0.1);
}
.calc-header {
text-align: center;
margin-bottom: 30px;
border-bottom: 2px solid #005a9c;
padding-bottom: 15px;
}
.calc-header h1 {
color: #005a9c;
margin: 0;
font-size: 28px;
}
.input-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
margin-bottom: 25px;
}
@media (max-width: 600px) {
.input-grid {
grid-template-columns: 1fr;
}
}
.form-group {
margin-bottom: 15px;
}
.form-group label {
display: block;
font-weight: 600;
margin-bottom: 8px;
color: #444;
}
.form-group input {
width: 100%;
padding: 12px;
border: 1px solid #ddd;
border-radius: 6px;
font-size: 16px;
box-sizing: border-box;
transition: border-color 0.3s;
}
.form-group input:focus {
border-color: #005a9c;
outline: none;
}
.help-text {
font-size: 12px;
color: #666;
margin-top: 4px;
}
.calculate-btn {
width: 100%;
padding: 15px;
background-color: #d32f2f;
color: white;
border: none;
border-radius: 6px;
font-size: 18px;
font-weight: bold;
cursor: pointer;
transition: background-color 0.3s;
text-transform: uppercase;
margin-top: 10px;
}
.calculate-btn:hover {
background-color: #b71c1c;
}
.results-section {
margin-top: 30px;
background-color: #e3f2fd;
border-radius: 8px;
padding: 20px;
display: none;
border-left: 5px solid #005a9c;
}
.result-row {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
padding-bottom: 10px;
border-bottom: 1px solid #bbdefb;
}
.result-row:last-child {
border-bottom: none;
margin-bottom: 0;
padding-bottom: 0;
}
.result-label {
font-weight: 500;
}
.result-value {
font-weight: 700;
color: #005a9c;
}
.total-result {
font-size: 1.2em;
color: #d32f2f;
}
.article-content {
max-width: 800px;
margin: 40px auto;
background: #fff;
padding: 30px;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0,0,0,0.05);
}
.article-content h2 {
color: #005a9c;
margin-top: 30px;
}
.article-content p, .article-content li {
color: #555;
font-size: 16px;
line-height: 1.7;
}
.info-box {
background: #fff3e0;
padding: 15px;
border-radius: 6px;
border-left: 4px solid #ff9800;
margin: 20px 0;
}
Understanding South Australia Council Rates
Council rates in South Australia are a form of property tax used to fund local services and infrastructure. Unlike income tax, these rates are determined based on the value of your property, a system known as ad valorem taxation. This calculator helps property owners in councils such as Adelaide, Onkaparinga, Salisbury, and Marion estimate their financial obligations.
How the Formula Works
The calculation of your rates generally follows a standard formula across most SA Local Government areas:
Formula: (Capital Value × Rate in the Dollar) + Fixed Charges + Regional Landscape Levy – Concessions
1. Assessed Capital Value
The Valuer-General determines the capital value of your property. This valuation is used as the base for the calculation. If your property value increases, your rates generally increase unless the council lowers the 'Rate in the Dollar'.
2. Rate in the Dollar
This is a multiplier decided by your specific council during their annual budget process. It is often a very small decimal number (e.g., 0.00245). Councils may have differential rates for different land uses, such as Residential, Commercial, or Vacant Land.
3. Fixed Charges vs. Minimum Rates
Many councils apply a Fixed Charge to ensure all ratepayers contribute equally to basic services, regardless of property value. Alternatively, some councils use a Minimum Rate, meaning if your calculated rate (Value × Rate in Dollar) is below a certain threshold (e.g., $900), you pay the minimum amount instead.
4. Regional Landscape Levy
Formerly known as the NRM levy, the Regional Landscape Levy is a state government tax collected by local councils. It funds the management of land, water, and pests in your specific landscape board region.
Payment Schedules
In South Australia, council rates are typically issued annually but can be paid in four quarterly installments. These are usually due in:
- September
- December
- March
- June
Failing to pay by the due date may incur fines and interest charges as set by the Local Government Act 1999.
function calculateSARates() {
// 1. Get Input Values
var propValueStr = document.getElementById('sa_property_value').value;
var rateInDollarStr = document.getElementById('sa_rate_dollar').value;
var fixedChargeStr = document.getElementById('sa_fixed_charge').value;
var landscapeLevyStr = document.getElementById('sa_landscape_levy').value;
var wasteLevyStr = document.getElementById('sa_waste_levy').value;
var concessionsStr = document.getElementById('sa_concessions').value;
// 2. Parse values (handle empty inputs as 0)
var propValue = parseFloat(propValueStr) || 0;
var rateInDollar = parseFloat(rateInDollarStr) || 0;
var fixedCharge = parseFloat(fixedChargeStr) || 0;
var landscapeLevy = parseFloat(landscapeLevyStr) || 0;
var wasteLevy = parseFloat(wasteLevyStr) || 0;
var concessions = parseFloat(concessionsStr) || 0;
// 3. Validation
if (propValue <= 0 && rateInDollar <= 0) {
alert("Please enter at least the Property Value and Rate in the Dollar.");
return;
}
// 4. Calculations
// General Rates Calculation
var generalRates = propValue * rateInDollar;
// Combined Fixed Charges
var totalFixedCharges = fixedCharge + wasteLevy;
// Subtotal before concessions
var subTotal = generalRates + totalFixedCharges + landscapeLevy;
// Total Annual (cannot be negative)
var totalAnnual = subTotal – concessions;
if (totalAnnual < 0) {
totalAnnual = 0;
}
// Quarterly
var quarterly = totalAnnual / 4;
// 5. Update UI
// Helper function for currency formatting
function formatCurrency(num) {
return '$' + num.toLocaleString('en-AU', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
}
document.getElementById('res_general_rates').innerHTML = formatCurrency(generalRates);
document.getElementById('res_fixed_charges').innerHTML = formatCurrency(totalFixedCharges);
document.getElementById('res_landscape').innerHTML = formatCurrency(landscapeLevy);
document.getElementById('res_concessions').innerHTML = '-' + formatCurrency(concessions);
document.getElementById('res_total_annual').innerHTML = formatCurrency(totalAnnual);
document.getElementById('res_quarterly').innerHTML = formatCurrency(quarterly);
// Show results box
document.getElementById('results_box').style.display = 'block';
}