Analyze your real estate investment deal instantly.
Purchase Information
Loan Details
Monthly Income
Operating Expenses
Please fill in all required fields with valid numbers.
Monthly Cash Flow$0.00
Cash on Cash ROI0.00%
Cap Rate0.00%
Total Monthly Expenses$0.00
Monthly Mortgage Payment$0.00
Net Operating Income (NOI) / Mo$0.00
Total Initial Investment$0.00
function calculateRentalROI() {
// 1. Get Input Values
var price = parseFloat(document.getElementById('rpc_price').value);
var downPercent = parseFloat(document.getElementById('rpc_down_percent').value);
var closingCosts = parseFloat(document.getElementById('rpc_closing_costs').value) || 0;
var rehab = parseFloat(document.getElementById('rpc_rehab').value) || 0;
var interestRate = parseFloat(document.getElementById('rpc_interest').value);
var termYears = parseFloat(document.getElementById('rpc_term').value);
var rent = parseFloat(document.getElementById('rpc_rent').value);
var otherIncome = parseFloat(document.getElementById('rpc_other_income').value) || 0;
var taxYear = parseFloat(document.getElementById('rpc_tax').value);
var insYear = parseFloat(document.getElementById('rpc_insurance').value);
var hoa = parseFloat(document.getElementById('rpc_hoa').value) || 0;
var vacancyPercent = parseFloat(document.getElementById('rpc_vacancy').value) || 0;
var maintPercent = parseFloat(document.getElementById('rpc_maintenance').value) || 0;
var mgmtPercent = parseFloat(document.getElementById('rpc_management').value) || 0;
// 2. Validation
var errorDiv = document.getElementById('rpc_error');
if (isNaN(price) || isNaN(downPercent) || isNaN(interestRate) || isNaN(termYears) || isNaN(rent) || isNaN(taxYear) || isNaN(insYear)) {
errorDiv.style.display = 'block';
document.getElementById('rpc_results').style.display = 'none';
return;
}
errorDiv.style.display = 'none';
// 3. Logic Calculations
// Loan Calcs
var downPayment = price * (downPercent / 100);
var loanAmount = price – downPayment;
var monthlyRate = (interestRate / 100) / 12;
var numPayments = termYears * 12;
var monthlyMortgage = 0;
if (monthlyRate > 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
} else {
monthlyMortgage = loanAmount / numPayments;
}
// Operating Expenses
var monthlyTax = taxYear / 12;
var monthlyIns = insYear / 12;
var grossMonthlyIncome = rent + otherIncome;
var vacancyCost = grossMonthlyIncome * (vacancyPercent / 100);
var maintCost = grossMonthlyIncome * (maintPercent / 100);
var mgmtCost = grossMonthlyIncome * (mgmtPercent / 100);
var totalOperatingExpenses = monthlyTax + monthlyIns + hoa + vacancyCost + maintCost + mgmtCost;
var totalMonthlyExpenses = totalOperatingExpenses + monthlyMortgage;
// Metrics
var monthlyCashFlow = grossMonthlyIncome – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
var totalInvestment = downPayment + closingCosts + rehab;
var cashOnCash = 0;
if (totalInvestment > 0) {
cashOnCash = (annualCashFlow / totalInvestment) * 100;
}
var monthlyNOI = grossMonthlyIncome – totalOperatingExpenses;
var annualNOI = monthlyNOI * 12;
var capRate = (annualNOI / (price + rehab)) * 100;
// 4. Update UI
function formatMoney(num) {
return '$' + num.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
}
document.getElementById('res_cashflow').innerText = formatMoney(monthlyCashFlow);
document.getElementById('res_cashflow').style.color = monthlyCashFlow >= 0 ? '#27ae60' : '#e74c3c';
document.getElementById('res_coc').innerText = cashOnCash.toFixed(2) + '%';
document.getElementById('res_coc').style.color = cashOnCash >= 0 ? '#27ae60' : '#e74c3c';
document.getElementById('res_cap').innerText = capRate.toFixed(2) + '%';
document.getElementById('res_expenses').innerText = formatMoney(totalMonthlyExpenses);
document.getElementById('res_mortgage').innerText = formatMoney(monthlyMortgage);
document.getElementById('res_noi').innerText = formatMoney(monthlyNOI);
document.getElementById('res_investment').innerText = formatMoney(totalInvestment);
document.getElementById('rpc_results').style.display = 'block';
}
How to Use the Rental Property Cash Flow Calculator
Investing in real estate is one of the most reliable ways to build wealth, but it requires accurate analysis. This calculator helps investors determine the profitability of a potential rental property by breaking down income, expenses, and key return on investment (ROI) metrics.
Key Metrics Explained
1. Monthly Cash Flow
Cash flow is the net amount of money moving in or out of your rental business each month. It is calculated by subtracting your total monthly expenses (mortgage, taxes, insurance, vacancy allowance, repairs) from your total monthly rental income. Positive cash flow means the property pays for itself and puts money in your pocket.
2. Cash on Cash ROI
The Cash on Cash Return on Investment (ROI) measures the annual return you are making on the actual cash you invested (Down Payment + Closing Costs + Rehab). Unlike Cap Rate, this metric takes your financing (debt) into account. A Cash on Cash return of 8-12% is generally considered a solid benchmark for rental investors.
3. Cap Rate (Capitalization Rate)
Cap Rate indicates the rate of return on a property based on the income the property is expected to generate, assuming the property was bought with all cash. It helps compare the intrinsic value of different properties regardless of how they are financed. Formula: (Net Operating Income / Property Value) × 100.
Input Guide
Vacancy Rate: Always account for the time the property sits empty between tenants. A standard conservative estimate is 5-8%.
Maintenance: Properties degrade over time. Setting aside 5-10% of rent for repairs (CapEx) ensures a broken water heater doesn't ruin your year.
Management Fee: If you hire a professional property manager, they typically charge 8-10% of the monthly rent. If you self-manage, you can set this to 0%, but your time still has value!