Please check your inputs. Ensure all essential fields contain valid numbers.
Investment Analysis
Total Initial Investment (Cash Needed):
Monthly Mortgage Payment (P&I):
Total Monthly Expenses:
Net Operating Income (NOI) / Month:
Monthly Cash Flow:
Cap Rate:
Cash on Cash Return (ROI):
Understanding Rental Property ROI
Investing in real estate is one of the most powerful ways to build wealth, but simply buying a property doesn't guarantee a profit. To succeed, investors must analyze the numbers objectively. This Rental Property Cash Flow & ROI Calculator is designed to help you determine if a potential property is a sound financial investment.
Key Metrics Explained
Cash Flow: The net amount of cash moving in or out of the investment each month. Positive cash flow means the property pays for itself and provides income.
Cash on Cash Return (CoC): A percentage that measures the annual return on the actual cash invested (Down Payment + Closing Costs). This is the "true" ROI for your specific money in the deal.
Cap Rate (Capitalization Rate): Measures the property's natural rate of return assuming it was bought with all cash. It helps compare different properties regardless of financing.
NOI (Net Operating Income): Total revenue minus all necessary operating expenses, excluding mortgage payments.
How to Use This Calculator
To get the most accurate results, input the purchase price and loan details first. The "Purchase Price" and "Down Payment" will determine your loan amount. Be sure to include "Closing Costs" as this significantly impacts your total cash invested.
For expenses, don't overlook Vacancy Rates (typically 5-8%) and Maintenance (typically 5-10%). Even if a property is currently rented, factoring in these costs prevents surprise shortfalls in the future.
Example Scenario
Imagine purchasing a single-family home for $200,000 with a 20% down payment ($40,000). If the monthly rent is $2,000 and your total monthly expenses (mortgage + taxes + insurance + repairs) are $1,600, your monthly cash flow is $400.
Annually, that is $4,800 in profit. If your total initial cash invested was $45,000 (including closing costs), your Cash on Cash Return would be:
($4,800 Annual Cash Flow / $45,000 Total Cash) x 100 = 10.66% ROI.
Use the calculator above to run your own numbers and find your next deal.
function calculateROI() {
// 1. Get Inputs
var price = parseFloat(document.getElementById('purchasePrice').value);
var closing = parseFloat(document.getElementById('closingCosts').value) || 0;
var downPercent = parseFloat(document.getElementById('downPaymentPercent').value);
var interestRate = parseFloat(document.getElementById('interestRate').value);
var termYears = parseFloat(document.getElementById('loanTerm').value);
var rent = parseFloat(document.getElementById('monthlyRent').value);
var vacancyRate = parseFloat(document.getElementById('vacancyRate').value) || 0;
var taxYear = parseFloat(document.getElementById('annualTaxes').value);
var insuranceYear = parseFloat(document.getElementById('annualInsurance').value);
var hoaYear = parseFloat(document.getElementById('annualHOA').value) || 0;
var maintPercent = parseFloat(document.getElementById('maintenancePercent').value) || 0;
var managePercent = parseFloat(document.getElementById('managementFee').value) || 0;
// Validation
if (isNaN(price) || isNaN(downPercent) || isNaN(interestRate) || isNaN(termYears) || isNaN(rent) || isNaN(taxYear) || isNaN(insuranceYear)) {
document.getElementById('errorDisplay').style.display = 'block';
document.getElementById('resultsArea').style.display = 'none';
return;
} else {
document.getElementById('errorDisplay').style.display = 'none';
document.getElementById('resultsArea').style.display = 'block';
}
// 2. Loan Calculations
var downPaymentAmount = price * (downPercent / 100);
var loanAmount = price – downPaymentAmount;
var monthlyRate = (interestRate / 100) / 12;
var numberOfPayments = termYears * 12;
// Mortgage Formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1]
var monthlyMortgage = 0;
if (interestRate > 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else {
monthlyMortgage = loanAmount / numberOfPayments;
}
// 3. Expense Calculations (Monthly)
var vacancyCost = rent * (vacancyRate / 100);
var maintCost = rent * (maintPercent / 100);
var manageCost = rent * (managePercent / 100);
var taxMonth = taxYear / 12;
var insuranceMonth = insuranceYear / 12;
var hoaMonth = hoaYear / 12;
var operatingExpenses = taxMonth + insuranceMonth + hoaMonth + vacancyCost + maintCost + manageCost;
var totalExpenses = operatingExpenses + monthlyMortgage;
// 4. Returns Calculations
var monthlyNOI = rent – operatingExpenses;
var monthlyCashFlow = rent – totalExpenses;
var annualCashFlow = monthlyCashFlow * 12;
var annualNOI = monthlyNOI * 12;
var totalInitialInvestment = downPaymentAmount + closing;
var cashOnCash = 0;
if (totalInitialInvestment > 0) {
cashOnCash = (annualCashFlow / totalInitialInvestment) * 100;
}
var capRate = 0;
if (price > 0) {
capRate = (annualNOI / price) * 100;
}
// 5. Update UI with formatted numbers
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2
});
document.getElementById('resTotalInvestment').innerText = formatter.format(totalInitialInvestment);
document.getElementById('resMortgage').innerText = formatter.format(monthlyMortgage);
document.getElementById('resTotalExpenses').innerText = formatter.format(totalExpenses);
document.getElementById('resNOI').innerText = formatter.format(monthlyNOI);
var cfElement = document.getElementById('resCashFlow');
cfElement.innerText = formatter.format(monthlyCashFlow);
cfElement.style.color = monthlyCashFlow >= 0 ? '#27ae60' : '#c0392b';
document.getElementById('resCapRate').innerText = capRate.toFixed(2) + '%';
var cocElement = document.getElementById('resCoC');
cocElement.innerText = cashOnCash.toFixed(2) + '%';
cocElement.style.color = cashOnCash >= 0 ? '#27ae60' : '#c0392b';
}