Estimate your monthly lease payments by factoring in MSRP, negotiated price, money factor, and residual values.
24 Months
36 Months
48 Months
Tip: APR / 2400 = Money Factor
Lease Summary
Monthly Payment
$0.00
Including Sales Tax
Adjusted Cap Cost:$0.00
Residual Value:$0.00
Depreciation (Monthly):$0.00
Rent Charge (Monthly):$0.00
Total Out-of-Pocket:$0.00
Understanding Your Car Lease Calculation
Leasing a vehicle is often more complex than a standard purchase because you are essentially paying for the depreciation of the car over a fixed period, rather than the full value. This calculator uses the industry-standard formula to help you understand where every dollar goes.
The Four Key Components of a Lease
Gross Capitalized Cost: This is the negotiated price of the vehicle plus any added fees or taxes rolled into the lease.
Residual Value: This is the estimated value of the car at the end of the lease. For example, if a $35,000 car has a 60% residual after 3 years, it is worth $21,000 at lease-end. You only pay for the $14,000 difference.
Money Factor: This is the lease's version of an interest rate. To find the equivalent APR, multiply the money factor by 2400. A money factor of 0.00125 is roughly equal to 3% APR.
Lease Term: Typically 24, 36, or 48 months. Shorter terms usually have higher monthly payments but lower total interest.
Example Calculation
If you lease a car with an MSRP of $40,000, a negotiated price of $38,000, and a $2,000 down payment, your Adjusted Capitalized Cost is $36,000. If the residual is 55% ($22,000) for a 36-month term:
Always negotiate the Sale Price (Capitalized Cost) just as you would if you were buying the car. Many consumers mistakenly focus only on the monthly payment, allowing dealerships to inflate the money factor or add hidden fees. Always verify the residual value against independent sources like Edmunds or Leasehackr to ensure the dealer isn't using a lower value to increase your payment.
function calculateLease() {
// Get values from inputs
var msrp = parseFloat(document.getElementById("msrp").value) || 0;
var salePrice = parseFloat(document.getElementById("salePrice").value) || 0;
var downPayment = parseFloat(document.getElementById("downPayment").value) || 0;
var tradeIn = parseFloat(document.getElementById("tradeIn").value) || 0;
var term = parseFloat(document.getElementById("leaseTerm").value) || 1;
var residualPercent = parseFloat(document.getElementById("residualPercent").value) || 0;
var moneyFactor = parseFloat(document.getElementById("moneyFactor").value) || 0;
var taxRate = parseFloat(document.getElementById("salesTax").value) || 0;
// 1. Calculate Adjusted Capitalized Cost
var adjCapCost = salePrice – downPayment – tradeIn;
// 2. Calculate Residual Value Amount
var residualValue = msrp * (residualPercent / 100);
// 3. Monthly Depreciation Fee
// (Adj Cap Cost – Residual) / Term
var monthlyDepreciation = (adjCapCost – residualValue) / term;
if (monthlyDepreciation < 0) monthlyDepreciation = 0;
// 4. Monthly rent charge
// (Adj Cap Cost + Residual) * Money Factor
var monthlyRentCharge = (adjCapCost + residualValue) * moneyFactor;
// 5. Base Monthly Payment
var basePayment = monthlyDepreciation + monthlyRentCharge;
// 6. Monthly Tax
var monthlyTax = basePayment * (taxRate / 100);
// 7. Total Monthly Payment
var totalMonthly = basePayment + monthlyTax;
// 8. Total Out of Pocket
var totalOut = downPayment + tradeIn;
// Update Display
document.getElementById("monthlyResult").innerText = "$" + totalMonthly.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("capCostVal").innerText = "$" + adjCapCost.toLocaleString();
document.getElementById("residualVal").innerText = "$" + residualValue.toLocaleString();
document.getElementById("deprecVal").innerText = "$" + monthlyDepreciation.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("rentVal").innerText = "$" + monthlyRentCharge.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("totalOut").innerText = "$" + totalOut.toLocaleString();
}
// Run once on load
window.onload = function() {
calculateLease();
};