Analyze your real estate investment deals instantly.
Purchase Information
Rental Income
Recurring Expenses
Investment Analysis
Monthly Mortgage Payment (P&I):$0.00
Total Monthly Expenses:$0.00
Net Operating Income (Monthly):$0.00
Monthly Cash Flow:$0.00
Returns
Total Cash Invested:$0.00
Cap Rate:0.00%
Cash on Cash Return (ROI):0.00%
function calculateRental() {
// 1. Get Inputs
var price = parseFloat(document.getElementById('rpc_price').value) || 0;
var downPercent = parseFloat(document.getElementById('rpc_down_percent').value) || 0;
var interestRate = parseFloat(document.getElementById('rpc_interest').value) || 0;
var termYears = parseFloat(document.getElementById('rpc_term').value) || 0;
var closingCosts = parseFloat(document.getElementById('rpc_closing').value) || 0;
var rehabCosts = parseFloat(document.getElementById('rpc_rehab').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 annualInsurance = parseFloat(document.getElementById('rpc_insurance').value) || 0;
var monthlyHOA = parseFloat(document.getElementById('rpc_hoa').value) || 0;
var vacancyRate = parseFloat(document.getElementById('rpc_vacancy').value) || 0;
var maintenanceRate = parseFloat(document.getElementById('rpc_maintenance').value) || 0;
var mgmtRate = parseFloat(document.getElementById('rpc_mgmt').value) || 0;
// 2. Initial Calculations
var downPayment = price * (downPercent / 100);
var loanAmount = price – downPayment;
var totalCashInvested = downPayment + closingCosts + rehabCosts;
var grossMonthlyIncome = rent + otherIncome;
// 3. Mortgage Calculation (P&I)
var monthlyRate = (interestRate / 100) / 12;
var numberOfPayments = termYears * 12;
var mortgagePayment = 0;
if (interestRate > 0) {
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else {
mortgagePayment = loanAmount / numberOfPayments;
}
// 4. Monthly Expenses Calculation
var monthlyTax = annualTax / 12;
var monthlyInsurance = annualInsurance / 12;
var vacancyCost = grossMonthlyIncome * (vacancyRate / 100);
var maintenanceCost = grossMonthlyIncome * (maintenanceRate / 100);
var mgmtCost = grossMonthlyIncome * (mgmtRate / 100);
var operatingExpenses = monthlyTax + monthlyInsurance + monthlyHOA + vacancyCost + maintenanceCost + mgmtCost;
var totalExpenses = operatingExpenses + mortgagePayment;
// 5. Returns Calculations
var monthlyNOI = grossMonthlyIncome – operatingExpenses; // Net Operating Income
var monthlyCashFlow = grossMonthlyIncome – totalExpenses;
var annualCashFlow = monthlyCashFlow * 12;
var annualNOI = monthlyNOI * 12;
var capRate = (price > 0) ? (annualNOI / price) * 100 : 0;
var cashOnCash = (totalCashInvested > 0) ? (annualCashFlow / totalCashInvested) * 100 : 0;
// 6. Display Results
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
});
document.getElementById('res_mortgage').innerText = formatter.format(mortgagePayment);
document.getElementById('res_total_expenses').innerText = formatter.format(totalExpenses);
document.getElementById('res_noi').innerText = formatter.format(monthlyNOI);
var cfElement = document.getElementById('res_cashflow');
cfElement.innerText = formatter.format(monthlyCashFlow);
// Style cash flow color
if (monthlyCashFlow >= 0) {
cfElement.className = "positive";
document.getElementById('cash_flow_row').style.backgroundColor = "#e8f5e9";
} else {
cfElement.className = "negative";
document.getElementById('cash_flow_row').style.backgroundColor = "#ffebee";
}
document.getElementById('res_invested').innerText = formatter.format(totalCashInvested);
document.getElementById('res_cap_rate').innerText = capRate.toFixed(2) + "%";
var cocElement = document.getElementById('res_coc');
cocElement.innerText = cashOnCash.toFixed(2) + "%";
cocElement.className = cashOnCash >= 0 ? "positive" : "negative";
document.getElementById('rpc_results_area').style.display = 'block';
}
Understanding Rental Property Cash Flow
Calculating cash flow is the fundamental step in evaluating any potential real estate investment. Positive cash flow means your property generates more income than it costs to operate, putting money in your pocket every month. This calculator helps investors break down expenses to ensure a property is a viable asset rather than a liability.
How is Rental Cash Flow Calculated?
The formula for cash flow is relatively simple in concept but requires accuracy in detail:
Cash Flow = Gross Income – Total Expenses
Where "Total Expenses" includes:
Mortgage (P&I): Principal and interest payments on your loan.
Fixed Expenses: Property taxes, insurance, and HOA fees.
Variable Expenses: Allowances for vacancy (when the unit is empty), maintenance, and capital expenditures (CapEx) for major repairs like roofs or HVAC.
What is a Good Cash on Cash Return?
Cash on Cash (CoC) Return measures the annual cash flow relative to the total cash invested (Down Payment + Closing Costs + Rehab). While "good" varies by market and strategy:
8-12%: Often considered a solid return for long-term buy-and-hold investors.
15%+: Considered excellent, though often requires finding off-market deals or value-add opportunities.
Why Factor in Vacancy and Maintenance?
Novice investors often make the mistake of calculating cash flow using only the mortgage, tax, and insurance. This creates a "false positive" cash flow. In reality, things break and tenants move out. Allocating 5-10% for vacancy and 10-15% for maintenance ensures you have reserves when these inevitable costs arise.
Using the Cap Rate
The Capitalization Rate (Cap Rate) helps you compare the profitability of properties regardless of how they are financed. It is calculated as Net Operating Income / Purchase Price. A higher Cap Rate generally indicates a higher potential return, though it may come with higher risk.