function calculateCashFlow() {
// Get Inputs
var price = parseFloat(document.getElementById('purchasePrice').value) || 0;
var downPercent = parseFloat(document.getElementById('downPaymentPercent').value) || 0;
var interestRate = parseFloat(document.getElementById('interestRate').value) || 0;
var termYears = parseFloat(document.getElementById('loanTerm').value) || 0;
var closingCosts = parseFloat(document.getElementById('closingCosts').value) || 0;
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var annualTax = parseFloat(document.getElementById('propertyTax').value) || 0;
var annualIns = parseFloat(document.getElementById('homeInsurance').value) || 0;
var monthlyHOA = parseFloat(document.getElementById('hoaFee').value) || 0;
var vacancyRate = parseFloat(document.getElementById('vacancyRate').value) || 0;
var maintRate = parseFloat(document.getElementById('maintenanceRate').value) || 0;
// Loan Calculations
var downPayment = price * (downPercent / 100);
var loanAmount = price – downPayment;
var monthlyRate = (interestRate / 100) / 12;
var totalPayments = termYears * 12;
var monthlyMortgage = 0;
if (loanAmount > 0 && monthlyRate > 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, totalPayments)) / (Math.pow(1 + monthlyRate, totalPayments) – 1);
} else if (loanAmount > 0 && monthlyRate === 0) {
monthlyMortgage = loanAmount / totalPayments;
}
// Expense Calculations
var monthlyTax = annualTax / 12;
var monthlyIns = annualIns / 12;
var monthlyVacancy = monthlyRent * (vacancyRate / 100);
var monthlyMaint = monthlyRent * (maintRate / 100);
var totalOperatingExpenses = monthlyTax + monthlyIns + monthlyHOA + monthlyVacancy + monthlyMaint;
var totalExpenses = totalOperatingExpenses + monthlyMortgage;
// Metrics
var monthlyCashFlow = monthlyRent – totalExpenses;
var annualCashFlow = monthlyCashFlow * 12;
var totalCashInvested = downPayment + closingCosts;
var monthlyNOI = monthlyRent – totalOperatingExpenses;
var annualNOI = monthlyNOI * 12;
var cocReturn = 0;
if (totalCashInvested > 0) {
cocReturn = (annualCashFlow / totalCashInvested) * 100;
}
var capRate = 0;
if (price > 0) {
capRate = (annualNOI / price) * 100;
}
// Display Results
document.getElementById('resMortgage').innerText = formatCurrency(monthlyMortgage);
document.getElementById('resExpenses').innerText = formatCurrency(totalExpenses);
document.getElementById('resNOI').innerText = formatCurrency(monthlyNOI);
var cashFlowElem = document.getElementById('resCashFlow');
cashFlowElem.innerText = formatCurrency(monthlyCashFlow);
if(monthlyCashFlow >= 0) {
cashFlowElem.className = "rp-result-value rp-highlight";
} else {
cashFlowElem.className = "rp-result-value rp-highlight-neg";
}
document.getElementById('resCoC').innerText = cocReturn.toFixed(2) + '%';
document.getElementById('resCapRate').innerText = capRate.toFixed(2) + '%';
document.getElementById('resultsArea').style.display = 'block';
}
function formatCurrency(num) {
return '$' + num.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
}
How to Calculate Rental Property Cash Flow
Investing in real estate is one of the most reliable ways to build wealth, but the success of any rental property hinges on the numbers. Understanding your Net Operating Income (NOI), Cash on Cash Return, and monthly Cash Flow is essential for making informed investment decisions. This calculator helps investors analyze deals quickly and accurately.
Key Metrics Explained
Cash Flow: This is the net amount of cash moving in or out of your business after all expenses and mortgage payments are made. Positive cash flow means the property pays for itself and generates profit.
Net Operating Income (NOI): This calculates the profitability of a property before adding in any mortgage costs or taxes. It is derived by subtracting operating expenses from gross income.
Cap Rate (Capitalization Rate): A measure used to estimate the investor's potential return on their investment. It is calculated by dividing the NOI by the property's current market value.
Cash on Cash Return: This metric calculates the cash income earned on the cash invested in a property. It differs from standard return on investment (ROI) because it only looks at the actual cash invested (Down Payment + Closing Costs), providing a realistic view of your liquidity.
Why the "1% Rule" isn't Enough
Many novice investors rely on the "1% Rule," which suggests that a property's monthly rent should be at least 1% of the purchase price. While this is a good quick filter, it ignores crucial variables like property taxes, insurance premiums, HOA fees, and interest rates. Our Rental Property Cash Flow Calculator accounts for these specific expenses to give you a true picture of an asset's performance.
Estimating Vacancy and Maintenance
One of the most common mistakes in rental property analysis is underestimating variable costs. Always factor in:
Vacancy Rate: Even in hot markets, tenants move out. A standard conservative estimate is 5-8% (about 2-4 weeks of vacancy per year).
Maintenance & CapEx: Roofs leak and water heaters break. Setting aside 5-10% of monthly rent for repairs ensures your cash flow remains positive even when things go wrong.
Use the tool above to run different scenarios. Adjust the purchase price, down payment, or interest rate to see how sensitive your cash flow is to market changes. A robust investment should maintain positive cash flow even if expenses rise slightly or rents stagnate.