Lease payments are not calculated like standard loan payments. While a loan pays down the entire value of the vehicle plus interest, a lease only pays for the depreciation of the car during the time you drive it, plus a rental fee (money factor) and taxes.
Key Components Explained
MSRP: The Manufacturer's Suggested Retail Price. This is used to calculate the residual value.
Negotiated Price: Also called the Capitalized Cost. This is the actual price you agreed to pay for the car before incentives or down payments.
Residual Value: The estimated value of the car at the end of the lease. If a $30,000 car has a 60% residual after 3 years, it is expected to be worth $18,000.
Money Factor: This is the interest rate on a lease. To convert a Money Factor to APR, multiply it by 2400. For example, a 0.0015 MF is equivalent to a 3.6% APR.
Capitalized Cost Reduction: This is the sum of your down payment, trade-in, and rebates that reduces the amount being financed.
The Lease Formula
Your monthly payment is the sum of three distinct parts:
Depreciation Fee: (Adjusted Cap Cost – Residual Value) ÷ Lease Term
Imagine you are leasing a SUV with an MSRP of $40,000. You negotiate the price to $38,000. You put $3,000 down. The residual is 55% ($22,000) for a 36-month term with a money factor of 0.00125 (3% APR) and 8% tax.
Cap Cost: $38,000 – $3,000 = $35,000
Depreciation: ($35,000 – $22,000) / 36 = $361.11
Finance: ($35,000 + $22,000) * 0.00125 = $71.25
Tax: ($361.11 + $71.25) * 0.08 = $34.59
Total Monthly Payment: $466.95
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 leaseTerm = parseFloat(document.getElementById("leaseTerm").value) || 0;
var moneyFactor = parseFloat(document.getElementById("moneyFactor").value) || 0;
var taxRate = parseFloat(document.getElementById("taxRate").value) || 0;
if (leaseTerm <= 0) {
alert("Please enter a valid lease term.");
return;
}
// 1. Calculate Residual Value
var residualValue = msrp * (residualPercent / 100);
// 2. Calculate Adjusted Capitalized Cost
var adjCapCost = salesPrice – downPayment – tradeIn;
if (adjCapCost < residualValue) {
alert("The adjusted capitalized cost cannot be less than the residual value. Please check your down payment or sales price.");
return;
}
// 3. Calculate Monthly Depreciation Fee
var monthlyDepreciation = (adjCapCost – residualValue) / leaseTerm;
// 4. Calculate Monthly Finance Fee (Money Factor * (Cap Cost + Residual))
var monthlyFinance = (adjCapCost + residualValue) * moneyFactor;
// 5. Calculate Subtotal (Pre-tax)
var preTaxPayment = monthlyDepreciation + monthlyFinance;
// 6. Calculate Tax
var monthlyTax = preTaxPayment * (taxRate / 100);
// 7. Calculate Total
var totalPayment = preTaxPayment + monthlyTax;
// Display Results
document.getElementById("monthlyTotal").innerText = "$" + totalPayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("depreciationFee").innerText = "$" + monthlyDepreciation.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("financeFee").innerText = "$" + monthlyFinance.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("taxFee").innerText = "$" + monthlyTax.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("leaseResult").style.display = "block";
}