Please enter valid positive numbers for all fields.
Monthly Financial Analysis
Gross Monthly Income:$0.00
Vacancy Loss:-$0.00
Effective Gross Income:$0.00
Mortgage Payment (P&I):-$0.00
Property Taxes (Mo):-$0.00
Insurance (Mo):-$0.00
HOA & Fees:-$0.00
Maintenance Reserve (Mo):-$0.00
Net Monthly Cash Flow:$0.00
Return on Investment (ROI)
Total Initial Investment (Cash to Close):$0.00
Cash-on-Cash Return:0.00%
Cap Rate:0.00%
Understanding Rental Property Cash Flow
Investing in real estate is one of the most reliable ways to build wealth, but not every property is a good deal. The key to successful real estate investing is positive cash flow—the profit remaining after all expenses are paid.
This Rental Property Cash Flow Calculator helps investors analyze deals by accounting for all major variables, including mortgage payments, vacancy rates, maintenance reserves, and property taxes.
Key Metrics Explained
Cash Flow: Your net profit per month. Income minus all expenses (including mortgage). Positive cash flow means the property pays you to own it.
Cash-on-Cash Return (CoC): A percentage measuring the return on the actual cash invested (Down payment + Closing costs). It's calculated as (Annual Cash Flow / Total Cash Invested) * 100.
Cap Rate (Capitalization Rate): Measures the natural rate of return of the property assuming you paid all cash. It helps compare properties regardless of financing. Formula: (Net Operating Income / Purchase Price) * 100.
Net Operating Income (NOI): All revenue from the property minus all necessary operating expenses. NOI excludes mortgage payments.
How to Estimate Expenses
Underestimating expenses is the #1 mistake new investors make. Always account for:
Vacancy: Even in hot markets, tenants move out. A standard safe estimate is 5-8% (about 2-3 weeks per year).
Maintenance: Roofs leak and water heaters break. Budgeting 1% of the property value annually is a prudent rule of thumb.
Management: Even if you self-manage now, value your time. Property managers typically charge 8-10% of gross rent.
Frequently Asked Questions
What is a good Cash-on-Cash return?
While it varies by investor goals and market conditions, many investors target a Cash-on-Cash return of 8% to 12%. In highly appreciative markets, investors might accept lower cash flow (4-6%) in exchange for long-term equity growth.
Does this calculator include principal paydown?
This calculator focuses on cash flow (liquid profit). However, principal paydown is another form of profit (equity build-up) that increases your overall ROI (Return on Investment) but doesn't put cash in your pocket monthly.
How do I calculate the 1% Rule?
The 1% rule states that the monthly rent should be at least 1% of the purchase price. For example, a $200,000 home should rent for $2,000/month. If a property meets this rule, it is likely to have positive cash flow.
function calculateCashFlow() {
// 1. Get Input Values
var purchasePrice = parseFloat(document.getElementById('purchasePrice').value);
var downPayment = parseFloat(document.getElementById('downPayment').value);
var interestRate = parseFloat(document.getElementById('interestRate').value);
var loanTerm = parseFloat(document.getElementById('loanTerm').value);
var closingCosts = parseFloat(document.getElementById('closingCosts').value);
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value);
var propertyTaxAnnual = parseFloat(document.getElementById('propertyTax').value);
var insuranceAnnual = parseFloat(document.getElementById('insurance').value);
var hoa = parseFloat(document.getElementById('hoa').value);
var maintenancePercent = parseFloat(document.getElementById('maintenance').value);
var vacancyPercent = parseFloat(document.getElementById('vacancy').value);
// Validation
if (isNaN(purchasePrice) || isNaN(downPayment) || isNaN(interestRate) ||
isNaN(loanTerm) || isNaN(monthlyRent) || isNaN(propertyTaxAnnual) ||
isNaN(insuranceAnnual)) {
document.getElementById('errorMsg').style.display = 'block';
return;
} else {
document.getElementById('errorMsg').style.display = 'none';
}
// 2. Loan Calculations
var loanAmount = purchasePrice – downPayment;
var monthlyRate = (interestRate / 100) / 12;
var totalPayments = loanTerm * 12;
var mortgagePayment = 0;
if (interestRate > 0) {
// Standard Mortgage Formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, totalPayments)) / (Math.pow(1 + monthlyRate, totalPayments) – 1);
} else {
mortgagePayment = loanAmount / totalPayments;
}
// 3. Expense Calculations (Monthly)
var vacancyCost = monthlyRent * (vacancyPercent / 100);
var effectiveIncome = monthlyRent – vacancyCost;
var taxMonthly = propertyTaxAnnual / 12;
var insuranceMonthly = insuranceAnnual / 12;
var maintenanceMonthly = (purchasePrice * (maintenancePercent / 100)) / 12;
var totalOperatingExpenses = taxMonthly + insuranceMonthly + hoa + maintenanceMonthly; // Excluding Mortgage
var totalExpenses = totalOperatingExpenses + mortgagePayment; // Including Mortgage
// 4. Result Metrics
var monthlyCashFlow = effectiveIncome – totalExpenses;
var annualCashFlow = monthlyCashFlow * 12;
var totalInitialInvestment = downPayment + closingCosts;
var cashOnCashReturn = 0;
if (totalInitialInvestment > 0) {
cashOnCashReturn = (annualCashFlow / totalInitialInvestment) * 100;
}
// Cap Rate = (Net Operating Income / Purchase Price) * 100
// NOI = Effective Income – Operating Expenses (No Mortgage)
var monthlyNOI = effectiveIncome – totalOperatingExpenses;
var annualNOI = monthlyNOI * 12;
var capRate = (annualNOI / purchasePrice) * 100;
// 5. Update DOM
// Format Currency Helper
var fmt = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
document.getElementById('resIncome').textContent = fmt.format(monthlyRent);
document.getElementById('resVacancy').textContent = "-" + fmt.format(vacancyCost);
document.getElementById('resEffectiveIncome').textContent = fmt.format(effectiveIncome);
document.getElementById('resMortgage').textContent = "-" + fmt.format(mortgagePayment);
document.getElementById('resTax').textContent = "-" + fmt.format(taxMonthly);
document.getElementById('resInsurance').textContent = "-" + fmt.format(insuranceMonthly);
document.getElementById('resHoa').textContent = "-" + fmt.format(hoa);
document.getElementById('resMaintenance').textContent = "-" + fmt.format(maintenanceMonthly);
// Cash Flow Styling
var cashFlowEl = document.getElementById('resCashFlow');
cashFlowEl.textContent = fmt.format(monthlyCashFlow);
if (monthlyCashFlow < 0) {
cashFlowEl.classList.remove('highlight');
cashFlowEl.classList.add('negative');
} else {
cashFlowEl.classList.add('highlight');
cashFlowEl.classList.remove('negative');
}
document.getElementById('resInitialInvest').textContent = fmt.format(totalInitialInvestment);
document.getElementById('resCoc').textContent = cashOnCashReturn.toFixed(2) + "%";
document.getElementById('resCapRate').textContent = capRate.toFixed(2) + "%";
}
// Initialize with default values on load
window.onload = function() {
calculateCashFlow();
};