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.

#dynamic programming #dynamic tariff #home-battery #negative prices #net metering #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 LL, PV energy SS, battery AC energy aa (positive charging) and usable stored energy EE:

g=L−S+a,E′=E+{ηcaa≥0a/ηda<0.g=L-S+a,\qquad E'=E+\begin{cases}\eta_c a&a\geq0\\a/\eta_d&a<0.\end{cases}

Both one-way efficiencies equal ηrt\sqrt{\eta_{rt}}. The Bellman recursion minimizes

Vh(E)=min⁡a{pbmax⁡(g,0)−psmax⁡(−g,0)+w∣a∣+Vh+1(E′)}.V_h(E)=\min_a\{p_b\max(g,0)-p_s\max(-g,0)+w|a|+V_{h+1}(E')\}.

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 (pspot+fpurchase+tenergy)(1+0.21)(p_{spot}+f_{purchase}+t_{energy})(1+0.21). 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 max⁡(pspot,0.5(pspot+fpurchase))\max(p_{spot},0.5(p_{spot}+f_{purchase})), 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-yy cash flow is first-year bill saving times (1−f)y−1(1-f)^{y-1} 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

InputSymbolUnitDefault
PV DC nameplate powerpv_ratingkW4.5
Annual household electricityload_yearkWh3500
Latitudelat_sitedeg52.1
Longitude eastlon_sitedeg5.1
Roof tiltroof_tiltdeg35
Roof azimuth
Clockwise from north: east 90°, south 180°, west 270°.
roof_azdeg180
Annual horizontal irradiation
Use the annual GHI for your site from PVGIS or local weather records.
ghi_yearkWh/m^21050
PV inverter AC ratinginverter_kwkW4
Household patternload_shapeMorning and evening peaks
Battery nominal energycap_nomkWh10
Minimum state-of-charge fraction
Reserved energy is unavailable for daily trading.
reserve_frac0.1
Battery AC power limitbatt_kwkW5
AC round-trip efficiencyeta_rt0.9
Wear cost per AC kWh throughput
In euros per kWh, charged on both charge and discharge energy.
wear_price€/kWh0.02
Allow grid chargingallow_gridtrue
Allow battery export
Enable only if the battery and electricity contract permit battery energy to be sold.
allow_exportfalse
Export compensationexport_modeDutch 2027–2029 (DELTA rules)
Energy tax, excluding VAT
2027 budget baseline; VAT is added by the model.
import_add€/kWh0.088
Supplier purchase fee, excluding VAT
Illustrative fee; replace with the fee in your contract.
buy_fee€/kWh0.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€/kWh0.06
Feed-in charge, including VAT
Per exported kWh; separate from protected gross compensation.
feed_fee€/kWh0.02
Annual export fee, including VAT
Charged only when the selected case exports electricity.
feed_fixed€/year0
Historical net-metering import rate
€/kWh for an illustrative annual flat-rate saldering benchmark through 2026.
net_rate€/kWh0.28
Historical surplus compensation
€/kWh for annual exports beyond annual imports.
net_surplus€/kWh0.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€/year25
Annual discount fractiondiscount_rate0.04
Annual saving decline fraction
Cash-flow sensitivity for declining usable capacity and revenue, without a replacement.
fade_rate0.02
Assessment lifelife_yearsyear15
Requested usable-energy intervals
Extra fee or settlement comparisons use 40% of this grid, with at least four intervals.
soc_grid10
Edit hourly wholesale curve
Keep enabled to apply an edited hourly price curve.
edit_curvefalse
Summer solar price depression
€/kWh midday reduction on clear summer days.
summer_dip€/kWh0.085
Wind-driven price reduction
€/kWh dip during the deterministic five-day weather cycle.
wind_dip€/kWh0.055
Wholesale 00:00p_h0€/kWh0.065
Wholesale 01:00p_h1€/kWh0.058
Wholesale 02:00p_h2€/kWh0.05
Wholesale 03:00p_h3€/kWh0.048
Wholesale 04:00p_h4€/kWh0.05
Wholesale 05:00p_h5€/kWh0.06
Wholesale 06:00p_h6€/kWh0.085
Wholesale 07:00p_h7€/kWh0.11
Wholesale 08:00p_h8€/kWh0.12
Wholesale 09:00p_h9€/kWh0.105
Wholesale 10:00p_h10€/kWh0.085
Wholesale 11:00p_h11€/kWh0.07
Wholesale 12:00p_h12€/kWh0.06
Wholesale 13:00p_h13€/kWh0.055
Wholesale 14:00p_h14€/kWh0.055
Wholesale 15:00p_h15€/kWh0.065
Wholesale 16:00p_h16€/kWh0.085
Wholesale 17:00p_h17€/kWh0.115
Wholesale 18:00p_h18€/kWh0.145
Wholesale 19:00p_h19€/kWh0.155
Wholesale 20:00p_h20€/kWh0.135
Wholesale 21:00p_h21€/kWh0.11
Wholesale 22:00p_h22€/kWh0.09
Wholesale 23:00p_h23€/kWh0.075
Day of year to inspectday_view172
Hour of selected dayhour_playh13

Results

With the default inputs above, the calc gives:

ResultValue
Annual PV generation4,243 kWh
Optimal annual bill saving367 €
Optimal annual net cash saving342 €
Saving after modeled wear and operating cost265 €
Annual battery charging from grid425 kWh
Equivalent full discharge cycles212
Simple cash payback19 year
Investment NPV-3,174 €
Negative wholesale-price hours492 h
Negative household import-price hours0 h
Assessment-life paybackNo payback within assessment life
Selected battery policyPrice 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.

ResultSourceThis calc
Haurwitz reference GHI487.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.

ResultSourceThis calc
PVWatts published example9.8 W9.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.

ResultSourceThis calc
HiGHS dispatch reference objective1.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.

ResultSourceThis 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.

ResultSourceThis calc
Independent zero-export LP objective check2.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.

ResultSourceThis calc
Negative-hour minimum compensation check-0.04 €/kWh-0.04 €/kWh
Monthly gross-credit floor check0.5 €0.5 €
Monthly floor and annual fee billing check300.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.

ResultSourceThis calc
21% VAT arithmetic check0.2517 €/kWh0.2517 €/kWh

Related Resources

Responses

Your email address will not be published. Required fields are marked *

L ading...