Analyze your real estate investment potential instantly.
Purchase & Loan
$
%
%
$
Income & Expenses (Monthly)
$
$
$
$
%
%
Investment Analysis
Monthly Cash Flow
$0.00
Cash on Cash Return
0.00%
Cap Rate
0.00%
Yearly NOI
$0.00
Gross Monthly Income:$0.00
Total Monthly Expenses (Operating):$0.00
Monthly Mortgage Payment:$0.00
Total Initial Cash Invested:$0.00
Understanding Rental Property Cash Flow
Cash flow is the lifeblood of any rental real estate investment. It represents the net amount of money moving into or out of your business every month. A positive cash flow means your property is generating profit after all expenses and debt services are paid, while a negative cash flow implies you are losing money to hold the property.
How to Calculate Rental Cash Flow
The basic formula used in this calculator is:
Gross Income: Total rent collected plus any other fees (parking, laundry).
Net Operating Income (NOI): Gross Income minus Operating Expenses.
Cash Flow: NOI minus Mortgage Payments (Debt Service).
Key Metrics Defined
Our calculator provides several advanced metrics to help you evaluate your deal:
Cap Rate (Capitalization Rate): Calculated as NOI / Purchase Price. This measures the property's natural rate of return without considering mortgage financing. It helps compare properties purely on their performance.
Cash on Cash Return (CoC): Calculated as Annual Cash Flow / Total Cash Invested. This measures how hard your actual invested money (down payment + closing costs) is working for you. A CoC of 8-12% is often considered a solid target for residential rentals.
NOI (Net Operating Income): The profitability of the property before mortgage payments. Banks use this number to determine if the property generates enough income to cover the loan.
Why Use a Rental Property Calculator?
Real estate investing requires precision. Estimating numbers in your head often leads to underestimating expenses like vacancy (when the unit is empty) or maintenance (future repairs). By inputting detailed variables for taxes, insurance, and reserve funds, this calculator provides a realistic view of your potential investment, helping you avoid bad deals and identify profitable opportunities.
function calculateRentalCashFlow() {
// 1. Get Input Values
var purchasePrice = parseFloat(document.getElementById('rpc_purchasePrice').value) || 0;
var downPaymentPercent = parseFloat(document.getElementById('rpc_downPayment').value) || 0;
var interestRate = parseFloat(document.getElementById('rpc_interestRate').value) || 0;
var loanTerm = parseFloat(document.getElementById('rpc_loanTerm').value) || 0;
var closingCosts = parseFloat(document.getElementById('rpc_closingCosts').value) || 0;
var monthlyRent = parseFloat(document.getElementById('rpc_monthlyRent').value) || 0;
var propertyTax = parseFloat(document.getElementById('rpc_propertyTax').value) || 0;
var insurance = parseFloat(document.getElementById('rpc_insurance').value) || 0;
var hoa = parseFloat(document.getElementById('rpc_hoa').value) || 0;
var maintenancePercent = parseFloat(document.getElementById('rpc_maintenance').value) || 0;
var vacancyPercent = parseFloat(document.getElementById('rpc_vacancy').value) || 0;
// 2. Calculate Loan Details
var downPaymentAmount = purchasePrice * (downPaymentPercent / 100);
var loanAmount = purchasePrice – downPaymentAmount;
var totalInvested = downPaymentAmount + closingCosts;
// Mortgage Calculation
var monthlyRate = (interestRate / 100) / 12;
var numberOfPayments = loanTerm * 12;
var monthlyMortgage = 0;
if (interestRate > 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else {
monthlyMortgage = loanAmount / numberOfPayments;
}
// 3. Calculate Expenses
var vacancyCost = monthlyRent * (vacancyPercent / 100);
var maintenanceCost = monthlyRent * (maintenancePercent / 100);
var totalMonthlyOperatingExpenses = propertyTax + insurance + hoa + vacancyCost + maintenanceCost;
var totalMonthlyExpenses = totalMonthlyOperatingExpenses + monthlyMortgage;
// 4. Calculate Income & Cash Flow
var monthlyNOI = monthlyRent – totalMonthlyOperatingExpenses;
var yearlyNOI = monthlyNOI * 12;
var monthlyCashFlow = monthlyRent – totalMonthlyExpenses;
var yearlyCashFlow = monthlyCashFlow * 12;
// 5. Calculate Metrics
var capRate = 0;
if (purchasePrice > 0) {
capRate = (yearlyNOI / purchasePrice) * 100;
}
var cocReturn = 0;
if (totalInvested > 0) {
cocReturn = (yearlyCashFlow / totalInvested) * 100;
}
// 6. Display Results
document.getElementById('rpc_result_container').classList.add('visible');
document.getElementById('rpc_monthlyCashFlow').innerHTML = formatCurrency(monthlyCashFlow);
if(monthlyCashFlow < 0) {
document.getElementById('rpc_monthlyCashFlow').classList.add('negative');
} else {
document.getElementById('rpc_monthlyCashFlow').classList.remove('negative');
}
document.getElementById('rpc_cocReturn').innerHTML = cocReturn.toFixed(2) + '%';
if(cocReturn < 0) {
document.getElementById('rpc_cocReturn').classList.add('negative');
} else {
document.getElementById('rpc_cocReturn').classList.remove('negative');
}
document.getElementById('rpc_capRate').innerHTML = capRate.toFixed(2) + '%';
document.getElementById('rpc_yearlyNOI').innerHTML = formatCurrency(yearlyNOI);
document.getElementById('rpc_grossIncome').innerHTML = formatCurrency(monthlyRent);
document.getElementById('rpc_totalExpenses').innerHTML = formatCurrency(totalMonthlyOperatingExpenses);
document.getElementById('rpc_mortgageDisplay').innerHTML = formatCurrency(monthlyMortgage);
document.getElementById('rpc_totalInvested').innerHTML = formatCurrency(totalInvested);
}
function formatCurrency(num) {
return '$' + num.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
}