Estimate your monthly lease payments based on MSRP, money factor, and residual value.
Gross Capitalized Cost:$0.00
Residual Value:$0.00
Monthly Depreciation:$0.00
Monthly Rent Charge:$0.00
Total Monthly Payment:$0.00
How to Use the Car Lease Calculator
Understanding how a car lease payment is calculated can save you thousands of dollars at the dealership. Unlike a traditional auto loan, where you pay for the entire value of the vehicle, a lease payment is primarily based on the vehicle's depreciation during the time you drive it.
Key Leasing Terms Defined
MSRP: The Manufacturer's Suggested Retail Price (sticker price).
Gross Capitalized Cost: The negotiated price of the vehicle before down payments or trade-ins.
Residual Value: The estimated value of the car at the end of the lease term. This is set by the leasing company and is usually a percentage of the MSRP.
Money Factor: Essentially the interest rate on a lease. To convert APR to Money Factor, divide the APR by 2400.
Cap Cost Reduction: Any down payment, trade-in credit, or rebates that reduce the amount being financed.
The Math Behind the Lease
The calculation is broken into three main parts:
Depreciation Fee: (Net Capitalized Cost – Residual Value) ÷ Term in Months.
Sales Tax: Applied to the sum of the depreciation and rent charges (in most states).
Example Calculation
Imagine you are leasing a car with an MSRP of $40,000. The negotiated price is $38,000, you put $2,000 down, and the residual value is 60% ($24,000) for a 36-month term with a 4% APR.
Base Payment: $333.33 + $99.60 = $432.93 (plus local taxes)
Tips for a Better Lease Deal
To lower your monthly payment, focus on negotiating the Capitalized Cost. While you cannot change the Residual Value (set by the bank), reducing the sale price directly lowers both the depreciation and the rent charge. Additionally, always check if you qualify for manufacturer incentives or "loyalty" rebates which act as cap cost reductions.
function calculateLeasePayment() {
// Get Input Values
var msrp = parseFloat(document.getElementById('msrp').value) || 0;
var negotiatedPrice = parseFloat(document.getElementById('negotiatedPrice').value) || 0;
var downPayment = parseFloat(document.getElementById('downPayment').value) || 0;
var tradeIn = parseFloat(document.getElementById('tradeIn').value) || 0;
var leaseTerm = parseFloat(document.getElementById('leaseTerm').value) || 0;
var residualPercent = parseFloat(document.getElementById('residualPercent').value) || 0;
var apr = parseFloat(document.getElementById('apr').value) || 0;
var salesTax = parseFloat(document.getElementById('salesTax').value) || 0;
if (leaseTerm <= 0 || msrp <= 0) {
alert("Please enter valid vehicle price and lease term.");
return;
}
// 1. Calculate Net Capitalized Cost
var netCapCost = negotiatedPrice – downPayment – tradeIn;
if (netCapCost < 0) netCapCost = 0;
// 2. Calculate Residual Value
var residualValue = msrp * (residualPercent / 100);
// 3. Calculate Monthly Depreciation
var monthlyDepreciation = (netCapCost – residualValue) / leaseTerm;
if (monthlyDepreciation < 0) monthlyDepreciation = 0;
// 4. Calculate Money Factor and Rent Charge
// Money Factor = APR / 2400
var moneyFactor = apr / 2400;
var monthlyRentCharge = (netCapCost + residualValue) * moneyFactor;
// 5. Calculate Base Monthly Payment
var basePayment = monthlyDepreciation + monthlyRentCharge;
// 6. Apply Sales Tax
var taxAmount = basePayment * (salesTax / 100);
var totalMonthlyPayment = basePayment + taxAmount;
// Display Results
document.getElementById('resGrossCap').innerText = "$" + negotiatedPrice.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 = "$" + monthlyRentCharge.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resTotal').innerText = "$" + totalMonthlyPayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Show result area
document.getElementById('resultsArea').style.display = 'block';
}