Analyze your real estate deal to see if it generates positive cash flow.
Purchase & Loan
Income & Expenses
Investment Analysis
$0.00Monthly Cash Flow
0.00%Cash on Cash Return
0.00%Cap Rate
$0.00Annual NOI
Monthly Breakdown
Gross Rental Income:$0.00
Less Vacancy:-$0.00
Effective Income:$0.00
Mortgage (P&I):-$0.00
Property Taxes:-$0.00
Insurance:-$0.00
HOA / Management / Maint:-$0.00
Total Monthly Expenses:$0.00
function calculateCashFlow() {
// 1. Get Input Values
var price = parseFloat(document.getElementById('purchasePrice').value);
var downPercent = parseFloat(document.getElementById('downPaymentPercent').value);
var interestRate = parseFloat(document.getElementById('interestRate').value);
var termYears = parseFloat(document.getElementById('loanTerm').value);
var closingCosts = parseFloat(document.getElementById('closingCosts').value);
var rent = parseFloat(document.getElementById('monthlyRent').value);
var taxYear = parseFloat(document.getElementById('propertyTax').value);
var insuranceYear = parseFloat(document.getElementById('homeInsurance').value);
var hoaMonth = parseFloat(document.getElementById('hoaFees').value);
var maintPercent = parseFloat(document.getElementById('maintenancePercent').value);
var vacancyPercent = parseFloat(document.getElementById('vacancyPercent').value);
var managePercent = parseFloat(document.getElementById('managementPercent').value);
// Validation
if (isNaN(price) || isNaN(rent) || isNaN(interestRate)) {
alert("Please fill in all required fields with valid numbers.");
return;
}
// 2. Loan Calculations
var downPaymentAmount = price * (downPercent / 100);
var loanAmount = price – downPaymentAmount;
var monthlyRate = (interestRate / 100) / 12;
var numPayments = termYears * 12;
// Mortgage P&I Formula
var mortgagePayment = 0;
if (interestRate > 0) {
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
} else {
mortgagePayment = loanAmount / numPayments;
}
// 3. Operating Expenses & Income Logic
var vacancyAmount = rent * (vacancyPercent / 100);
var effectiveIncome = rent – vacancyAmount;
var maintenanceAmount = rent * (maintPercent / 100);
var managementAmount = rent * (managePercent / 100);
var monthlyTax = taxYear / 12;
var monthlyInsurance = insuranceYear / 12;
var totalOperatingExpenses = maintenanceAmount + managementAmount + monthlyTax + monthlyInsurance + hoaMonth;
var totalMonthlyExpenses = totalOperatingExpenses + mortgagePayment;
// 4. Net Metrics
var monthlyCashFlow = effectiveIncome – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// NOI (Net Operating Income) = Effective Income – Operating Expenses (Not including Mortgage)
var monthlyNOI = effectiveIncome – totalOperatingExpenses;
var annualNOI = monthlyNOI * 12;
// Cap Rate = Annual NOI / Purchase Price
var capRate = (annualNOI / price) * 100;
// Cash on Cash Return = Annual Cash Flow / Total Cash Invested
var totalCashInvested = downPaymentAmount + closingCosts;
var cocReturn = (annualCashFlow / totalCashInvested) * 100;
// 5. Display Results
var formatCurrency = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
document.getElementById('monthlyCashFlowDisplay').innerHTML = formatCurrency.format(monthlyCashFlow);
document.getElementById('cocReturnDisplay').innerHTML = cocReturn.toFixed(2) + '%';
document.getElementById('capRateDisplay').innerHTML = capRate.toFixed(2) + '%';
document.getElementById('noiDisplay').innerHTML = formatCurrency.format(annualNOI);
document.getElementById('grossIncomeRow').innerHTML = formatCurrency.format(rent);
document.getElementById('vacancyRow').innerHTML = "-" + formatCurrency.format(vacancyAmount);
document.getElementById('effectiveIncomeRow').innerHTML = formatCurrency.format(effectiveIncome);
document.getElementById('mortgageRow').innerHTML = "-" + formatCurrency.format(mortgagePayment);
document.getElementById('taxRow').innerHTML = "-" + formatCurrency.format(monthlyTax);
document.getElementById('insuranceRow').innerHTML = "-" + formatCurrency.format(monthlyInsurance);
document.getElementById('operatingRow').innerHTML = "-" + formatCurrency.format(maintenanceAmount + managementAmount + hoaMonth);
document.getElementById('totalExpensesRow').innerHTML = formatCurrency.format(totalMonthlyExpenses);
// Styling updates based on profitability
var cfBox = document.getElementById('cashFlowBox');
var cocBox = document.getElementById('cocBox');
if (monthlyCashFlow >= 0) {
cfBox.className = "rpc-metric-box positive";
document.getElementById('monthlyCashFlowDisplay').style.color = "#27ae60";
} else {
cfBox.className = "rpc-metric-box negative";
document.getElementById('monthlyCashFlowDisplay').style.color = "#c0392b";
}
if (cocReturn >= 0) {
cocBox.className = "rpc-metric-box positive";
} else {
cocBox.className = "rpc-metric-box negative";
}
document.getElementById('resultsArea').style.display = 'block';
// Scroll to results
document.getElementById('resultsArea').scrollIntoView({ behavior: 'smooth' });
}
Understanding Rental Property Cash Flow
Calculating cash flow is the most critical step in evaluating a real estate investment. Cash flow represents the net amount of money moving into or out of your rental property business every month. Positive cash flow means your property generates more income than it costs to operate, while negative cash flow means you are losing money every month.
How This Calculator Works
This Rental Property Cash Flow Calculator provides a comprehensive analysis by considering not just the mortgage, but all operating expenses that eat into your profit. Here is a breakdown of the key metrics calculated:
Net Operating Income (NOI): This is the total income generated by the property minus all operating expenses (taxes, insurance, maintenance, etc.), excluding the mortgage payments. It measures the property's potential profitability as a standalone asset.
Cash on Cash Return (CoC): This metric compares your annual pre-tax cash flow to the total cash invested (Down Payment + Closing Costs). It tells you how hard your actual dollars are working for you. A CoC return of 8-12% is generally considered good in many markets.
Cap Rate (Capitalization Rate): Calculated by dividing the NOI by the property's purchase price. Cap Rate helps you compare the profitability of different properties regardless of how they are financed.
Key Inputs Explained
To get the most accurate results, ensure you estimate expenses conservatively:
Vacancy Rate: No property is occupied 100% of the time. A standard vacancy allowance is 5% to 8% (roughly 2-4 weeks per year).
Maintenance & Repairs: Even if a house is new, things break. Setting aside 5% to 10% of monthly rent helps cover future roof repairs, HVAC issues, or painting.
Property Management: If you hire a professional manager, they typically charge 8% to 10% of the collected rent. Even if you self-manage, it is wise to factor this in as "paying yourself" for the work.
Use this tool to simulate different scenarios—such as offering a lower offer price or increasing the down payment—to see how they affect your monthly cash flow and overall return on investment.