function calculateRentalCashFlow() {
// Get Inputs
var price = parseFloat(document.getElementById('rpPurchasePrice').value);
var downPercent = parseFloat(document.getElementById('rpDownPayment').value);
var interestRate = parseFloat(document.getElementById('rpInterestRate').value);
var termYears = parseFloat(document.getElementById('rpLoanTerm').value);
var rent = parseFloat(document.getElementById('rpMonthlyRent').value);
var vacancyPercent = parseFloat(document.getElementById('rpVacancyRate').value);
var taxYearly = parseFloat(document.getElementById('rpPropertyTax').value);
var insuranceYearly = parseFloat(document.getElementById('rpInsurance').value);
var maintenanceMonthly = parseFloat(document.getElementById('rpMaintenance').value);
var mgmtPercent = parseFloat(document.getElementById('rpManagementFee').value);
// Validation
if (isNaN(price) || isNaN(downPercent) || isNaN(interestRate) || isNaN(rent)) {
alert("Please enter valid numbers for all fields.");
return;
}
// Calculations – Loan
var downPaymentAmount = price * (downPercent / 100);
var loanAmount = price – downPaymentAmount;
var monthlyInterest = (interestRate / 100) / 12;
var totalPayments = termYears * 12;
// Mortgage Payment Formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
var mortgagePayment = 0;
if (loanAmount > 0 && interestRate > 0) {
mortgagePayment = loanAmount * (monthlyInterest * Math.pow(1 + monthlyInterest, totalPayments)) / (Math.pow(1 + monthlyInterest, totalPayments) – 1);
} else if (loanAmount > 0 && interestRate === 0) {
mortgagePayment = loanAmount / totalPayments;
}
// Calculations – Expenses
var vacancyLoss = rent * (vacancyPercent / 100);
var effectiveGrossIncome = rent – vacancyLoss;
var managementFee = effectiveGrossIncome * (mgmtPercent / 100);
var monthlyTax = taxYearly / 12;
var monthlyInsurance = insuranceYearly / 12;
var totalMonthlyOperatingExpenses = managementFee + monthlyTax + monthlyInsurance + maintenanceMonthly;
var totalMonthlyExpenses = totalMonthlyOperatingExpenses + mortgagePayment;
// Calculations – Profit Metrics
var monthlyCashFlow = effectiveGrossIncome – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// NOI does NOT include Mortgage payments
var annualNOI = (effectiveGrossIncome * 12) – (totalMonthlyOperatingExpenses * 12);
// Returns
var capRate = (price > 0) ? (annualNOI / price) * 100 : 0;
var cashOnCash = (downPaymentAmount > 0) ? (annualCashFlow / downPaymentAmount) * 100 : 0;
// Formatting Output
document.getElementById('rpOutMortgage').innerText = "$" + mortgagePayment.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
document.getElementById('rpOutTotalExpenses').innerText = "$" + totalMonthlyExpenses.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
document.getElementById('rpOutNOI').innerText = "$" + annualNOI.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
var cfElement = document.getElementById('rpOutCashFlow');
cfElement.innerText = "$" + monthlyCashFlow.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
if (monthlyCashFlow >= 0) {
cfElement.className = "rp-result-value rp-highlight";
} else {
cfElement.className = "rp-result-value rp-highlight-bad";
}
document.getElementById('rpOutCoC').innerText = cashOnCash.toFixed(2) + "%";
document.getElementById('rpOutCapRate').innerText = capRate.toFixed(2) + "%";
// Show Results
document.getElementById('rpResultSection').style.display = "block";
}
Understanding Rental Property Cash Flow
Calculating cash flow is the most critical step in evaluating a rental property investment. Positive cash flow indicates that the property is generating more income than it costs to operate, providing you with a steady stream of passive income.
How This Calculator Works
Our Rental Property Cash Flow Calculator takes into account all major financial variables to give you a clear picture of your investment's potential performance:
Purchase Inputs: Factors in the buying price and your down payment to determine leverage.
Operating Expenses: Unlike simple mortgage calculators, this tool accounts for vacancy rates, repairs, property management fees, taxes, and insurance.
Profit Metrics:
Cash Flow: The net amount of money entering your pocket each month.
Cap Rate (Capitalization Rate): Measures the property's natural rate of return without financing factors.
Cash on Cash Return (CoC): The percentage return on the actual cash you invested (down payment), which is crucial for measuring the efficiency of your capital.
What is a Good Cash on Cash Return?
While "good" is subjective, many investors aim for a Cash on Cash return between 8% and 12%. In highly competitive markets, 5-7% might be acceptable due to appreciation potential, while riskier markets might demand 15%+ returns.
Why Cap Rate Matters
The Cap Rate allows you to compare properties apples-to-apples, ignoring the financing structure. It represents the yield of the property over one year if bought entirely with cash. A higher cap rate generally implies higher returns but may also come with higher risks or less desirable locations.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "How is rental property cash flow calculated?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Rental property cash flow is calculated by subtracting all monthly expenses (mortgage, taxes, insurance, repairs, vacancy allowance) from the monthly rental income."
}
},{
"@type": "Question",
"name": "What is the difference between Cap Rate and Cash on Cash return?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Cap Rate measures the return of the property based on its total price regardless of financing, while Cash on Cash return measures the return on the specific cash amount you invested (your down payment)."
}
},{
"@type": "Question",
"name": "Why should I include a vacancy rate in my calculation?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No property is rented 100% of the time. Including a vacancy rate (typically 5-8%) ensures your financial projections are realistic and account for turnover periods."
}
}]
}