Calculate Cash Flow, Cap Rate, and Cash on Cash Return
Purchase Details
Income & Expenses
Property Performance
Monthly Principal & Interest:–
Total Monthly Expenses (inc. Mortgage):–
Monthly Cash Flow:–
Annual Net Operating Income (NOI):–
Cap Rate:–
Cash on Cash Return:–
Understanding Rental Property ROI
Investing in real estate requires more than just buying a property and collecting rent. To ensure a profitable investment, you must accurately calculate your Cash on Cash Return and Net Operating Income (NOI). This calculator helps investors evaluate the potential profitability of a residential rental property.
Key Metrics Defined
Cash Flow: The net amount of cash moving in or out of the investment each month. It is calculated as Rental Income – (Operating Expenses + Mortgage Payment). Positive cash flow is essential for long-term sustainability.
Cash on Cash Return (CoC): This is arguably the most important metric for cash investors. It measures the annual cash income earned on the cash invested. The formula is (Annual Cash Flow / Total Cash Invested) × 100. A CoC return of 8-12% is often considered good in many markets.
Cap Rate (Capitalization Rate): This measures the property's natural rate of return assuming it was bought with all cash. It helps compare properties regardless of financing. The formula is (Net Operating Income / Purchase Price) × 100.
How to Use This Calculator
Start by entering the Purchase Price and your financing details. Be honest with your expense estimates. Beginners often underestimate maintenance and vacancy costs. A common rule of thumb is to set aside 10-15% of the rent for maintenance and capital expenditures (Capex) over time.
Example Scenario:
If you buy a house for $200,000 with $50,000 down, and it generates $3,000/year in positive cash flow, your Cash on Cash return is ($3,000 / $50,000) = 6%. By adjusting the rent or lowering expenses, you can see how the yield improves.
function calculateROI() {
// 1. Get Input Values
var price = parseFloat(document.getElementById('purchasePrice').value);
var down = parseFloat(document.getElementById('downPayment').value);
var closing = parseFloat(document.getElementById('closingCosts').value);
var rate = parseFloat(document.getElementById('interestRate').value);
var years = parseFloat(document.getElementById('loanTerm').value);
var rent = parseFloat(document.getElementById('monthlyRent').value);
var taxes = parseFloat(document.getElementById('monthlyTaxes').value);
var insurance = parseFloat(document.getElementById('monthlyInsurance').value);
var maintenance = parseFloat(document.getElementById('monthlyMaintenance').value);
var other = parseFloat(document.getElementById('otherExpenses').value);
// 2. Validate Inputs
if (isNaN(price) || isNaN(down) || isNaN(rent) || isNaN(rate) || isNaN(years)) {
alert("Please enter valid numbers for Price, Down Payment, Rent, Rate, and Loan Term.");
return;
}
// Default 0 for optional fields if left empty
if (isNaN(closing)) closing = 0;
if (isNaN(taxes)) taxes = 0;
if (isNaN(insurance)) insurance = 0;
if (isNaN(maintenance)) maintenance = 0;
if (isNaN(other)) other = 0;
// 3. Calculate Mortgage Payment (Principal & Interest)
var loanAmount = price – down;
var monthlyRate = rate / 100 / 12;
var numberOfPayments = years * 12;
var mortgagePayment = 0;
if (rate > 0) {
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else {
mortgagePayment = loanAmount / numberOfPayments;
}
// 4. Calculate Operating Expenses & NOI
var totalOperatingExpenses = taxes + insurance + maintenance + other; // Does NOT include mortgage
var monthlyNOI = rent – totalOperatingExpenses;
var annualNOI = monthlyNOI * 12;
// 5. Calculate Cash Flow
var totalMonthlyExpenses = totalOperatingExpenses + mortgagePayment;
var monthlyCashFlow = rent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// 6. Calculate Returns
var totalCashInvested = down + closing;
var capRate = (annualNOI / price) * 100;
var cashOnCash = 0;
if (totalCashInvested > 0) {
cashOnCash = (annualCashFlow / totalCashInvested) * 100;
}
// 7. Display Results
document.getElementById('resultsArea').style.display = 'block';
document.getElementById('displayMortgage').innerHTML = "$" + mortgagePayment.toFixed(2);
document.getElementById('displayTotalExpenses').innerHTML = "$" + totalMonthlyExpenses.toFixed(2);
var cashFlowElement = document.getElementById('displayCashFlow');
cashFlowElement.innerHTML = "$" + monthlyCashFlow.toFixed(2);
if(monthlyCashFlow < 0) {
cashFlowElement.style.color = "#e74c3c"; // Red if negative
} else {
cashFlowElement.style.color = "#27ae60"; // Green if positive
}
document.getElementById('displayNOI').innerHTML = "$" + annualNOI.toFixed(2);
document.getElementById('displayCapRate').innerHTML = capRate.toFixed(2) + "%";
document.getElementById('displayCoC').innerHTML = cashOnCash.toFixed(2) + "%";
}