Analyze the profitability of your real estate investment instantly.
Typically 20-25% for investment properties
% of Rent set aside for maintenance
Est. Monthly Cash Flow
$0.00
Monthly Rental Income$0.00
Total Monthly Expenses$0.00
Monthly Mortgage Payment$0.00
Cash-on-Cash Return0.00%
Cap Rate0.00%
Understanding Rental Property Cash Flow
Cash flow is the lifeblood of any rental property investment. Simply put, it is the difference between the monthly rental income you collect and the total expenses associated with owning the property. A positive cash flow means the property is generating income for you every month, while negative cash flow means you are paying out of pocket to hold the asset.
How to Use This Calculator
This Rental Property Cash Flow Calculator helps investors determine if a potential deal makes financial sense. Here is a breakdown of the key inputs:
Purchase Price & Down Payment: These determine your initial investment and loan amount. A higher down payment reduces your monthly mortgage but increases your initial cash outlay.
Vacancy & Repairs: Novice investors often forget to account for these. We recommend setting aside at least 10-15% of monthly rent to cover periods where the property is empty or requires maintenance.
Cash-on-Cash Return: This metric shows the return on the actual cash you invested (down payment), providing a better picture of performance than just looking at the cap rate alone.
What is a Good Cash Flow?
While "good" is subjective, many investors aim for at least $200-$300 in pure positive cash flow per door per month after all expenses, including reserves for repairs. Additionally, a Cash-on-Cash return of 8-12% is often considered a solid benchmark in the current real estate market.
Cap Rate vs. Cash-on-Cash Return
Cap Rate (Capitalization Rate) measures the property's natural rate of return assuming you paid all cash. It helps compare the property against others regardless of financing. Cash-on-Cash Return, however, factors in your leverage (mortgage), showing you how hard your specific invested dollars are working.
function calculateCashFlow() {
// 1. Get Inputs
var price = parseFloat(document.getElementById('rp_purchase_price').value);
var downPct = parseFloat(document.getElementById('rp_down_payment').value);
var interest = parseFloat(document.getElementById('rp_interest_rate').value);
var term = parseFloat(document.getElementById('rp_loan_term').value);
var rent = parseFloat(document.getElementById('rp_monthly_rent').value);
var taxYear = parseFloat(document.getElementById('rp_property_tax').value);
var insuranceYear = parseFloat(document.getElementById('rp_insurance').value);
var maintPct = parseFloat(document.getElementById('rp_expenses_pct').value);
// Validation
if (isNaN(price) || isNaN(rent)) {
alert("Please enter valid numbers for Price and Rent.");
return;
}
// Defaults for empty optional fields
if (isNaN(downPct)) downPct = 20;
if (isNaN(interest)) interest = 6.5;
if (isNaN(term)) term = 30;
if (isNaN(taxYear)) taxYear = 0;
if (isNaN(insuranceYear)) insuranceYear = 0;
if (isNaN(maintPct)) maintPct = 10;
// 2. Calculate Mortgage
var downAmount = price * (downPct / 100);
var loanAmount = price – downAmount;
var monthlyRate = (interest / 100) / 12;
var totalMonths = term * 12;
var mortgagePayment = 0;
if (interest === 0) {
mortgagePayment = loanAmount / totalMonths;
} else {
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, totalMonths)) / (Math.pow(1 + monthlyRate, totalMonths) – 1);
}
// 3. Calculate Monthly Expenses
var taxMonthly = taxYear / 12;
var insMonthly = insuranceYear / 12;
var maintMonthly = rent * (maintPct / 100);
var totalMonthlyExpenses = mortgagePayment + taxMonthly + insMonthly + maintMonthly;
// 4. Calculate Metrics
var monthlyCashFlow = rent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
var cashOnCash = (annualCashFlow / downAmount) * 100;
// Cap Rate = Net Operating Income / Price
// NOI = (Rent * 12) – (Tax + Ins + MaintYear) – NO MORTGAGE
var annualNOI = (rent * 12) – (taxYear + insuranceYear + (maintMonthly * 12));
var capRate = (annualNOI / price) * 100;
// 5. Update UI
var resultDiv = document.getElementById('rp_results');
resultDiv.style.display = 'block';
// Format Currency Helper
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
});
document.getElementById('rp_res_cashflow').innerHTML = formatter.format(monthlyCashFlow);
document.getElementById('rp_res_income').innerHTML = formatter.format(rent);
document.getElementById('rp_res_expenses').innerHTML = formatter.format(totalMonthlyExpenses);
document.getElementById('rp_res_mortgage').innerHTML = formatter.format(mortgagePayment);
document.getElementById('rp_res_coc').innerHTML = cashOnCash.toFixed(2) + "%";
document.getElementById('rp_res_cap').innerHTML = capRate.toFixed(2) + "%";
// Styling for positive/negative flow
var cashFlowEl = document.getElementById('rp_res_cashflow');
if (monthlyCashFlow >= 0) {
cashFlowEl.style.color = "#27ae60";
} else {
cashFlowEl.style.color = "#c0392b";
}
}