Understanding your car lease payment is crucial before visiting a dealership. Unlike a traditional car loan, where you pay down the entire value of the vehicle, a lease only charges you for the portion of the vehicle's value that you "use" during the lease term, plus interest and taxes.
The Core Components of a Lease
MSRP: The Manufacturer's Suggested Retail Price. This is used primarily to calculate the Residual Value.
Sales Price (Gross Cap Cost): The price you actually negotiated for the car. Lowering this is the best way to lower your payment.
Residual Value: This is what the car is expected to be worth at the end of the lease. It is expressed as a percentage of the MSRP. A higher residual value leads to lower monthly payments.
Money Factor: This is essentially the interest rate for a lease. To convert a money factor to a standard APR, multiply it by 2400. For example, a money factor of 0.0015 is roughly equivalent to a 3.6% APR.
Lease Term: The duration of the lease, typically 24, 36, or 48 months.
The Formula
The monthly lease payment consists of three parts:
Depreciation Fee: (Adjusted Cap Cost – Residual Value) / Lease Term
Imagine a car with an MSRP of $35,000. You negotiate the price down to $33,000 and put $2,000 down. The 36-month lease has a 58% residual ($20,300) and a money factor of 0.0015.
The Depreciation Fee would be ($31,000 – $20,300) / 36 = $297.22. The Rent Charge would be ($31,000 + $20,300) × 0.0015 = $76.95. Adding these together ($374.17) and applying a 7.5% tax results in a final monthly payment of approximately $402.23.
function calculateLease() {
var msrp = parseFloat(document.getElementById('msrp').value);
var salesPrice = parseFloat(document.getElementById('salesPrice').value);
var downPayment = parseFloat(document.getElementById('downPayment').value) || 0;
var tradeIn = parseFloat(document.getElementById('tradeIn').value) || 0;
var term = parseInt(document.getElementById('leaseTerm').value);
var residualPercent = parseFloat(document.getElementById('residualPercent').value);
var moneyFactor = parseFloat(document.getElementById('moneyFactor').value);
var taxRate = parseFloat(document.getElementById('taxRate').value) || 0;
if (isNaN(msrp) || isNaN(salesPrice) || isNaN(term) || isNaN(residualPercent) || isNaN(moneyFactor)) {
alert("Please enter valid numbers in all required fields.");
return;
}
// 1. Adjusted Cap Cost
var capCost = salesPrice – downPayment – tradeIn;
// 2. Residual Value
var residualValue = msrp * (residualPercent / 100);
// 3. Depreciation Fee
var monthlyDepreciation = (capCost – residualValue) / term;
// 4. Rent Charge
var monthlyRent = (capCost + residualValue) * moneyFactor;
// 5. Tax
var basePayment = monthlyDepreciation + monthlyRent;
var monthlyTax = basePayment * (taxRate / 100);
// 6. Total
var totalMonthly = basePayment + monthlyTax;
// Display results
document.getElementById('resCapCost').innerText = "$" + capCost.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('resTotal').innerText = "$" + totalMonthly.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('leaseResult').style.display = 'block';
}