#edmunds-lease-calc-container h2 { color: #0056b3; margin-top: 0; font-size: 28px; border-bottom: 2px solid #eee; padding-bottom: 10px; }
#edmunds-lease-calc-container .input-section { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 25px; }
#edmunds-lease-calc-container .input-group { display: flex; flex-direction: column; }
#edmunds-lease-calc-container label { font-weight: 600; margin-bottom: 8px; font-size: 14px; color: #555; }
#edmunds-lease-calc-container input { padding: 12px; border: 1px solid #ccc; border-radius: 6px; font-size: 16px; transition: border-color 0.3s; }
#edmunds-lease-calc-container input:focus { border-color: #0056b3; outline: none; box-shadow: 0 0 5px rgba(0,86,179,0.2); }
#edmunds-lease-calc-container .calc-btn { background-color: #0056b3; color: white; border: none; padding: 15px 30px; font-size: 18px; font-weight: bold; border-radius: 6px; cursor: pointer; width: 100%; transition: background-color 0.3s; margin-bottom: 25px; }
#edmunds-lease-calc-container .calc-btn:hover { background-color: #004494; }
#edmunds-lease-calc-container .results-box { background-color: #f8f9fa; padding: 20px; border-radius: 8px; border-left: 5px solid #0056b3; display: none; }
#edmunds-lease-calc-container .result-item { display: flex; justify-content: space-between; margin-bottom: 10px; font-size: 16px; border-bottom: 1px dashed #ddd; padding-bottom: 5px; }
#edmunds-lease-calc-container .result-main { font-size: 24px; font-weight: bold; color: #d9534f; margin-top: 10px; text-align: center; border-bottom: none; }
#edmunds-lease-calc-container .article-content { margin-top: 40px; border-top: 1px solid #eee; padding-top: 20px; }
#edmunds-lease-calc-container .article-content h3 { color: #222; margin-top: 25px; }
#edmunds-lease-calc-container .article-content p { margin-bottom: 15px; }
@media (max-width: 600px) {
#edmunds-lease-calc-container .input-section { grid-template-columns: 1fr; }
}
Gross Capitalized Cost:
$0.00
Adjusted Capitalized Cost:
$0.00
Residual Value:
$0.00
Monthly Depreciation:
$0.00
Monthly Rent Charge:
$0.00
Monthly Sales Tax:
$0.00
Estimated Monthly Payment: $0.00
How to Use the Edmunds Lease Calculator
Leasing a vehicle is often more complex than a traditional purchase because the payment is based on the vehicle's depreciation rather than its total value. This Edmunds-style lease calculator helps you break down the monthly costs by identifying the core components of a lease contract.
Key Leasing Terms Explained
MSRP: The sticker price of the car. This is critical because the residual value is calculated as a percentage of this number, regardless of your negotiated price.
Sales Price: This is the price you actually negotiate with the dealer. A lower sales price directly reduces your monthly payment.
Residual Value: This is the predicted value of the car at the end of the lease. The higher the residual percentage, the lower your monthly payment, as you are paying for less depreciation.
Money Factor: This is the lease version of an interest rate. To convert a money factor to a standard APR, multiply it by 2,400. For example, a money factor of 0.00125 is equal to a 3% APR.
The Math Behind Your Payment
Your lease payment is the sum of three distinct parts:
- Depreciation Fee: (Adjusted Cap Cost – Residual Value) ÷ Term
- Rent Charge: (Adjusted Cap Cost + Residual Value) × Money Factor
- Sales Tax: (Depreciation Fee + Rent Charge) × Tax Rate
Example Calculation
Imagine a car with an MSRP of $40,000. You negotiate the price down to $38,000. You put $2,000 down. The 36-month residual is 60% ($24,000) and the money factor is 0.0015.
Your adjusted cap cost is $36,000. The monthly depreciation is ($36,000 – $24,000) / 36 = $333.33.
The rent charge is ($36,000 + $24,000) * 0.0015 = $90.00.
Before tax, your payment is $423.33.
function calculateLease() {
var msrp = parseFloat(document.getElementById('msrp').value) || 0;
var salesPrice = parseFloat(document.getElementById('salesPrice').value) || 0;
var downPayment = parseFloat(document.getElementById('downPayment').value) || 0;
var tradeIn = parseFloat(document.getElementById('tradeIn').value) || 0;
var residualPercent = parseFloat(document.getElementById('residualPercent').value) || 0;
var moneyFactor = parseFloat(document.getElementById('moneyFactor').value) || 0;
var leaseTerm = parseFloat(document.getElementById('leaseTerm').value) || 0;
var taxRate = parseFloat(document.getElementById('taxRate').value) || 0;
if (leaseTerm <= 0) {
alert("Please enter a valid lease term (months).");
return;
}
// 1. Calculate Residual Value
var residualValue = msrp * (residualPercent / 100);
// 2. Calculate Adjusted Capitalized Cost
var capCostReductions = downPayment + tradeIn;
var adjustedCapCost = salesPrice – capCostReductions;
// 3. Calculate Monthly Depreciation Fee
var monthlyDepreciation = (adjustedCapCost – residualValue) / leaseTerm;
if (monthlyDepreciation < 0) monthlyDepreciation = 0;
// 4. Calculate Monthly Rent Charge (Interest)
var monthlyRent = (adjustedCapCost + residualValue) * moneyFactor;
// 5. Calculate Base Payment
var basePayment = monthlyDepreciation + monthlyRent;
// 6. Calculate Sales Tax
var monthlyTax = basePayment * (taxRate / 100);
// 7. Calculate Total Payment
var totalMonthlyPayment = basePayment + monthlyTax;
// Display Results
document.getElementById('resGrossCap').innerText = '$' + salesPrice.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resAdjCap').innerText = '$' + adjustedCapCost.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resResidual').innerText = '$' + residualValue.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resDepreciation').innerText = '$' + monthlyDepreciation.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resRent').innerText = '$' + monthlyRent.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resTax').innerText = '$' + monthlyTax.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resTotalPayment').innerText = '$' + totalMonthlyPayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('leaseResults').style.display = 'block';
}