GetSolarCalc
Methodology Last reviewed Sep 2026 12-min read v1.1

How we calculate solar ROI.

This page documents every formula, constant, and dataset our calculator uses. A reader with a spreadsheet and the cited sources can reproduce our numbers exactly.

Overview

Our calculator answers one question: over the next 25 years, will a homeowner save more money on electricity than they spend on a solar PV system? It does so through five sequential calculations, each derived from a single public data source:

  1. Convert the dollar bill into kilowatt-hours.
  2. Translate kilowatt-hours into the system size that would produce them.
  3. Multiply system size by an installed cost per watt.
  4. Apply current IRS Section 25D federal-credit status.
  5. Project 25 years of cumulative savings under transparent assumptions.

We deliberately do not include state rebates, utility-specific net-metering rules, financing, or battery storage. Those decisions are too local and time-sensitive to embed in a national average; we surface them separately on our state pages and in our guides.

Step 1 — Convert the bill into annual energy use

The starting point is your average monthly utility bill in dollars. We convert it to kWh:

monthly_kWh = monthly_bill / state_avg_rate
annual_kWh = monthly_kWh × 12
Source: Residential rates by state from the EIA Open Data API v2, electricity/retail-sales — residential sector, annual average price. They are fetched by scripts/sync_eia_rates.php rather than keyed by hand. The series is annual, so the figure is a 2025 average and does not move between EIA's annual releases; syncing more often would not make it newer. Last confirmed September 2026 — see data status.
Worked example. A California household with a $180/month bill at the state's average rate of $0.31/kWh consumes 180 / 0.31 = 580.6 kWh/month → 6,968 kWh/year. EIA's California household average is ~6,500 kWh; national average is ~10,800.

Step 2 — Size the system from peak sun hours

To produce annual_kWh from solar, we need a system of size:

system_size_kW = annual_kWh / (peak_sun_hours × 365 × performance_ratio)

Peak sun hours is the daily average number of hours at which solar irradiance averages 1,000 W/m² — the standard test condition for a PV module's nameplate rating. We use state-level averages derived from the NREL National Solar Radiation Database, weighted toward population centres. The figures on this site are hand-keyed approximations from NSRDB published data; for site-specific values use NREL PVWatts directly.

Performance ratio (PR) bridges the gap between nameplate DC output and actual delivered AC energy. We use 0.80, the long-standing industry default endorsed by NREL's PVWatts engine for well-designed residential systems.

Sunlight exposure modifier. Users select Low / Average / High, which multiplies the state's sun-hour figure by 0.85 / 1.00 / 1.10 respectively. This is a coarse proxy for roof orientation, tilt, and shading.

Step 3 — Compute installed cost

cost_per_watt = $2.98 × roof_multiplier
gross_cost = system_size_kW × 1000 × cost_per_watt

$2.98 / W DC is the median price cash purchasers actually paid for residential solar in 2025, before any incentives. It is not a modelled cost estimate: it comes from Lawrence Berkeley National Laboratory's project-level dataset of systems installed across the United States.

Berkeley Lab publishes annually each August, so this figure is refreshed once a year rather than continuously. Half of all cash buyers paid more than the median, and a spread this wide is the reason this tool is a baseline for checking a quote rather than a substitute for one.

How this compares to other trackers

Different sources measure different things, and quoting whichever is most flattering would be easy. For context, EnergySage reported an average of $2.60/W before incentives from its marketplace as of September 2026 — roughly 13% below the Berkeley Lab median we use.

Both figures are credible; they describe different populations. EnergySage measures quotes on a marketplace where installers bid against each other for a customer who is, by definition, comparison shopping. Berkeley Lab measures systems that were actually installed nationwide, including the many buyers who took the first quote they were given. We use the higher, broader figure because it better describes a typical purchase — and because a calculator that assumes you will get marketplace pricing would flatter its own results.

The practical reading: the gap between those two numbers is roughly what comparison shopping appears to be worth. That is an association rather than a guarantee, but on a 9 kW system it is around $3,400.

Roof multipliers reflect installation-labor variance: shingle 1.00, standing-seam metal 1.05, tile 1.15.

Step 4 — Apply current federal-credit status

federal_credit = gross_cost × 0.00
net_cost = gross_cost − federal_credit

Authority: 26 U.S.C. § 25D, the Residential Clean Energy Credit, as amended by §13302 of the Inflation Reduction Act of 2022 (P.L. 117-169) and later federal law. Current IRS guidance says the credit is not available for new residential clean-energy expenditures after December 31, 2025, so this calculator uses a default federal-credit rate of 0% for new installations.

Important caveats. Older qualifying installations may still involve carryforward rules, and eligibility depends on tax facts and installation timing. For new systems completed after December 31, 2025, do not assume a federal Section 25D credit. Confirm eligibility with a CPA.

Step 5 — Project 25 years of cumulative savings

For each year n in 1 … 25 we compute:

kWhn = system_size_kW × peak_sun × 365 × PR × (1 − 0.005)^(n−1)
raten = state_rate × (1 + 0.029)^(n−1)
savingsn = (kWhn × s × raten) + (kWhn × (1 − s) × export_valuen)

