How to Set a Price Floor and Ceiling for EV Charging

The floor and the ceiling decide how much risk your dynamic tariff may take, and they come from two different places: your cost stack and your market. This article shows how to derive both bounds and how often to revise them.

Work out what a tariff with a well set floor and ceiling would earn on your own charge points. Start the analysis Free, on your own volumes

Most operators choose a pricing rule and then spend half the meeting arguing about the rule. The two numbers that actually decide what that rule can do to your revenue are the floor and the ceiling, and they usually get filled in during the last five minutes. On our own public chargers we treat those two numbers as the design, and the rule as a detail.

What is a price floor and a price ceiling on a charge point?

A price floor is the lowest rate per kWh your tariff engine is allowed to publish, and a price ceiling is the highest. You derive the floor from your own cost stack: marginal energy cost, the fees that scale with every transaction, and the contribution margin you refuse to sell below. You derive the ceiling from your market: what comparable chargers nearby ask, what a driver still accepts without feeling caught out, and the AFIR requirement that ad hoc prices stay reasonable. The engine then searches freely between those two bounds, which means the bounds carry the risk and the model carries almost none of it. Write both numbers down before you switch the model on, and write down when you will revise them.

That asymmetry is exactly why it matters. A tariff engine that guesses wrong inside a well set band costs you some margin for a few hours. The same engine inside a badly set band sells energy below cost all night, or prices a driver off your site for a month. If you are still deciding whether a variable tariff suits you at all, start with what dynamic pricing on a charge point actually means.

How do you calculate the floor?

Start from the cost you cannot avoid on the next kWh you sell, then add what you refuse to give away. Marginal cost is the energy purchase plus everything that scales with the transaction: payment processing, the eMSP or roaming fee on sessions arriving through a partner, and any per-kWh platform cost. Fixed costs do not belong in this number, and that is where it usually goes wrong.

Here is the trap, with round example figures. Suppose energy lands at 0.20 euro per kWh and payment and roaming fees add 0.03, so your marginal cost is 0.23. The connection, the maintenance and the platform subscription for that connector come to 900 euro a month. At 600 kWh a month that fixed stack works out at 1.50 euro per kWh. At 3,000 kWh a month it is 0.30. The fixed cost per kWh therefore depends on volume you do not have yet, and a floor resting on it reasons in a circle.

The way out is to keep two numbers instead of one. The absolute floor is marginal cost, and you never publish below it, because under that line every extra session makes the month worse. The working floor is marginal cost plus a contribution you choose, say 0.08 euro per kWh, which gives 0.31 in the example. Every off-peak session at the working floor pays 0.08 towards a connection that would otherwise have earned nothing that hour. Whether that contribution is enough depends on how full the charger already is, which is the calculation in the utilisation a charge point needs to break even.

How do you set the ceiling?

The ceiling comes from your market and your reputation, not from your cost model. Three anchors are usually enough. The first is the comparison a driver makes on the map within a few kilometres of your site. The second is the number you would explain to a journalist without flinching. The third is regulatory, and that anchor is more useful than it looks.

Article 5(3) of AFIR requires ad hoc prices to be reasonable, transparent, clearly comparable and non-discriminatory, and recital 33 explains reasonable as not exceeding the costs incurred plus a reasonable profit margin. The European Commission's own questions and answers on the regulation state that no threshold has been set, that compliance is judged case by case, and that it falls ultimately to the Court of Justice. A ceiling you set yourself, with the cost stack written down beside it, is a great deal cheaper than that conversation.

The market anchor is also wider than most operators assume. Research by the Dutch motoring organisation ANWB across more than 5.9 million public charging sessions, published in February 2026, put the average public price in the Netherlands at 0.48 euro per kWh, with the cheapest municipality at 0.33 and the most expensive at more than double that. A market carrying that much spread will not punish a ceiling that sits well above your average price. It punishes a ceiling that does not exist.

Floor and ceiling are not the same kind of number

They protect against different failures and they age at different speeds, so treating them as one setting is a mistake.

PropertyPrice floorPrice ceiling
Protects againstSelling energy below costReputational and regulatory risk
Derived fromMarginal cost plus a chosen contributionLocal comparison, tolerance, AFIR
Moves whenThe energy purchase price movesThe local market or competition moves
Review rhythmMonthly, or automatically against purchase costQuarterly, or when a nearby charger opens
Failure modeVolume that costs you moneyComplaints and drivers who do not return

