Calculating cash flow is the most critical step in evaluating a rental property investment. Cash flow is simply the amount of money left over at the end of the month after all operating expenses and mortgage payments have been made. A positive cash flow indicates a profitable investment, while negative cash flow means you are losing money every month.
How This Calculator Works
Our Rental Property Cash Flow Calculator breaks down the math into three distinct categories:
Acquisition Costs: This includes the purchase price, your down payment percentage, and closing costs. These figures determine your loan amount and your total initial cash investment.
Operating Income: We calculate your effective gross income by taking your expected monthly rent and subtracting a vacancy allowance (money lost when the unit is empty).
Operating Expenses: This includes fixed costs like taxes, insurance, and HOA fees, as well as variable costs like maintenance and property management.
Key Metrics Defined
Net Operating Income (NOI): This is your total income minus operating expenses, excluding the mortgage payment. It measures the profitability of the property itself, regardless of financing.
Cash on Cash Return (CoC): This is arguably the most important metric for investors. It measures the annual return on the actual cash you invested (down payment + closing costs). For example, if you invest $50,000 cash and receive $5,000 in positive cash flow per year, your CoC return is 10%.
Example Scenario
Imagine purchasing a property for $250,000 with 20% down ($50,000). If the monthly rent is $2,200 and your total monthly expenses (mortgage, taxes, insurance, repairs) are $1,900, your monthly cash flow is $300. This results in an annual cash flow of $3,600. If your total cash to close was $55,000, your Cash on Cash return would be roughly 6.5%.
function calculateCashFlow() {
// 1. Get Inputs
var price = parseFloat(document.getElementById('rpc_price').value) || 0;
var downPercent = parseFloat(document.getElementById('rpc_down').value) || 0;
var closingCosts = parseFloat(document.getElementById('rpc_closing').value) || 0;
var interestRate = parseFloat(document.getElementById('rpc_rate').value) || 0;
var loanTermYears = parseFloat(document.getElementById('rpc_term').value) || 0;
var rent = parseFloat(document.getElementById('rpc_rent').value) || 0;
var otherIncome = parseFloat(document.getElementById('rpc_other_income').value) || 0;
var vacancyRate = parseFloat(document.getElementById('rpc_vacancy').value) || 0;
var taxAnnual = parseFloat(document.getElementById('rpc_tax').value) || 0;
var insuranceAnnual = parseFloat(document.getElementById('rpc_insurance').value) || 0;
var maintenanceMonthly = parseFloat(document.getElementById('rpc_maintenance').value) || 0;
var hoaMonthly = parseFloat(document.getElementById('rpc_hoa').value) || 0;
var pmMonthly = parseFloat(document.getElementById('rpc_pm').value) || 0;
// 2. Calculate Mortgage
var downPaymentAmount = price * (downPercent / 100);
var loanAmount = price – downPaymentAmount;
var monthlyRate = (interestRate / 100) / 12;
var totalPayments = loanTermYears * 12;
var mortgagePayment = 0;
if (loanAmount > 0 && interestRate > 0) {
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, totalPayments)) / (Math.pow(1 + monthlyRate, totalPayments) – 1);
} else if (loanAmount > 0 && interestRate === 0) {
mortgagePayment = loanAmount / totalPayments;
}
// 3. Calculate Income
var grossIncome = rent + otherIncome;
var vacancyLoss = grossIncome * (vacancyRate / 100);
var effectiveIncome = grossIncome – vacancyLoss;
// 4. Calculate Operating Expenses (Excluding Mortgage)
var monthlyTax = taxAnnual / 12;
var monthlyInsurance = insuranceAnnual / 12;
var totalOperatingExpenses = monthlyTax + monthlyInsurance + maintenanceMonthly + hoaMonthly + pmMonthly;
// 5. Calculate Metrics
var noiMonthly = effectiveIncome – totalOperatingExpenses;
var noiAnnual = noiMonthly * 12;
var totalMonthlyExpenses = totalOperatingExpenses + mortgagePayment;
var monthlyCashFlow = effectiveIncome – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
var totalCashInvested = downPaymentAmount + closingCosts;
var cashOnCash = 0;
if (totalCashInvested > 0) {
cashOnCash = (annualCashFlow / totalCashInvested) * 100;
}
// 6. Format and Display Results
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2
});
document.getElementById('res_cash_flow').innerText = formatter.format(monthlyCashFlow);
document.getElementById('res_coc').innerText = cashOnCash.toFixed(2) + "%";
document.getElementById('res_noi').innerText = formatter.format(noiAnnual) + " / yr";
document.getElementById('res_expenses').innerText = formatter.format(totalMonthlyExpenses);
document.getElementById('res_mortgage').innerText = formatter.format(mortgagePayment);
// Styling for positive/negative flow
var flowElement = document.getElementById('res_cash_flow');
if (monthlyCashFlow >= 0) {
flowElement.classList.remove('negative');
flowElement.classList.add('positive');
} else {
flowElement.classList.remove('positive');
flowElement.classList.add('negative');
}
document.getElementById('rpc_results_container').classList.add('active');
}
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "What is a good Cash on Cash return?",
"acceptedAnswer": {
"@type": "Answer",
"text": "A good Cash on Cash (CoC) return typically ranges between 8% and 12%, though this varies by market. Some investors target 15%+ for riskier assets, while others accept 5-6% for high-appreciation areas."
}
}, {
"@type": "Question",
"name": "How is Net Operating Income (NOI) calculated?",
"acceptedAnswer": {
"@type": "Answer",
"text": "NOI is calculated by subtracting all operating expenses (property tax, insurance, maintenance, management fees) from the total effective income. It does not include mortgage payments (debt service)."
}
}, {
"@type": "Question",
"name": "Why is the vacancy rate important?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The vacancy rate accounts for periods when the property sits empty between tenants. Ignoring this cost can lead to overestimating your cash flow. A standard vacancy rate to budget for is 5% to 8%."
}
}]
}