Calculate the annual return on your actual cash investment.
Total Cash Invested:$0.00
Monthly Mortgage Payment:$0.00
Monthly Cash Flow:$0.00
Annual Cash Flow:$0.00
Cash on Cash Return:0.00%
Understanding Cash on Cash Return
In real estate investing, the Cash on Cash (CoC) Return is one of the most critical metrics used to evaluate the profitability of an income-producing property. Unlike standard Return on Investment (ROI) calculations that might look at the total value of the asset, CoC Return focuses strictly on the relationship between the annual cash flow the property generates and the actual cash you invested upfront.
This distinction is vital for investors utilizing leverage (mortgages). It tells you how hard your specific dollars are working for you, ignoring the portion of the purchase price covered by the bank.
How to Calculate Cash on Cash Return
The formula for Cash on Cash Return is relatively straightforward but requires accurate inputs regarding both your income and your expenses:
CoC Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) x 100
To use this calculator effectively, you need to understand the two main components:
Annual Cash Flow: This is your Gross Scheduled Rent minus all operating expenses (taxes, insurance, HOA, maintenance, vacancy reserves) and your annual debt service (mortgage payments).
Total Cash Invested: This is not just your down payment. It includes closing costs, immediate repair/rehab costs, and any loan points paid upfront.
What is a "Good" Cash on Cash Return?
"Good" is subjective and varies by market and investor strategy, but here are general benchmarks for rental properties:
8% – 12%: Generally considered a solid return for most long-term residential rentals in stable markets.
15%+: Considered excellent, though often found in riskier neighborhoods or properties requiring significant sweat equity (BRRRR strategy).
Below 5%: Might be acceptable in high-appreciation markets (like coastal cities) where the primary goal is equity growth rather than immediate cash flow.
Use the calculator above to adjust your offer price or down payment to see how it affects your yield. Increasing your down payment will lower your monthly mortgage, increasing cash flow, but it also increases your denominator (cash invested), which may actually lower your percentage return.
function calculateCoC() {
// 1. Get Inputs
var price = parseFloat(document.getElementById('purchasePrice').value);
var downPmt = parseFloat(document.getElementById('downPayment').value);
var interestRate = parseFloat(document.getElementById('interestRate').value);
var loanTerm = parseFloat(document.getElementById('loanTerm').value);
var closing = parseFloat(document.getElementById('closingCosts').value);
var rent = parseFloat(document.getElementById('monthlyRent').value);
var expenses = parseFloat(document.getElementById('monthlyExpenses').value);
// 2. Validate Inputs
if (isNaN(price) || isNaN(downPmt) || isNaN(interestRate) || isNaN(loanTerm) || isNaN(rent) || isNaN(expenses)) {
alert("Please fill in all required fields with valid numbers.");
return;
}
// Handle empty closing costs as 0
if (isNaN(closing)) {
closing = 0;
}
// 3. Calculate Mortgage
var loanAmount = price – downPmt;
var monthlyRate = (interestRate / 100) / 12;
var numberOfPayments = loanTerm * 12;
var monthlyMortgage = 0;
// Standard mortgage formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
if (monthlyRate > 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else {
// If 0% interest
monthlyMortgage = loanAmount / numberOfPayments;
}
// 4. Calculate Cash Flow
var totalMonthlyOutflow = monthlyMortgage + expenses;
var monthlyCashFlow = rent – totalMonthlyOutflow;
var annualCashFlow = monthlyCashFlow * 12;
// 5. Calculate Total Invested
var totalInvested = downPmt + closing;
// 6. Calculate CoC Return
var cocReturn = 0;
if (totalInvested > 0) {
cocReturn = (annualCashFlow / totalInvested) * 100;
}
// 7. Format Functions
function formatMoney(num) {
return "$" + num.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
}
// 8. Display Results
document.getElementById('dispTotalInvested').innerText = formatMoney(totalInvested);
document.getElementById('dispMortgage').innerText = formatMoney(monthlyMortgage);
// Handle styling for negative cash flow
var mFlowEl = document.getElementById('dispMonthlyCashFlow');
mFlowEl.innerText = formatMoney(monthlyCashFlow);
mFlowEl.style.color = monthlyCashFlow < 0 ? "#e53e3e" : "#2d3748";
var aFlowEl = document.getElementById('dispAnnualCashFlow');
aFlowEl.innerText = formatMoney(annualCashFlow);
aFlowEl.style.color = annualCashFlow < 0 ? "#e53e3e" : "#2d3748";
var cocEl = document.getElementById('dispCoC');
cocEl.innerText = cocReturn.toFixed(2) + "%";
cocEl.style.color = cocReturn < 0 ? "#e53e3e" : "#2b6cb0";
// Show result box
document.getElementById('resultContainer').style.display = "block";
}