Category: Analytics
Comparing EV Charging Tariffs Across Networks
A network's kWh price is never the whole price. The items that break comparison, the roaming gap, and how a tariff change gets captured.
Ask a charging network for its kWh price and you get a single number. That number is almost never the whole of what you pay.
Members and guests pay differently on the same network. AC and DC are priced apart. Some networks add a fixed session fee, some a per-minute component, most an idle fee for leaving the connector occupied after the session ends. On top of that sits roaming: the same physical socket can run at three separate prices depending on which app you started it with. Comparing shop-window kWh prices therefore compares shop windows, not prices.
The comparable unit is a reference session
The only honest way to line tariffs up is to run all of them through one scenario. Say thirty kWh drawn from a 120 kW DC socket, thirty minutes long, unplugged within five minutes of finishing. Fix that and each network produces a single total, and the comparison becomes meaningful.
Every comparison made without a reference session ignores whichever items a given network happens to charge. A network with a session fee naturally shows a lower kWh price; a network billing per minute costs far more on a slow-charging car while looking cheap in a list. Apply both to the same session and the ranking frequently inverts.
Weighting is part of the scenario too. A fleet profile is AC-heavy, a highway profile is DC-heavy, and both are real. Defining two or three profiles rather than one lets the same data produce different rankings for different user types — which is what an operator actually needs.
The items that break comparison
Session and connection fees. A fixed amount can double the effective kWh price on a short session and disappear on a long one. So this item also tells you which customer the network is built for.
Per-minute components. Billing by time rather than energy creates a cost that depends on what the car accepts. The same tariff produces a different result for a vehicle pulling 150 kW and one pulling 50 kW; without a stated vehicle assumption the tariff is not comparable at all.
Idle fees. Usually a footnote, but a real part of total cost at busy sites. It is also most informative read alongside utilization: networks with high idle fees tend to show faster socket turnover.
Membership fees. A tariff offering a low kWh price for a monthly subscription is only cheaper above a certain monthly consumption. Without calculating the break-even, "cheaper" cannot be said.
Tax and presentation. Whether prices are shown inclusive of tax varies between networks. Placing two lists side by side as published turns two descriptions of the same commercial offer into an apparent price gap.
Roaming: one socket, three prices
This is the clearest thing separating charging from retail. The operator running a station and the app taking your payment are often not the same company, and each layer in between adds its own margin. The same socket ends up at one price in the operator's app and another through a mobility provider.
That has a direct consequence for the data model: price is not a property of the station, it is a property of the station and the channel together. A dataset that does not keep the channel as a field sees several prices for one station and reads it as volatility. It is not volatility — it is two different sellers.
In practice this means holding a price series per channel rather than one price per station. It is also what makes competitive analysis meaningful: the gap between a network's own-app price and its roaming price shows how aggressively it is positioning its own channel.
A tariff change exists only if it was captured
Price lists are not published retroactively. When a network raises prices, the old figure is removed from the page and replaced. If you did not sample that moment, the change might as well not have happened; there is no way to reconstruct it afterwards.
So tariff tracking, like utilization, is a sampling problem. The difference is that tariffs change far less often but stick when they do. Frequent sampling here is not about catching a momentary state — it is about dating the change precisely, which is the only way to measure when a network raised prices and how many days its competitors took to follow.
We wrote about how to read a price change and which fields have to be recorded together on the retail side, in the anatomy of a price change. On charging tariffs the logic is the same and the fields differ.
Promotion or permanent cut
Charging networks run promotions like retailers do: off-peak night rates, a low introductory tariff for new users, temporary pricing along a specific corridor. To anyone without a series, all of it reads as "that network is cheap".
With a series the distinction is clean. A promotion is a deviation with a start and an end; a permanent cut is a step that settles at a new level. Positioning built without separating the two produces networks that mistake a competitor's campaign for a permanent move and drag their own tariff down for good. We covered the same distinction on the retail side under real versus fake discounts.
Price read apart from utilization stays half an answer
A tariff series on its own is incomplete. A network cutting prices with no change in utilization, and a network holding prices while utilization climbs, are two entirely different stories in the same market. Elasticity only becomes visible when both series are joined on the same station identity.
That in turn requires utilization to have been measured comparably; we covered how to measure charging station utilization separately. Read together, the two point at the investment question: the sites where demand saturates regardless of price are where new capacity belongs.
Conclusion
Comparing charging tariffs is not a matter of putting shop-window prices in a table. It needs a reference session, prices stored per channel, additional items kept separate, and sampling frequent enough to date a change. Without those, the ranking you produce reflects the networks' marketing choices rather than their prices.
The schema behind our EV charging stations usage data is built on exactly those separations: station, channel, tariff components and timestamp as distinct fields. Price is the easy part; comparability is the product.
Where this fits in the platform
Price Intelligence & Data Engineering
Emre writes about the machinery behind competitor price data: product matching, normalization, collection at scale and the analytics layer on top.
More from EmreContact Us
Leave your email address for a detailed demo or overview session, and we will get back to you shortly.
