Home Battery Dynamic Tariff: Savings and Payback After 2027
Simulate a year of PV, household demand and dynamic prices. Compare net metering, self-consumption and optimized home battery dispatch, including negative prices, grid charging and payback.
Dutch net metering, the salderingsregeling, ends on 1 January 2027 under the law approved by the Eerste Kamer in December 2024. This home battery dynamic tariff calculator compares electricity bills, charging decisions and battery payback after that change. Engineers, students and homeowners can explore a complete 365-day hourly simulation of an existing PV system and household.
Enter PV power, roof orientation, local annual horizontal irradiation, household electricity use and a battery quotation. Latitude, longitude, tilt and azimuth set the solar geometry. The irradiance model includes diffuse light, roof transposition, cell temperature and inverter clipping. Choose a household occupancy pattern. These normalized weather and demand patterns illustrate a scenario; they do not replace a measured household record.
The editable price year has a Dutch-style daily shape, summer solar depression, wind dips, weekends and negative electricity prices. Enable the wholesale curve to edit its 24 hourly values. Wholesale prices exclude VAT. Enter energy tax and the supplier purchase fee separately; the model adds 21% VAT to all three components. A negative wholesale price can still leave a positive household import price.
The default follows DELTA's published 2027–2029 settlement: hourly gross export compensation is the higher of spot and half the bare import rate, with a nonnegative monthly gross credit. Charges remain separate. Enter your own fees; the defaults are illustrative. Export compensation assumes the household KOR VAT exemption. Unrestricted spot settlement and fixed compensation remain available as explicit contract what-if options.
Compare four cases: historical flat-rate annual net metering through 2026, no battery after 2027, PV self-consumption and cost-selected dispatch. Daily dynamic programming respects capacity, power, efficiency and charging permissions, and carries energy overnight. Complete annual bills and cycling wear decide between feasible policies, including zero-export operation when it can avoid a fixed fee. Select a day, read the hourly grid-charging schedule and play the hour control to follow energy flows. Positive battery power means charging.
Bill saving measures electricity settlement; net cash saving also subtracts operating costs. Wear is a separate economic proxy used in dispatch. Simple payback repeats first-year net cash, while NPV includes the chosen discount rate and revenue decline. These are constant-contract sensitivities. The statutory minimum ends in 2030, so reassess future contract changes before interpreting a long payback.
This tool supports study and quotation screening. It excludes quarter-hour trading, imbalance income, PV curtailment, flexible appliance scheduling, backup sizing and network-capacity design. Daily foresight and finite SOC resolution do not guarantee the year-wide trading optimum. The historical row is an illustrative benchmark with an assumed historical feed-in fee, not a reconstruction of a dynamic contract. Installation work belongs to a qualified person. Rules and sources were reviewed on 2 November 2026.
How it is calculated
The year contains 8,760 hourly energy balances in fixed CET. NOAA solar-position equations give solar direction. Haurwitz clear-sky GHI is modulated by an author-defined weather pattern and normalized to annual horizontal irradiation. Erbs decomposition, isotropic sky and ground reflection give tilted-plane irradiance. PVWatts uses −0.004/K, a 45 °C NOCT cell-temperature approximation, 14% aggregate system losses and AC clipping. Published pvlib examples independently test the PV functions.
For hourly household energy , PV energy , battery AC energy (positive charging) and usable stored energy :
Both one-way efficiencies equal . The Bellman recursion minimizes
Capacity, AC power and charging/export permissions constrain every action. Each daily problem covers 36 hours; execute its first 24 hours and carry SOC forward. Initial usable energy and terminal credit are zero. Reserved energy is untouched.
SOC value functions and executed policies use linear interpolation. Controls include SOC-grid destinations, exact power/energy limits and zero grid exchange. Convex Bellman searches use derivative bisection; nonconvex prices require enumeration. Simultaneous charge/discharge and simultaneous metered import/export are forbidden.
Selection compares complete annual bills plus cycling wear for the daily price dispatch, greedy self-consumption and idle policies. Bills include actual monthly settlement and the annual fee only if exports exceed numerical tolerance. When self-consumption can absorb all surplus, an extra zero-export Bellman policy is evaluated: backward reachable SOC bounds reserve enough space for future surplus, and SOC grids follow those bounds. This family competes against export-enabled dispatch after fees. In floor-active months a second marginal-price candidate treats gross compensation as zero; final billing always applies the complete monthly rule. This candidate comparison is not a year-wide mixed-integer optimum.
Import prices are . Wholesale prices, the purchase fee and energy tax exclude VAT. Household gross export compensation assumes KOR exemption; entered export charges include VAT. The protected contract uses , floors each monthly gross credit at zero and bills charges separately. Spot and fixed modes omit this protection.
Equivalent cycles are discharged DC energy divided by usable capacity. Year- cash flow is first-year bill saving times less operating cost. NPV discounts these flows and subtracts investment. Wear affects dispatch and economic saving; it is not a second cash expense in NPV.
Assumptions
Defaults represent 4.5 kW PV, 3,500 kWh/year household demand, 10 kWh nominal storage with 10% reserve, 5 kW AC power and 90% round-trip efficiency. Weather, prices and occupancy are editable synthetic scenarios, not observations or a 2027 forecast. They share a short deterministic weather cycle without a calibrated joint probability model.
The protected default uses DELTA's February 2026 terms for 2027–2029; illustrative supplier purchase and export fees are not a quotation. Energy tax is the September 2026 budget baseline of €0.088/kWh excluding VAT. All purchase components receive 21% VAT. Investment, operating and wear costs are household cash amounts including irrecoverable VAT. Gross export compensation receives no added VAT under the assumed KOR exemption.
Self-consumption charges only from PV surplus and discharges into household deficit. Battery export is disabled in the protected PV mode. There is no curtailment, standby load, self-discharge, battery-temperature model, backup scheduling or replacement. Capacity is constant during the operating year; revenue decline affects cash flow only.
The historical saldering row is an illustrative annual flat-rate benchmark with its own import and surplus rates and a fixed assumed €0.02/kWh historical feed-in charge. Common grid/subscription charges and household tax credits are omitted from every case because they cancel in battery savings.
Where it applies
Rules snapshot: 2 November 2026. Net metering ends on 1 January 2027. The protected default implements one documented supplier settlement, not all Dutch contracts; use the actual fees and contract. The minimum-compensation requirement expires in 2030. Payback and NPV extrapolate the selected first-year settlement with an editable revenue decline: they are constant-contract sensitivities, not forecasts of post-2029 law, prices or revenue.
Daily planning assumes perfect hourly forecasts with 12 hours of next-day lookahead. Annual fee activation and monthly compensation are evaluated exactly for each feasible candidate, but finite-grid daily planning and candidate selection do not establish a global annual optimum. Charges may make the net export proceeds negative even when gross compensation is protected. Tiered feed-in fees are represented by an entered marginal fee and one export-activation fee.
The default uses 10 usable-energy intervals and runs near three seconds. Fee-avoidance or floor-active scenarios require extra year-long policies; they use 40% of the requested intervals, rounded up, with a minimum of four, to retain the complete dispatch and settlement physics within a similar runtime. The executed interval count is shown in the calculation. This coarser grid can move close cost rankings: in the fixed-fee regression four intervals raise the bill by about 0.5% relative to ten. Increase the requested grid to resolve close choices, accepting longer runs. Default annual bill saving changes by less than 1% at twice the grid; the convergence check verifies this case only. Extreme negative prices require slower exhaustive transition searches.
EPEX quarter-hour products, DST and intrahour arbitrage are not resolved. There is no live price connection. Power/price staircases apply over their integer-hour intervals; animated SOC varies linearly within each hour. Final stored energy is included in conservation and has no cash credit.
Simple payback uses constant first-year net cash. The assessment-life verdict also allows declining revenue. Unrecovered payback is left blank in the comparison table. NPV excludes financing, replacement, residual value and uncontracted trading income. Installation work belongs to a qualified person.
References
- Eerste Kamer, Wet beëindiging salderingsregeling (36.611), adopted 17 December 2024, effective 1 January 2027. https://www.eerstekamer.nl/wetsvoorstel/36611_wet_beeindiging
- Rijksoverheid, Salderingsregeling stopt in 2027; compensation and feed-in-charge rules, accessed 2 November 2026. https://www.rijksoverheid.nl/themas/klimaat-milieu-en-natuur/energie-thuis/salderingsregeling
- Patrick Jowett, pv magazine, High energy prices reshape Dutch solar market ahead of net-metering phaseout, 7 August 2026; market context only. https://www.pv-magazine.com/2026/08/07/high-energy-prices-reshape-dutch-solar-market-ahead-of-net-metering-phaseout/
- EPEX SPOT, Annual Trading Results of 2025; day-ahead market and transition to 15-minute products. https://www.epexspot.com/en/news/annual-trading-results-2025-overall-record-across-all-market-segments
- Determining cost-efficient controls of electrical energy storages using dynamic programming, Journal of Mathematics in Industry (2024). https://doi.org/10.1186/s13362-024-00140-1
- NOAA Global Monitoring Laboratory, General Solar Position Calculations. https://gml.noaa.gov/grad/solcalc/solareqns.PDF
- pvlib-python Haurwitz clear-sky model and published regression values. https://pvlib-python.readthedocs.io/en/stable/reference/generated/pvlib.clearsky.haurwitz.html ; https://raw.githubusercontent.com/pvlib/pvlib-python/main/tests/test_clearsky.py
- pvlib-python Erbs decomposition; isotropic transposition. https://pvlib-python.readthedocs.io/en/stable/reference/generated/pvlib.irradiance.erbs.html
- pvlib-python 0.7.1 PVSystem guide, published PVWatts 9.8 W example. https://pvlib-python.readthedocs.io/en/v0.7.1/pvsystem.html
- DELTA Dynamisch, product terms effective 1 February 2026, §13.3 pp.11–12 and §13.8 p.14: documented 2027–2029 dynamic export settlement and household KOR VAT treatment. https://files.deltaenergie.nl/media/productvoorwaarden/Productvoorwaarden-DELTA-Dynamisch-1februari2026.pdf
- Rijksoverheid, Opbouw energierekening: 21% VAT on the energy bill including energy tax, accessed 2 November 2026. https://www.rijksoverheid.nl/documenten/vraag-en-antwoord/energie-thuis/opbouw-energierekening
- Ministerial answers 1832 (2024–2025), questions 3–4: nonnegative monthly export compensation and 50% bare-rate minimum through 2029. https://zoek.officielebekendmakingen.nl/ah-tk-20242025-1832.html
- Ministry of Finance, corrected fiscal key table for 2027, September 2026, p.2: planned electricity tax 8.80 eurocent/kWh in the first two bands. This editable budget assumption is not a supplier quotation. https://www.rijksfinancien.nl/sites/default/files/bestanden/belastingplan-2027/pakket-belastingplan-2027/Fiscale-sleuteltabel-2027-incl-correctie-tarieven-energiebelasting-zelfstandigenaftrek.pdf
- Independent verification: SciPy 1.15.3 / HiGHS continuous LP (s12), negative-retail-price mixed-integer LP (s13) and zero-export continuous LP (s18). Complete input vectors and results attached; reproducible scratch programs reference_lp.py, reference_negative_milp.py and reference_zero_export_lp.py.
Inputs
| Input | Symbol | Unit | Default |
|---|---|---|---|
| PV DC nameplate power | pv_rating | kW | 4.5 |
| Annual household electricity | load_year | kWh | 3500 |
| Latitude | lat_site | deg | 52.1 |
| Longitude east | lon_site | deg | 5.1 |
| Roof tilt | roof_tilt | deg | 35 |
| Roof azimuth Clockwise from north: east 90°, south 180°, west 270°. | roof_az | deg | 180 |
| Annual horizontal irradiation Use the annual GHI for your site from PVGIS or local weather records. | ghi_year | kWh/m^2 | 1050 |
| PV inverter AC rating | inverter_kw | kW | 4 |
| Household pattern | load_shape | Morning and evening peaks | |
| Battery nominal energy | cap_nom | kWh | 10 |
| Minimum state-of-charge fraction Reserved energy is unavailable for daily trading. | reserve_frac | 0.1 | |
| Battery AC power limit | batt_kw | kW | 5 |
| AC round-trip efficiency | eta_rt | 0.9 | |
| Wear cost per AC kWh throughput In euros per kWh, charged on both charge and discharge energy. | wear_price | €/kWh | 0.02 |
| Allow grid charging | allow_grid | true | |
| Allow battery export Enable only if the battery and electricity contract permit battery energy to be sold. | allow_export | false | |
| Export compensation | export_mode | Dutch 2027–2029 (DELTA rules) | |
| Energy tax, excluding VAT 2027 budget baseline; VAT is added by the model. | import_add | €/kWh | 0.088 |
| Supplier purchase fee, excluding VAT Illustrative fee; replace with the fee in your contract. | buy_fee | €/kWh | 0.02 |
| Export price adjustment No VAT added for a household under the KOR exemption; applied only in the spot what-if. | export_add | €/kWh | -0.015 |
| Fixed export compensation Gross €/kWh before the separate feed-in charge. | export_fixed | €/kWh | 0.06 |
| Feed-in charge, including VAT Per exported kWh; separate from protected gross compensation. | feed_fee | €/kWh | 0.02 |
| Annual export fee, including VAT Charged only when the selected case exports electricity. | feed_fixed | €/year | 0 |
| Historical net-metering import rate €/kWh for an illustrative annual flat-rate saldering benchmark through 2026. | net_rate | €/kWh | 0.28 |
| Historical surplus compensation €/kWh for annual exports beyond annual imports. | net_surplus | €/kWh | 0.06 |
| Installed battery investment Euros for battery, inverter changes and installation after any rebates. | battery_cost | € | 6500 |
| Battery annual operating cost €/year for subscriptions or maintenance beyond the common electricity bill. | opex_year | €/year | 25 |
| Annual discount fraction | discount_rate | 0.04 | |
| Annual saving decline fraction Cash-flow sensitivity for declining usable capacity and revenue, without a replacement. | fade_rate | 0.02 | |
| Assessment life | life_years | year | 15 |
| Requested usable-energy intervals Extra fee or settlement comparisons use 40% of this grid, with at least four intervals. | soc_grid | 10 | |
| Edit hourly wholesale curve Keep enabled to apply an edited hourly price curve. | edit_curve | false | |
| Summer solar price depression €/kWh midday reduction on clear summer days. | summer_dip | €/kWh | 0.085 |
| Wind-driven price reduction €/kWh dip during the deterministic five-day weather cycle. | wind_dip | €/kWh | 0.055 |
| Wholesale 00:00 | p_h0 | €/kWh | 0.065 |
| Wholesale 01:00 | p_h1 | €/kWh | 0.058 |
| Wholesale 02:00 | p_h2 | €/kWh | 0.05 |
| Wholesale 03:00 | p_h3 | €/kWh | 0.048 |
| Wholesale 04:00 | p_h4 | €/kWh | 0.05 |
| Wholesale 05:00 | p_h5 | €/kWh | 0.06 |
| Wholesale 06:00 | p_h6 | €/kWh | 0.085 |
| Wholesale 07:00 | p_h7 | €/kWh | 0.11 |
| Wholesale 08:00 | p_h8 | €/kWh | 0.12 |
| Wholesale 09:00 | p_h9 | €/kWh | 0.105 |
| Wholesale 10:00 | p_h10 | €/kWh | 0.085 |
| Wholesale 11:00 | p_h11 | €/kWh | 0.07 |
| Wholesale 12:00 | p_h12 | €/kWh | 0.06 |
| Wholesale 13:00 | p_h13 | €/kWh | 0.055 |
| Wholesale 14:00 | p_h14 | €/kWh | 0.055 |
| Wholesale 15:00 | p_h15 | €/kWh | 0.065 |
| Wholesale 16:00 | p_h16 | €/kWh | 0.085 |
| Wholesale 17:00 | p_h17 | €/kWh | 0.115 |
| Wholesale 18:00 | p_h18 | €/kWh | 0.145 |
| Wholesale 19:00 | p_h19 | €/kWh | 0.155 |
| Wholesale 20:00 | p_h20 | €/kWh | 0.135 |
| Wholesale 21:00 | p_h21 | €/kWh | 0.11 |
| Wholesale 22:00 | p_h22 | €/kWh | 0.09 |
| Wholesale 23:00 | p_h23 | €/kWh | 0.075 |
| Day of year to inspect | day_view | 172 | |
| Hour of selected day | hour_play | h | 13 |
Results
With the default inputs above, the calc gives:
| Result | Value |
|---|---|
| Annual PV generation | 4,243 kWh |
| Optimal annual bill saving | 367 € |
| Optimal annual net cash saving | 342 € |
| Saving after modeled wear and operating cost | 265 € |
| Annual battery charging from grid | 425 kWh |
| Equivalent full discharge cycles | 212 |
| Simple cash payback | 19 year |
| Investment NPV | -3,174 € |
| Negative wholesale-price hours | 492 h |
| Negative household import-price hours | 0 h |
| Assessment-life payback | No payback within assessment life |
| Selected battery policy | Price dispatch |
Checked against sources
Each case below was calculated by this calc and agrees with the value from its source (within the tolerance where one is shown).
pvlib: clear sky at 30° elevation
Source: pvlib-python test_haurwitz, published expected GHI for 30° elevation. https://raw.githubusercontent.com/pvlib/pvlib-python/main/tests/test_clearsky.py
Inputs: the default inputs above.
| Result | Source | This calc |
|---|---|---|
| Haurwitz reference GHI | 487.9 W/m² | 487.9 W/m² |
pvlib: 10 W module at 30 °C
Source: pvlib-python 0.7.1 PVSystem guide worked example: 10 W, 1000 W/m², 30 °C, −0.004/K gives 9.8 W. https://pvlib-python.readthedocs.io/en/v0.7.1/pvsystem.html
Inputs: the default inputs above.
| Result | Source | This calc |
|---|---|---|
| PVWatts published example | 9.8 W | 9.8 W |
24-hour dispatch versus independent continuous LP
Source: Independent SciPy 1.15.3 / HiGHS linear program, 24-hour PV and load fixture, 4 kWh / 2 kW battery, efficiencies 0.9/0.9, wear €0.02 per AC kWh. Objective €1.3732716049382718. Program and full input vectors attached as s12; no calculator formulas imported.
Inputs: the default inputs above.
| Result | Source | This calc |
|---|---|---|
| HiGHS dispatch reference objective | 1.373 ± 0.002 € | 1.375 € |
Negative retail prices versus independent binary-mode MILP
Source: Independent SciPy 1.15.3 / HiGHS mixed-integer program, 24 hours at €−0.30/kWh during four hours, binary charge/discharge and import/export modes, 2 kWh / 1 kW storage, efficiencies 0.9/0.9, wear €0.005 per AC kWh. Complete fixture attached as s13; no calculator formulas imported.
Inputs: the default inputs above.
| Result | Source | This calc |
|---|---|---|
| Negative retail-price MILP reference objective | -0.5784 € | -0.5784 € |
Zero-export dispatch versus independent continuous LP
Source: Independent SciPy 1.15.3 / HiGHS LP, 24 hours, 2 kWh usable capacity, 1 kW, one-way efficiency 0.9, no exports; complete input and objective are attached as s18. The LP has no simultaneous cycling. Calculator uses 80 intervals; the remaining difference is Bellman interpolation.
Inputs: the default inputs above.
| Result | Source | This calc |
|---|---|---|
| Independent zero-export LP objective check | 2.27 € | 2.27 € |
DELTA minimum, monthly floor and fixed-fee arithmetic
Source: Analytical application of DELTA February 2026 terms §13.3 (p.11) and separate VAT-inclusive sales fees (p.12). At spot −0.10 and purchase fee 0.02, half the bare rate is −0.04. Monthly gross credits [−2,0.5] settle as [0,0.5]. Fixture exports 10 and 5 kWh in January at gross −0.04 and 0.10, and 1 kWh in March at gross −0.04: fees €0.32, credited compensation €0.10, annual activation fee €300 => €300.22.
Inputs: the default inputs above.
| Result | Source | This calc |
|---|---|---|
| Negative-hour minimum compensation check | -0.04 €/kWh | -0.04 €/kWh |
| Monthly gross-credit floor check | 0.5 € | 0.5 € |
| Monthly floor and annual fee billing check | 300.2 € | 300.2 € |
VAT applies to changing wholesale prices and energy tax
Source: Rijksoverheid, Opbouw energierekening: 21% VAT applies to the energy bill including energy tax. Analytical check: (€0.10 wholesale + €0.02 purchase fee + €0.088 energy tax) × 1.21 = €0.25168/kWh. https://www.rijksoverheid.nl/documenten/vraag-en-antwoord/energie-thuis/opbouw-energierekening
Inputs: the default inputs above.
| Result | Source | This calc |
|---|---|---|
| 21% VAT arithmetic check | 0.2517 €/kWh | 0.2517 €/kWh |
Related Resources
Related courses
IEC Electrical Schematics and Industrial Control Panels
Basic Electrical Controls & Diagram Reading

Responses