s is the share of generation used in the house as it is produced. Energy used on site is always worth the retail rate it avoids paying. Energy exported is worth whatever the local tariff pays for it, which is the subject of Step 6. Where retail net metering is intact the two are the same thing, s drops out of the arithmetic, and this reduces to kWhn × raten — the formula this calculator used until September 2026.

Cumulative savings begin at −net_cost and accumulate yearly. The payback year is the year cumulative savings first cross zero, reported as a fractional value via linear interpolation within the crossing year.

AssumptionValueSource
Electricity price escalation2.9% / yrEIA long-run residential CAGR, 1990–2024.
Panel degradation0.5% / yrLG, Q-Cells, REC, SunPower datasheet median.
Performance ratio0.80NREL PVWatts default.
System lifetime25 yrsManufacturer power-output warranty.

Step 6 — Value exported energy at what it actually earns

Until September 2026 this calculator valued every kilowatt-hour at the retail rate. That is only correct where exports are credited one-for-one, which is no longer true in a growing number of states, including several of the largest solar markets in the United States. In states that have moved to net billing it produced a ceiling — the best case — presented as an estimate.

There are now three cases, and every result says which one it is.

CaseWhat you seeWhy
Retail netting intact A single figure. Exports offset consumption at retail, so the 1:1 assumption holds and nothing needs adjusting.
Export rate modelled A central estimate with a range around it. The state's export credit is a single published number, so we apply it. Currently Arizona and Utah.
Flagged, not modelled The 1:1 figure, labelled a ceiling. The state has left retail netting but its export credit cannot be reduced to one number — an hourly schedule, a per-utility rate, or no statewide rule at all. We say the figure is optimistic rather than inventing the amount.

Where the range comes from

The width of the range is almost entirely the second unknown: how much of its own generation a household consumes as it is produced. We do not ask, because homeowners have no way to know, and we do not guess a single figure. We use a published range.

“For stand-alone PV within a typical size range, 47-72% of annual PV generation is exported, across customers in the sample.”

That is Forrester, Barbose & Miller, iScience 25(8):104714 (2022), Lawrence Berkeley National Laboratory, and it gives a self-consumption band of 28–53%. It is used here rather than a rule of thumb because its central case is a system sized to generate 100% of annual household consumption, equating to 4–8 kW — which is exactly how Step 2 sizes a system, and the range this calculator produces.

The cautious end of the range pairs the least self-consumption with the lowest export rate, and the favourable end pairs the most with the highest; a bound that mixed a bad rate with a good habit would not be a bound. The central figure is the midpoint of the published range, rounded, and not a measured average — the exact midpoint of 28–53% is 40.5%, and we use 40%. It is labelled a midpoint wherever it appears, never an average.

Three things that band does not account for, which you are entitled to weigh yourself:

Export credits fixed in cents per kilowatt-hour are held flat across all 25 years rather than escalated with retail rates, because regulators reset them periodically and generally downward. This matters more than it looks: a credit worth 6¢ today beats one worth 30% of retail in year one, and loses to it comfortably by year 25.

Constants reference

ConstantValuePurpose
COST_PER_WATT_MEAN2.98National cash-purchase midpoint, $/W DC
FEDERAL_CREDIT_RATE0.00Current §25D rate for new post-2025 residential installations
PERFORMANCE_RATIO0.80DC-to-AC + real-world derating
ELECTRICITY_INFLATION0.029Annual rate escalation
PANEL_DEGRADATION0.005Annual production decline
ROOF_MULTIPLIER1.00 / 1.05 / 1.15Shingle / metal / tile
SUN_MULTIPLIER0.85 / 1.00 / 1.10Low / average / high exposure

All constants are declared at the top of classes/SolarCalculator.php in the source tree for direct audit.

Limitations & honest caveats

This calculator is intentionally simple. The five most important things it does not model are:

Methodology changelog

DateChange
2026-09-18 Exported energy valued separately from energy used on site (Step 6). Payback in states that have left retail net metering was previously a ceiling presented as an estimate. Where the export credit is a single published figure it is now applied, and the result is shown as a range over a self-consumption band derived from Berkeley Lab metered household loads with simulated PV output, rather than a single invented assumption. Where it cannot be reduced to one number, the figure remains a 1:1 ceiling and now says so on the homepage as well as the state page.
2026-09-18 Installed cost re-sourced to Berkeley Lab Tracking the Sun transaction data: midpoint $2.90 → $2.98/W, with the range widened to $2.49–$4.14/W. The previous top end understated what four in ten cash buyers actually pay.
2025-05-26 Initial publication. Cost-per-watt set to $2.90 (national midpoint). Inflation fixed at 2.9% per 1990–2024 EIA CAGR. Performance ratio 0.80 per NREL PVWatts default.

We commit to dating and listing every change to formulas or constants here so prior results remain auditable.

Cite this page

GetSolarCalc. Solar ROI Methodology, v1.1. Published May 26, 2025; retrieved by the reader at the date of this page view, from this URL. Licensed CC BY-SA 4.0.

Independent · Source-cited

Try the calculator yourself.

Four inputs. Sixty seconds. Every number traceable to a public source.