Please enter valid numbers. Cap rate must be greater than 0.
Net Operating Income (NOI):$0.00
Target Cap Rate:0.00%
Maximum Purchase Price:$0.00
How to Calculate Purchase Price Using Cap Rate
Real estate investors often work backwards to determine how much they should pay for a property based on its income generation potential. This process involves using the Capitalization Rate (Cap Rate) to derive a fair purchase price that aligns with your investment goals.
By defining your target Cap Rate—the rate of return you expect on an all-cash investment—you can objectively evaluate whether a listing price is realistic or if you need to negotiate for a lower price.
The Formula:
Purchase Price = Net Operating Income (NOI) ÷ Cap Rate
Step-by-Step Calculation Guide
1. Determine Net Operating Income (NOI)
The first step is to calculate the property's annual NOI. This is the revenue left over after all operating expenses are paid, but before debt service (mortgage payments) and income taxes.
Gross Income: Total rent collected plus other income (laundry, parking).
Equation: Gross Income – Operating Expenses = NOI.
2. Select Your Target Cap Rate
The Cap Rate reflects the risk and return profile of the asset. A lower cap rate implies a safer asset (often in a prime location) but a lower yield, while a higher cap rate implies higher risk or a value-add opportunity.
Market Comparables: Look at what similar properties in the area have sold for recently to find the "Market Cap Rate."
Personal Criteria: If you require a minimum 8% return to justify the investment, use 0.08 as your divisor.
3. Divide NOI by the Cap Rate
Once you have the NOI and your target percentage, divide the NOI by the Cap Rate (expressed as a decimal).
Example: If a property generates $50,000 in NOI and you want a 6% Cap Rate:
$50,000 ÷ 0.06 = $833,333
This means the maximum price you should pay to achieve a 6% return is approximately $833,333.
Why This Method is Critical for Investors
Calculating the purchase price using the Cap Rate separates the value of the property from the method of financing. It allows you to:
Avoid Overpaying: Emotion is removed from the equation. If the seller wants $1M for a property that only supports an $800k valuation at market cap rates, you know the deal is overpriced.
Compare Different Properties: You can normalize different properties of varying sizes and price points to see which offers the best value relative to its income.
Negotiate Effectively: You can show sellers exactly how you arrived at your offer price based on the property's actual financial performance.
function calculateCapRatePrice() {
// 1. Get input values by ID
var grossIncomeInput = document.getElementById('annual_gross_income');
var expensesInput = document.getElementById('annual_operating_expenses');
var capRateInput = document.getElementById('target_cap_rate');
// 2. Parse values to floats
var grossIncome = parseFloat(grossIncomeInput.value);
var expenses = parseFloat(expensesInput.value);
var capRate = parseFloat(capRateInput.value);
// 3. Get display elements
var resultDiv = document.getElementById('results-display');
var errorDiv = document.getElementById('error-message');
var noiDisplay = document.getElementById('display-noi');
var capDisplay = document.getElementById('display-cap');
var priceDisplay = document.getElementById('display-price');
// 4. Validation
// Check if inputs are numbers and Cap Rate is valid (not zero or negative to avoid infinity)
if (isNaN(grossIncome) || isNaN(expenses) || isNaN(capRate) || capRate <= 0) {
errorDiv.style.display = 'block';
resultDiv.style.display = 'none';
return;
}
// 5. Logic
errorDiv.style.display = 'none';
// Calculate Net Operating Income (NOI)
var noi = grossIncome – expenses;
// Calculate Purchase Price = NOI / (Cap Rate / 100)
// Note: Cap Rate input is 7 for 7%, so we divide by 100 to get 0.07
var decimalCapRate = capRate / 100;
var purchasePrice = noi / decimalCapRate;
// Handle negative NOI edge case
if (noi <= 0) {
// If expenses exceed income, the property has no value based on Cap Rate
noiDisplay.innerHTML = "-$" + Math.abs(noi).toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
capDisplay.innerHTML = capRate + "%";
priceDisplay.innerHTML = "$0.00 (Negative Cash Flow)";
resultDiv.style.display = 'block';
return;
}
// 6. Formatting Output
// Format Currency
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
});
// 7. Update DOM
noiDisplay.innerHTML = formatter.format(noi);
capDisplay.innerHTML = capRate + "%";
priceDisplay.innerHTML = formatter.format(purchasePrice);
// Show result container
resultDiv.style.display = 'block';
}