EV Charging Financial Model
The Idea
There is a particular kind of optimism that only strikes after midnight, somewhere between the second coffee and the realization that four Alpitronic HYC300 chargers cost as much as a small apartment. The optimism goes like this: what if I just built a charging park? Eight charging points, a little canopy, maybe a car wash and a row of vacuums for the people who like to detail their car at 23:00 on a Tuesday.
The responsible thing to do, before signing anything, is to build a spreadsheet. I did not build a spreadsheet. I built a React + TypeScript app with Recharts, Tailwind, and a Zustand store, because if I’m going to be told that my dream is financially unsound, I want it told to me with a responsive donut chart.
This is what the model does, and what it had the nerve to tell me.
The CAPEX, or: where the money goes to die
The model opens on a Dashboard with ten KPI cards, each fitted with a little traffic light — green, yellow, red — so that you can experience disappointment in colour. But the real character-building happens on the Investition tab, where the total investment is assembled one line item at a time.
Four chargers at €50,000 each is €200,000, which feels like a lot until you scroll down to the line that says grid connection: €140,000. That’s right — wiring the things up to the actual electricity costs nearly as much as two of the four chargers combined. Nobody warns you about this. The chargers are the glamorous part; the grid connection is the part where a utility company looks at your dream and quietly attaches a price to it.
After that come civil works (€25k per station), a canopy so people don’t charge in the rain, a €100k car wash, four vacuum units, branding, IT, and a small land deposit. The model then adds two of my favourite line items in all of finance:
Sum of line items
+ Planning costs (5% of the sum)
+ Contingency (10% of the sum incl. planning)
= Total investment ≈ €793,000Contingency is the line where you formally admit, in writing, that you don’t know what’s going to happen. It is the most honest number in the entire model and it is 10%. Personal experience suggests this is roughly one-third of what it should be.
Revenue, or: optimism in a tooltip
The Erlöse tab is where the model earns its keep, because revenue from a charger is not “price × hope.” It’s a chain of multiplications, each of which is an invitation to deceive yourself:
Charging time = (45 kWh / 300 kW) × 60 = 9 minutes
Session length = 9 min + 15 min standstill overhead = 24 min
Max sessions/day = floor(points × operating minutes / session length)
Effective sessions = max sessions × utilizationThat 15-minute standstill overhead is the model’s quiet acknowledgement that humans exist. The car finishes charging in nine minutes; the human finishes their coffee, their phone call, and their existential pause in the driver’s seat some time later. The chargers don’t earn money during the pause.
Then there’s utilization, which ramps linearly from 12% in year one to 22% by year three. Read that again. The base case — the realistic case — assumes the eight charging points sit completely idle roughly 80% of the time. This is apparently normal and fine and how the entire industry works, which is a sentence that should keep someone awake at night, and that someone is now me.
A few more delightful details the model insists on modelling correctly:
- B2B customers get a discount on their share of the revenue. The friends-and-fleet rate.
- PSP fixed fee: €0.10 per transaction. A tiny toll booth that opens every single time anyone taps a card.
- Charger efficiency: 93%. You buy electricity, 7% of it becomes heat and regret, and you sell the rest.
The three scenarios and their honest colors
There are three pre-baked scenarios, and whoever assigned the colours was not in a generous mood:
| Scenario | Colour | Utilization | Charging price | Electricity |
|---|---|---|---|---|
| Konservativ | #DC2626 (red) | 8% → 15% | €0.54/kWh | €0.18/kWh |
| Base Case | #2563EB (blue) | 12% → 22% | €0.59/kWh | €0.15/kWh |
| Optimistisch | #16A34A (green) | 16% → 30% | €0.64/kWh | €0.12/kWh |
The optimistic scenario assumes you sell more electricity, at a higher price, while buying it cheaper. It is the scenario in which the universe actively cooperates with you. It is green for “go” and also, I suspect, green for “good luck with that.” The conservative one is red, low, expensive, and is the only one I trust, because pessimism has never once let me down.
The heatmap that knows too much
The Analyse tab contains a 9×9 sensitivity matrix: charging price (€0.39–0.79) on one axis, utilization (8–30%) on the other, with each cell showing year-3 EBITDA. Red cells lose money, green cells make it, yellow cells are the breakeven knife-edge where the whole thing wobbles.
It is, functionally, a mood ring for €793,000. The currently selected scenario gets a yellow border so you can find your exact spot on the map between “fine” and “ruin.” I spent an embarrassing amount of time dragging the price slider just to watch a column of cells change colour, which is the financial-modelling equivalent of poking a bruise.
Right next to it sits a break-even curve — EBITDA plotted against utilization — and a vertical line marking where you’ve decided to land. The point where the curve crosses zero is the minimum utilization at which the park covers its operating costs before interest, depreciation, and paying anyone back. It is a smaller number than you’d hope and a larger number than you’d like.
Newton-Raphson does not care about your feelings
The financing engine is where the model stops being a toy. It runs a proper annuity loan schedule:
Annuity = Loan × (r·(1+r)ⁿ) / ((1+r)ⁿ − 1)…splits every payment into interest and principal, feeds the interest into the P&L as an expense and the principal into the cash-flow statement, and — this is the part I’m unreasonably proud of — adds depreciation back in the cash flow, because depreciation is an expense that never actually leaves your bank account. The money already left, years ago, in one traumatic lump on the Investition tab.
The IRR is computed by Newton-Raphson iteration over the equity cash-flow series, starting at −equity and converging “typically in a few steps.” There is no kinder way to describe what that algorithm does. You hand it your hopes as a series of numbers and it returns a single percentage with no commentary, no encouragement, just a value next to a traffic light that is green if IRR ≥ 10% and otherwise not green. The NPV discounts the same series at 8%, which is the opportunity cost of not simply leaving the money in something boring.
And then there’s the 24% Körperschaftsteuer at the bottom of the P&L, because the one scenario nobody models away is the tax office.
Tech Stack
| Layer | Choice |
|---|---|
| UI | React + TypeScript |
| Charts | Recharts (donut, break-even curve, heatmap) |
| State | Zustand store |
| Styling | Tailwind CSS |
| Math | Hand-rolled annuity schedule + Newton-Raphson IRR, no finance library |
What I learned
Three things.
First, the grid connection will get you. Budget for it emotionally before you budget for it financially.
Second, a charger that stands idle 80% of the time is, apparently, a healthy charger. The whole business is a bet on a number — utilization — that you cannot directly control, dressed up in eight tabs of charts that make you feel like you can.
Third, and most importantly: building the model was the cheapest, most honest part of the entire venture. For the price of a weekend and some npm install, I got a tool that lets me discover precisely how my plan fails before spending €793,000 discovering it the other way. The donut chart is just a bonus.
I have not built the charging park. But I have a very nice React app that explains, in green, yellow, and red, exactly why I should think about it a little longer.