Energy mass balanceCostingSolar
Commercial rooftop PV with on-site self-consumption
Prices a 100 kWp to 5 MWp commercial roof on the retail electricity it avoids: generation, self-consumed versus exported share, rooftop LCOE, net annual saving and simple payback.
Costing
Turnkey installed cost per kWp, excluding VAT: modules, inverters, mounting, labour and grid connection. Fraunhofer ISE 2024 publishes 900 to 1600 EUR/kWp for rooftop above 30 kWp.
Insurance, monitoring, cleaning and the inverter replacement reserve. Fraunhofer ISE 2024 uses 21.5 EUR/kW per year with no variable OPEX.
Real WACC, consistent with constant-euro prices. Fraunhofer ISE 2024 uses 3.5% real for rooftop PV (5.3% nominal at 1.8% inflation). Do not mix a nominal rate with constant prices.
Economic life used for levelization. Fraunhofer ISE uses 30 years for all PV segments, in line with module warranties.
Specific CAPEX used
Entered cost intensity, kept inside the published market band
Installed turnkey CAPEX
Modules, inverters, mounting, labour and grid connection, excluding VAT
Annual operating cost
Insurance, monitoring, cleaning and the inverter replacement reserve
Capital recovery factor
Annuity factor from the real discount rate and the project life
Annualized CAPEX
Installed CAPEX turned into an equivalent yearly payment
Discounted energy per kWp
The denominator of the LCOE, made visible
Rooftop LCOE
Headline cost of one MWh generated on this roof over its life
Log in to view this sensitivity chart.
Site and production
Rooftop array size in kWp DC. The scope of this calculator is 100 kWp to 5 MWp: below that a roof behaves like a residential system, above it like a ground-mounted plant.
Net AC energy per installed kWp per year, performance ratio included. Fraunhofer ISE: 935 in northern Germany, 1105 in central and eastern Germany, 1280 in the south, up to 1600 in southern Spain.
Annual generation (year one)
Nameplate capacity multiplied by the site specific yield
Equivalent full-load hours
Hours per year the array would need at nameplate power to generate the same energy
Capacity factor
Full-load hours as a share of the 8760 hours in a year
Lifetime-average degradation derate
Average output over the life relative to year one
Effective specific yield over the life
Site yield after averaging module degradation across the project life
Lifetime generation
Total energy the array delivers before the modelled end of life
Log in to view this sensitivity chart.
Log in to view this sensitivity chart.
Self-consumption and value
Share of generation consumed on site rather than exported. This is a property of the site load curve, not of the technology: confirm it against metered consumption before defending the case.
All-in price the site pays its supplier, excluding VAT and recoverable levies. Eurostat H2 2025 range across the EU: 74.8 in Finland to 255.2 in Ireland, EU average 183.7.
Price received for the surplus pushed onto the grid: feed-in tariff, PPA or spot capture price. German EEG surplus band for 100 kW to 1 MW was 59.6 to 82.6 EUR/MWh in August 2025.
Self-consumed electricity
The part of generation the site uses itself, displacing retail purchases
Surplus exported to the grid
What the site cannot absorb, pushed onto the grid at the export price
Avoided retail purchase
Value of the electricity the site no longer buys from its supplier
Export revenue
Value of the surplus sold at the feed-in or surplus price
Gross annual benefit
Avoided purchases plus export revenue, before operating cost
Share of value from avoided retail purchase
How much of the benefit comes from not buying, rather than from selling
Share of value from exported surplus
Complement of share of value from avoided retail purchase, the part earned on the grid
Blended value of generated electricity
Weighted average of the retail tariff avoided and the export price earned
Log in to view this sensitivity chart.
Log in to view this sensitivity chart.
Investment case
Net annual saving
Avoided purchases plus export revenue, net of fixed O&M
Simple payback
Installed CAPEX divided by the year-one net saving, undiscounted by definition
Simple return on CAPEX
Year-one net saving expressed as a percentage of the money spent
Annual result after capital charge
Net saving once the CAPEX is charged as an annuity at the chosen discount rate
Defendable margin per MWh
Blended value of a generated MWh minus what it costs to generate it
Net present value
Discounted value of every MWh generated, less CAPEX and discounted O&M
Net present value per kWp
Same result normalized by installed capacity, to compare roofs of different sizes
Benchmark against published data
LCOE at the published low CAPEX
What this same roof would cost at 900 EUR/kWp
LCOE at the published high CAPEX
What this same roof would cost at 1600 EUR/kWp
Position in the published LCOE band
Where this result sits between the 57 and 120 EUR/MWh published for large German rooftops
Site tariff versus EU average
How much more, or less, this site pays for grid electricity than the EU average
Self-consumption above the residential band
Percentage points above the 40% ceiling households reach without storage
About
Calculator context
About
Calculator context
A commercial or industrial roof is not a small power plant. Its electricity is worth what the site would otherwise pay its supplier, which in the EU averages 183.7 EUR/MWh excluding VAT, while the surplus it cannot absorb is worth the regulated feed-in price, around 59.6 EUR/MWh in Germany. The whole business case therefore hangs on one number that no datasheet contains: the share of generation the building consumes itself. This calculator makes that share the main lever. It computes annual generation from installed capacity and site specific yield, splits it into self-consumed and exported energy, values each stream at its own price, and returns the blended value of a generated MWh alongside the levelized cost of producing it. The cost side follows the Fraunhofer ISE 2024 method exactly: discounted costs over discounted energy, with 0.25% annual degradation, so the denominator ages like the array does. On the reference case, a 500 kWp roof in central Germany at 1105 kWh/kWp, 1250 EUR/kWp installed and a 3.5% real WACC over 30 years, it returns 83.4 EUR/MWh against a blended value of 146.5 EUR/MWh, a net saving of 70.2 kEUR per year and a simple payback of 8.9 years. Two things are deliberately absent. There is no scale exponent on the specific CAPEX: the published band is not resolved by size, so LCOE and payback are flat against roof area while savings grow linearly, which is what the scale chart shows. And there is no battery, no time-of-use tariff and no tariff escalation, so the result lives in constant euros consistent with a real discount rate. The self-consumption share is the weak point and is treated as such: the model reports how far the entered value sits above the 40% ceiling that households reach without storage, because anything above it must be evidenced by a metered load curve before the case is put to a bank.
Model
64 variables — inputs, calculations and outputs, with their dependencies.
Model
64 variables — inputs, calculations and outputs, with their dependencies.
| Variable | Value | Unit | Depends on |
|---|---|---|---|
| 500 | kWp | — | |
| 1105 | kWh/kWp/year | — | |
| 70 | % | — | |
| 183.7 | EUR/MWh | — | |
| 59.6 | EUR/MWh | — | |
| 1250 | EUR/kWp | — | |
| 21.5 | EUR/kWp/year | — | |
| 0.035 | ratio | — | |
| 30 | years | — |
| Variable | Formula | Unit | Depends on |
|---|---|---|---|
* | MWh/kWp/year | ||
/max(,) | year | ||
(-)/max(+,) | ratio | ||
+* | EUR/kWp | ||
if((<)+(>)+(<=0)+(<0)+(>)+(<0)+(<0)+(<=0)+(<0)+(<0)+(<=0)+(<=0)>0,1,0) | bool |
| Variable | Formula | Unit | Depends on |
|---|---|---|---|
* | h/year | ||
/max(,)* | % | ||
(-(-)^)/max(*,) | ratio | ||
* | kWh/kWp/year | ||
* | MWh/year | ||
** | MWh/year | ||
- | MWh/year | ||
* | EUR/year | ||
* | EUR/year | ||
+ | EUR/year | ||
/max(,) | EUR/MWh | ||
/max(,)* | % | ||
- | % | ||
clamp(,,) | EUR/kWp | ||
* | EUR | ||
* | EUR/year | ||
if(<,/max(,),(*(+)^)/max((+)^-,)) | 1/year | ||
* | EUR/year | ||
/max(+,)*(-^)/max(-,) | MWh/kWp | ||
/max(,) | EUR/MWh | ||
- | EUR/year | ||
/max(,) | years | ||
- | EUR/MWh | ||
- | EUR/year | ||
/max(,)* | % | ||
** | MWh | ||
** | EUR | ||
/max(,) | EUR/kWp | ||
(+*)/max(,) | EUR/MWh | ||
(+*)/max(,) | EUR/MWh | ||
(-)/max(-,)* | % | ||
(/max(,)-)* | % | ||
- | % |
Assumptions
38 assumptions used in the calculations
Assumptions
38 assumptions used in the calculations
Prevents division by zero and NaN propagation in edge cases.
Market range Not applicable (numerical parameter).
0.000001Numerical stability constant.Keeps the DSL free of inline literals in ratios, guards and complements.
Market range Exact.
1Unit constant.Converts equivalent full-load hours into a capacity factor.
Market range 8760 (non-leap year); 8784 (leap year).
8760h/yearCalendar-year hours convention.Converts specific yield in kWh/kWp into MWh, the unit the project layer consumes.
Market range Exact.
0.001MWh/kWhUnit conversion.Converts the self-consumption share from percent to a fraction, per the OJ percent convention.
Market range Exact.
0.01Unit conversion.Converts computed fractions back to percent for display, and caps the percent guard.
Market range Exact.
100Unit conversion.Rejects sizes where the cost and self-consumption assumptions of this model no longer hold.
Market range 100 kWp is the lower edge of the commercial segment in EEG and ISE reporting.
100kWpDeclared scope, not a physical limit.Rejects sizes where the retail-avoidance value proposition no longer applies.
Market range 5 MWp is a common upper edge for a single industrial roof.
5000kWpDeclared scope, not a physical limit.Keeps an entered cost intensity inside a plausible market band.
Market range700EUR/kWpWidened lower edge of the ISE 2024 rooftop band.Keeps an entered cost intensity inside a plausible market band.
Market range2000EUR/kWpWidened upper edge of the ISE 2024 rooftop band.Benchmarks the entered CAPEX against the published low end of the market.
Market range900EUR/kWpFraunhofer ISE LCOE study 2024, Table 1.Benchmarks the entered CAPEX against the published high end of the market.
Market range1600EUR/kWpFraunhofer ISE LCOE study 2024, Table 1.Default cost intensity, to be replaced by a supplier quote before the case is defended.
Market range1250EUR/kWpMidpoint of the ISE 2024 published band.Default fixed operating cost; absorbs insurance, monitoring, cleaning and the inverter reserve.
Market range21.5EUR/kWp/yearFraunhofer ISE LCOE study 2024, Table 2.Degrades both the levelized energy and the lifetime generation.
Market range0.00251/yearFraunhofer ISE LCOE study 2024, Table 2.Default project life used for levelization.
Market range30yearsFraunhofer ISE LCOE study 2024, Table 2.Default discount rate.
Market range0.035ratioFraunhofer ISE LCOE study 2024, Table 2.Documents the nominal counterpart of the real rate; not used by the model.
Market range Nominal rates run roughly 1.8 points above real ones at current inflation.
0.053ratioFraunhofer ISE LCOE study 2024, Table 2.Explains the gap between the nominal and real discount rates; the model itself runs in constant euros.
Market range0.018ratioFraunhofer ISE LCOE study 2024, Table 2.Lower anchor of the European yield range offered to the user.
Market range935kWh/kWp/yearFraunhofer ISE LCOE study 2024, Table 3.Default specific yield.
Market range1105kWh/kWp/yearFraunhofer ISE LCOE study 2024, Table 3.Upper anchor for German sites.
Market range1280kWh/kWp/yearFraunhofer ISE LCOE study 2024, Table 3.Upper bound of the specific-yield input range.
Market range Up to 1600 kWh/kWp/yr in southern Spain.
1600kWh/kWp/yearFraunhofer ISE, Recent Facts about Photovoltaics in Germany.Documents that the specific yield entered is a net AC figure with the performance ratio already inside it.
Market range0.8ratioFraunhofer ISE, Recent Facts about Photovoltaics in Germany.Documents the upper edge of the performance ratio embedded in the yield input.
Market range0.9ratioFraunhofer ISE, Recent Facts about Photovoltaics in Germany.Floor of the published band used to position the computed LCOE.
Market range57EUR/MWhFraunhofer ISE LCOE study 2024, chapter 4.Ceiling of the published band used to position the computed LCOE.
Market range120EUR/MWhFraunhofer ISE LCOE study 2024, chapter 4.Reference tariff against which a site's own price is compared.
Market range 74.8 EUR/MWh (Finland) to 255.2 EUR/MWh (Ireland).
183.7EUR/MWhEurostat news release, non-household electricity prices H2 2025.Lower bound of the retail tariff input.
Market range Finland is the EU floor; the next lowest cluster sits near 90-110 EUR/MWh.
74.8EUR/MWhEurostat news release, non-household electricity prices H2 2025.Upper bound of the retail tariff input.
Market range Ireland is the EU ceiling; Germany sits at 226.4 EUR/MWh.
255.2EUR/MWhEurostat news release, non-household electricity prices H2 2025.Default price for the exported surplus.
Market range59.6EUR/MWhGerman EEG tariff schedule, August 2025.Upper end of the regulated export band; a merchant PPA can sit above or below it.
Market range82.6EUR/MWhGerman EEG tariff schedule, August 2025.Documents the erosion of the regulated export price over time.
Market range 54.4 EUR/MWh for 40-100 kW surplus, degressing 1% every six months.
54.4EUR/MWhGerman EEG tariff schedule, August 2026.Lower bound of the self-consumption input, and the reference the commercial case must beat.
Market range20%Fraunhofer ISE, Recent Facts about Photovoltaics in Germany.Threshold above which a self-consumption claim must be evidenced by a metered load curve.
Market range40%Fraunhofer ISE, Recent Facts about Photovoltaics in Germany.Default self-consumption share; must be confirmed against a metered load curve before the case is defended.
Market range70%AIDefault array size for the reference case.
Market range500kWpScope midpoint.Declares the currency year of the results and the fact that vintages are mixed.
Market range Cost data 2024, price data 2025-2026.
2025yearStated modelling convention.
Sources
6 external sources
Sources
6 external sources
- Fraunhofer ISE - Levelized Cost of Electricity, July 2024 (CAPEX, OPEX, degradation, WACC, LCOE method)
- Fraunhofer ISE - Recent Facts about Photovoltaics in Germany (yields, performance ratio, self-consumption)
- Eurostat - Non-household electricity prices, second half 2025 (retail tariff avoided)
- pv magazine / Bundesnetzagentur - EEG feed-in tariffs from 1 August 2025 (100 kW-1 MW surplus band)
- pv magazine / Bundesnetzagentur - EEG feed-in tariffs from 1 August 2026 (surplus degression)
- IEA-PVPS Task 1 - Review and Analysis of PV Self-Consumption Policies (2016)