Analyze your potential real estate investment deals accurately.
Purchase Information
Income & Expenses
(Taxes, Insurance, HOA, Management)
Investment Analysis
Monthly Principal & Interest:$0.00
Total Monthly Expenses:$0.00
Net Operating Income (Annual):$0.00
Monthly Cash Flow:$0.00
Cash on Cash Return (CoC):0.00%
Cap Rate:0.00%
Understanding Rental Property Cash Flow
Successful real estate investing relies on the numbers, not gut feelings. A Rental Property Cash Flow Calculator is the most essential tool in an investor's arsenal to determine if a property is an asset or a liability.
Key Metrics Explained
Monthly Cash Flow: This is your profit after all expenses, including the mortgage, taxes, insurance, and maintenance reserves, have been paid. Positive cash flow means the property pays for itself and provides income.
Cash on Cash Return (CoC): This metric measures the annual return on the actual cash you invested (down payment + closing costs). It is a superior metric to simple ROI for leveraged assets.
Cap Rate (Capitalization Rate): This indicates the rate of return on a real estate investment property based on the income that the property is expected to generate, ignoring the financing method. It helps compare properties regardless of how they are purchased.
Net Operating Income (NOI): The annual income generated by the property after deducting all operating expenses but before deducting taxes and financing costs.
How to Estimate Expenses
One of the most common mistakes new investors make is underestimating expenses. Beyond the mortgage, you must account for:
Vacancy: Properties will not be rented 365 days a year. A standard safe estimate is 5-8% of gross rent.
Maintenance & CapEx: Roofs leak and water heaters break. Setting aside 5-10% of rent per month ensures you have funds when repairs are needed.
Management Fees: Even if you self-manage, it is wise to calculate the cost (usually 8-10%) to ensure the deal still works if you hire a manager later.
Use this calculator to run scenarios on potential deals. Adjust the offer price or down payment to see how it affects your Cash on Cash return and monthly cash flow.
function calculateRental() {
// 1. Get Input Values
var purchasePrice = parseFloat(document.getElementById('purchasePrice').value);
var downPaymentPercent = parseFloat(document.getElementById('downPaymentPercent').value);
var interestRate = parseFloat(document.getElementById('interestRate').value);
var loanTerm = parseFloat(document.getElementById('loanTerm').value);
var closingCosts = parseFloat(document.getElementById('closingCosts').value);
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value);
var monthlyFixedExpenses = parseFloat(document.getElementById('monthlyExpenses').value);
var vacancyRate = parseFloat(document.getElementById('vacancyRate').value);
var maintenanceRate = parseFloat(document.getElementById('maintenanceRate').value);
// Validation
if (isNaN(purchasePrice) || isNaN(monthlyRent)) {
alert("Please enter valid numbers for Price and Rent.");
return;
}
// 2. Calculate Mortgage (P&I)
var downPaymentAmount = purchasePrice * (downPaymentPercent / 100);
var loanAmount = purchasePrice – downPaymentAmount;
var monthlyRate = (interestRate / 100) / 12;
var numberOfPayments = loanTerm * 12;
var monthlyPI = 0;
if (interestRate === 0) {
monthlyPI = loanAmount / numberOfPayments;
} else {
monthlyPI = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
}
// 3. Calculate Variable Expenses
var monthlyVacancyCost = monthlyRent * (vacancyRate / 100);
var monthlyMaintenanceCost = monthlyRent * (maintenanceRate / 100);
// 4. Totals
var totalMonthlyExpenses = monthlyPI + monthlyFixedExpenses + monthlyVacancyCost + monthlyMaintenanceCost;
var monthlyCashFlow = monthlyRent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// NOI Calculation (Operating Income – Operating Expenses) (Excludes Mortgage P&I)
var operatingExpenses = monthlyFixedExpenses + monthlyVacancyCost + monthlyMaintenanceCost;
var monthlyNOI = monthlyRent – operatingExpenses;
var annualNOI = monthlyNOI * 12;
// 5. Returns
var totalCashInvested = downPaymentAmount + closingCosts;
var cocReturn = 0;
if (totalCashInvested > 0) {
cocReturn = (annualCashFlow / totalCashInvested) * 100;
}
var capRate = 0;
if (purchasePrice > 0) {
capRate = (annualNOI / purchasePrice) * 100;
}
// 6. Display Results
document.getElementById('resMortgage').innerText = "$" + monthlyPI.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resTotalExpenses').innerText = "$" + totalMonthlyExpenses.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resNOI').innerText = "$" + annualNOI.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
var cfElement = document.getElementById('resCashFlow');
cfElement.innerText = "$" + monthlyCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
if (monthlyCashFlow >= 0) {
cfElement.className = "rpc-result-value rpc-highlight";
} else {
cfElement.className = "rpc-result-value rpc-highlight-neg";
}
document.getElementById('resCoC').innerText = cocReturn.toFixed(2) + "%";
document.getElementById('resCapRate').innerText = capRate.toFixed(2) + "%";
// Show results section
document.getElementById('rpcResults').style.display = "block";
}