Analyze your real estate investment deal in seconds
Purchase Information
Income & Expenses
Monthly Mortgage (P&I):$0.00
Total Monthly Expenses:$0.00
Net Operating Income (NOI) / Mo:$0.00
Monthly Cash Flow:$0.00
Cash on Cash ROI:0.00%
Cap Rate:0.00%
Understanding Your Rental Property Investment
Investing in real estate is one of the most powerful ways to build wealth, but simply buying a property and renting it out doesn't guarantee a profit. Successful investors rely on accurate data to ensure their assets generate positive Cash Flow. This Rental Property Cash Flow Calculator helps you account for all variable expenses, including mortgage payments, taxes, insurance, and maintenance reserves, to give you a clear picture of your investment's potential.
Key Metrics Explained
When analyzing a deal, there are three critical numbers you must understand:
Cash Flow: This is the net profit you pocket every month after all expenses and mortgage payments are made. Positive cash flow means the asset is paying you to own it.
Cash on Cash ROI: This metric measures the return on the actual cash you invested (down payment + closing costs + repairs). A good CoC return varies by market, but many investors aim for 8-12%.
Cap Rate (Capitalization Rate): This represents the rate of return on a real estate investment property based on the income that the property is expected to generate, ignoring the mortgage financing. It helps compare properties regardless of how they were bought.
The Importance of Estimating Expenses
New investors often make the mistake of only calculating the mortgage payment against the rent. However, true cash flow analysis must include "hidden" costs:
Vacancy Rate: Properties won't be rented 365 days a year. It is prudent to set aside 5-8% of rent for turnover periods.
Maintenance & CapEx: Roofs leak and water heaters break. Allocating a monthly budget (e.g., 5-10% of rent) keeps you safe when big repairs hit.
Property Management: Even if you self-manage now, factoring in a management fee (usually 8-10%) ensures the deal still works if you decide to hire a professional later.
How to Use This Calculator
Start by entering the Purchase Price and your financing details. Be honest about your expenses—underestimating taxes or insurance can turn a good deal into a bad one on paper. Adjust the Rent to see how slight increases impact your bottom line. Finally, use the Cash on Cash ROI to compare this investment against other vehicles like stocks or bonds.
function calculateCashFlow() {
// 1. Get Input Values
var price = parseFloat(document.getElementById('rpc_price').value) || 0;
var closingCosts = parseFloat(document.getElementById('rpc_closing_costs').value) || 0;
var downPercent = parseFloat(document.getElementById('rpc_down_percent').value) || 0;
var interestRate = parseFloat(document.getElementById('rpc_rate').value) || 0;
var termYears = 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 annualTax = parseFloat(document.getElementById('rpc_tax').value) || 0;
var annualIns = parseFloat(document.getElementById('rpc_insurance').value) || 0;
var monthlyHoa = parseFloat(document.getElementById('rpc_hoa').value) || 0;
var monthlyMaint = parseFloat(document.getElementById('rpc_maintenance').value) || 0;
var vacancyRate = parseFloat(document.getElementById('rpc_vacancy').value) || 0;
// 2. Calculate Mortgage (P&I)
var downPayment = price * (downPercent / 100);
var loanAmount = price – downPayment;
var monthlyRate = (interestRate / 100) / 12;
var totalMonths = termYears * 12;
var monthlyMortgage = 0;
if (interestRate > 0 && termYears > 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, totalMonths)) / (Math.pow(1 + monthlyRate, totalMonths) – 1);
}
// 3. Calculate Expenses
var monthlyTax = annualTax / 12;
var monthlyIns = annualIns / 12;
var vacancyCost = rent * (vacancyRate / 100);
// Total Operating Expenses (excluding mortgage)
var operatingExpenses = monthlyTax + monthlyIns + monthlyHoa + monthlyMaint + vacancyCost;
// Total Expenses (including mortgage)
var totalExpenses = operatingExpenses + monthlyMortgage;
// 4. Calculate Income
var totalIncome = rent + otherIncome;
// 5. Calculate Metrics
var cashFlow = totalIncome – totalExpenses;
var annualCashFlow = cashFlow * 12;
var totalCashInvested = downPayment + closingCosts;
// NOI (Net Operating Income) = Income – Operating Expenses (No Mortgage)
var annualNOI = (totalIncome – operatingExpenses) * 12;
// Cash on Cash ROI
var cocRoi = 0;
if (totalCashInvested > 0) {
cocRoi = (annualCashFlow / totalCashInvested) * 100;
}
// Cap Rate
var capRate = 0;
if (price > 0) {
capRate = (annualNOI / price) * 100;
}
// 6. Display Results
document.getElementById('res_mortgage').innerText = '$' + monthlyMortgage.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_expenses').innerText = '$' + totalExpenses.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_noi').innerText = '$' + (annualNOI/12).toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
var cfElement = document.getElementById('res_cashflow');
cfElement.innerText = '$' + cashFlow.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Styling for positive/negative cash flow
var rowCashFlow = document.getElementById('row_cashflow');
if (cashFlow >= 0) {
rowCashFlow.classList.remove('negative');
rowCashFlow.style.color = '#27ae60';
} else {
rowCashFlow.classList.add('negative');
rowCashFlow.style.color = '#c0392b';
}
document.getElementById('res_coc').innerText = cocRoi.toFixed(2) + '%';
document.getElementById('res_cap').innerText = capRate.toFixed(2) + '%';
// Show results div
document.getElementById('rpc_results').style.display = 'block';
}