What goes wrong when a bound is set badly?

Four failure modes cover nearly everything we run into.

  • Floor too low. The model notices that cheap off-peak hours bring volume and keeps pushing down. Volume rises, margin falls, and the dashboard looks busy.
  • Floor too high. The quiet hours never fill, because the lowest price you allow still sits above what a flexible driver will move for. You keep the margin per session and lose the session.
  • Ceiling too low. The model hits the ceiling every peak hour, so your tariff is flat again at exactly the moments it should not be. The model runs, the pricing does not.
  • Ceiling too high. One bad hour becomes a screenshot, and that screenshot outlives the revenue by years.

The fourth is asymmetric, which is why a self-imposed ceiling is worth more than the margin it costs. The other three show up in your own numbers and can be corrected the same week, provided you record which bound was hit. Detecting the gap between the tariff you set and the price actually billed is what revenue protection is built for.

Why does the floor have to move?

Because the cost side moves further and faster than the demand side. Up to the end of October 2025, Belgium recorded 519 hours of negative wholesale electricity prices, against 584 in the Netherlands and 576 in Germany, according to figures reported by pv magazine. A floor you fixed in January is simply the wrong number by June, and that can go in either direction.

This is also where the most common design mistake lives. When the purchase cost is visible every quarter hour, it is tempting to let the published tariff track that market directly. Do not do that with your public price. A tariff that only follows the energy market exposes your entire margin to a market you do not influence, and it tells the driver nothing about whether the connector is busy. Cheap power at three in the morning does not create demand at three in the morning. Let the floor follow purchase cost, keep the published tariff demand aware, and put the energy-following price where it does earn its keep: as a discount layer for members and subscribers, on top of a demand aware tariff. The subscription structures that make such a member layer workable are listed under our subscription plans.

What would you change on Monday?

Open your tariff configuration and ask one question about each bound: was this number derived, or was it inherited from the previous setup. Then add the two things missing from most configurations. First, a date on which each bound gets reviewed, monthly for the floor and quarterly for the ceiling. Second, a log line every time the model is stopped by a bound, with the price it wanted and the price it published.

That log turns two static numbers into evidence. After a month you can see whether the ceiling is a guardrail or a lid, and whether the floor protects your margin or blocks sessions you would have wanted. A bound that binds every day is no longer a guardrail, it is your actual price. If you want to see what your own sites would do inside a properly set band before changing anything, the free potential analysis works it out from your own volumes.

Frequently asked questions

Should the price floor ever sit below your energy purchase price?

No. Below marginal cost every extra kWh makes your month worse, and volume at that price is volume you are paying for yourself. The only defensible exception is a short, deliberate promotion with a fixed end date and a budget you wrote down in advance. Keep that promotion outside the tariff engine, so the model never learns that price as normal.

How often should you revise the price ceiling?

Quarterly is enough for most sites. The ceiling reacts to the local market and to competition, and neither moves weekly. Revise sooner when a charger opens or closes within a few kilometres, when your site changes character, or when you see a run of sessions capped by the ceiling. That last signal means the ceiling has quietly become your price.

Can the floor and ceiling differ per connector?

Yes, and on most sites they should. An AC point with a small share of the connection and long dwell times has a different cost per kWh and a different tolerance than a DC point on the same meter. One band for the whole site averages that difference away and leaves money on the slower connectors.

Does AFIR tell you how high your ceiling may be?

No. AFIR requires ad hoc prices to be reasonable, transparent, clearly comparable and non-discriminatory, and recital 33 describes reasonable as the costs incurred plus a reasonable profit margin. The European Commission states that no specific threshold exists and that each case is assessed individually. That is exactly why setting and documenting your own ceiling is worth the hour it takes.

What should you log when the model hits a bound?

The timestamp, the connector, which bound was hit, the price the model wanted, and the price finally published. That log turns two static numbers into evidence. After a month you can see whether the ceiling is a guardrail or a lid, and whether the floor is protecting your margin or blocking sessions you would have wanted to serve.

Sources

  1. Questions and Answers on the Regulation on the deployment of alternative fuels infrastructure (EU) 2023/1804 Europese Commissie, DG MOVE
  2. Fees for electric car charging stations vary enormously: ANWB DutchNews.nl, februari 2026
  3. Europe faces surge in negative power prices as solar output grows pv magazine International, november 2025
Back to blog Book a demo