Calculate your Cash on Cash Return and monthly cash flow accurately.
Monthly Mortgage Payment:$0.00
Total Monthly Expenses:$0.00
Monthly Cash Flow:$0.00
Annual Cash Flow:$0.00
Total Cash Invested:$0.00
Cash on Cash Return0.00%
Understanding Cash on Cash Return in Real Estate
When investing in rental properties, understanding your return on investment (ROI) is crucial for making informed financial decisions. The Cash on Cash Return metric is one of the most popular ways for real estate investors to analyze the profitability of a potential income property.
What is Cash on Cash Return?
Cash on Cash Return measures the annual pre-tax cash flow generated by the property in relation to the total amount of cash invested. Unlike simple ROI, which might look at the total value of the asset, Cash on Cash focuses specifically on the money you actually put into the deal (down payment, closing costs, and rehab costs).
The formula is simple:
Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) × 100%
Why Use a Rental Property Calculator?
Calculating the true cost of a rental property involves more than just subtracting the mortgage from the rent. To get an accurate picture of your cash flow, you must account for:
Principal and Interest: Your monthly debt service.
Property Taxes and Insurance: Essential holding costs.
Operating Expenses: HOA fees, maintenance, vacancy reserves, and property management fees.
Initial Capital: Your down payment and closing costs directly affect your percentage return.
What is a Good Cash on Cash Return?
While "good" is subjective and varies by market, many investors consider a Cash on Cash return of 8% to 12% to be solid. In highly appreciative markets, investors might accept lower cash flow returns (4-6%) in exchange for potential equity growth. Conversely, in stable markets with lower appreciation, investors often seek returns upwards of 12% to 15%.
Use the calculator above to adjust your variables—such as offer price or down payment—to see how they impact your bottom line and ensure your investment meets your financial goals.
function calculateRentalROI() {
// Retrieve inputs
var price = parseFloat(document.getElementById('purchasePrice').value);
var downPerc = parseFloat(document.getElementById('downPayment').value);
var interestRate = parseFloat(document.getElementById('interestRate').value);
var years = parseFloat(document.getElementById('loanTerm').value);
var closingCosts = parseFloat(document.getElementById('closingCosts').value);
var rent = parseFloat(document.getElementById('monthlyRent').value);
var annualTaxes = parseFloat(document.getElementById('propTaxes').value);
var annualInsurance = parseFloat(document.getElementById('insurance').value);
var monthlyHoa = parseFloat(document.getElementById('hoa').value);
var monthlyMaint = parseFloat(document.getElementById('maintenance').value);
// Validation
if (isNaN(price) || isNaN(downPerc) || isNaN(interestRate) || isNaN(years) ||
isNaN(rent) || isNaN(annualTaxes) || isNaN(annualInsurance)) {
alert("Please enter valid numbers in all fields.");
return;
}
// 1. Calculate Loan Details
var downPaymentAmt = price * (downPerc / 100);
var loanAmount = price – downPaymentAmt;
var monthlyRate = (interestRate / 100) / 12;
var numberOfPayments = years * 12;
// Mortgage PMT Formula: P * (r(1+r)^n) / ((1+r)^n – 1)
var monthlyMortgage = 0;
if (loanAmount > 0 && interestRate > 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else if (loanAmount > 0 && interestRate === 0) {
monthlyMortgage = loanAmount / numberOfPayments;
}
// 2. Calculate Expenses
var monthlyTaxes = annualTaxes / 12;
var monthlyInsurance = annualInsurance / 12;
var totalMonthlyExpenses = monthlyMortgage + monthlyTaxes + monthlyInsurance + monthlyHoa + monthlyMaint;
// 3. Calculate Cash Flow
var monthlyCashFlow = rent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// 4. Calculate Total Invested
var totalInvested = downPaymentAmt + closingCosts;
// 5. Calculate CoC Return
var cocReturn = 0;
if (totalInvested > 0) {
cocReturn = (annualCashFlow / totalInvested) * 100;
}
// Update UI
document.getElementById('displayMortgage').innerHTML = "$" + monthlyMortgage.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
document.getElementById('displayExpenses').innerHTML = "$" + totalMonthlyExpenses.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
var cashFlowEl = document.getElementById('displayMonthlyCashFlow');
cashFlowEl.innerHTML = "$" + monthlyCashFlow.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
cashFlowEl.style.color = monthlyCashFlow >= 0 ? "#27ae60" : "#c0392b";
var annualCashFlowEl = document.getElementById('displayAnnualCashFlow');
annualCashFlowEl.innerHTML = "$" + annualCashFlow.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
annualCashFlowEl.style.color = annualCashFlow >= 0 ? "#27ae60" : "#c0392b";
document.getElementById('displayTotalInvested').innerHTML = "$" + totalInvested.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
var cocEl = document.getElementById('displayCoC');
cocEl.innerHTML = cocReturn.toFixed(2) + "%";
cocEl.style.color = cocReturn >= 0 ? "#27ae60" : "#c0392b";
// Show results
document.getElementById('resultBox').style.display = 'block';
}