Analyze the potential profitability of your real estate investment.
Purchase Information
Loan Details
Income & Expenses
Monthly Cash Flow
$0.00
Cash on Cash ROI
0.00%
Net Operating Income (Monthly)
$0.00
Total Initial Investment
$0.00
Understanding Rental Property Cash Flow
Investing in real estate is one of the most reliable ways to build long-term wealth, but success hinges on the numbers. The most critical metric for any rental investor is Cash Flow—the net amount of money moving in or out of your pocket every month after all expenses are paid.
How to Calculate Cash Flow
Our calculator uses a comprehensive formula to determine the viability of your investment:
Gross Income: Your total rental income minus estimated vacancy losses.
Operating Expenses: Includes property taxes, insurance, HOA fees, repairs, and management.
Net Operating Income (NOI): Gross Income minus Operating Expenses.
Debt Service: Your monthly mortgage principal and interest payments.
Cash Flow: NOI minus Debt Service.
Key Metrics Explained
Beyond simple cash flow, smart investors look at the Cash on Cash Return (CoC ROI). This metric compares your annual pre-tax cash flow to the total cash invested (down payment plus closing costs). It tells you exactly how hard your actual dollars are working for you, unlike Cap Rate which looks at the property's performance regardless of financing.
Optimizing Your Investment
If your calculated cash flow is negative, consider negotiating a lower purchase price to reduce the mortgage, shopping for better insurance rates, or increasing the rent if the market allows. Remember to account for a "Vacancy Rate" (typically 5-10%) and set aside a budget for repairs (typically 5-10% of rent) to avoid surprises that could derail your profitability.
function calculateCashFlow() {
// Get Inputs
var price = parseFloat(document.getElementById('purchasePrice').value) || 0;
var downPerc = parseFloat(document.getElementById('downPayment').value) || 0;
var intRate = parseFloat(document.getElementById('interestRate').value) || 0;
var termYears = parseFloat(document.getElementById('loanTerm').value) || 0;
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var vacancyRate = parseFloat(document.getElementById('vacancyRate').value) || 0;
var annualTax = parseFloat(document.getElementById('annualTax').value) || 0;
var annualIns = parseFloat(document.getElementById('annualInsurance').value) || 0;
var monthlyHOA = parseFloat(document.getElementById('monthlyHOA').value) || 0;
var repairPerc = parseFloat(document.getElementById('repairCost').value) || 0;
// Calculations
// 1. Initial Investment
var downPaymentAmount = price * (downPerc / 100);
var loanAmount = price – downPaymentAmount;
// Assume 2% closing costs for the sake of the Total Investment calculation estimate
var closingCosts = price * 0.02;
var totalInvestment = downPaymentAmount + closingCosts;
// 2. Mortgage Payment (Principal & Interest)
var monthlyRate = (intRate / 100) / 12;
var numberOfPayments = termYears * 12;
var monthlyPI = 0;
if (intRate > 0) {
monthlyPI = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else {
monthlyPI = loanAmount / numberOfPayments;
}
// 3. Expenses
var monthlyTax = annualTax / 12;
var monthlyIns = annualIns / 12;
var vacancyLoss = monthlyRent * (vacancyRate / 100);
var repairCost = monthlyRent * (repairPerc / 100);
var totalMonthlyExpenses = monthlyTax + monthlyIns + monthlyHOA + vacancyLoss + repairCost;
// 4. Net Operating Income (NOI)
var grossIncome = monthlyRent; // Effective gross income usually subtracts vacancy, we treat vacancy as expense here for clarity or subtract it now.
// Let's stick to standard: NOI = Income – Operating Expenses (Vacancy is an expense/loss)
var noi = monthlyRent – totalMonthlyExpenses;
// 5. Cash Flow
var monthlyCashFlow = noi – monthlyPI;
var annualCashFlow = monthlyCashFlow * 12;
// 6. Cash on Cash Return
var cocRoi = 0;
if (totalInvestment > 0) {
cocRoi = (annualCashFlow / totalInvestment) * 100;
}
// Formatting Output
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
});
document.getElementById('resCashFlow').innerHTML = formatter.format(monthlyCashFlow);
document.getElementById('resCashFlow').className = monthlyCashFlow >= 0 ? "result-value positive" : "result-value negative";
document.getElementById('resCoc').innerHTML = cocRoi.toFixed(2) + "%";
document.getElementById('resCoc').className = cocRoi >= 0 ? "result-value positive" : "result-value negative";
document.getElementById('resNOI').innerHTML = formatter.format(noi);
document.getElementById('resInvestment').innerHTML = formatter.format(totalInvestment);
// Show Results
document.getElementById('resultsArea').style.display = "block";
}