Problems & solutions · Custom Software

EV Charging Management Software Problems: The 7 That Kill Uptime and Margin, and How to Avoid Them

EV Charging Management Software architecture and database illustration showing common problems and fixes.
The short answer

The most expensive failure mode for a charge point operator is a platform that reports charger status but never closes the loop on it. A DC fast unit throws a Faulted status on a Friday evening, no auto reset fires, no ticket opens, and the first human signal is a one star review on Sunday. That is two days of a $60,000 asset earning nothing, a ninety minute truck roll each way for something a remote reset would have cleared in ten seconds, and a review that suppresses the site in map results for weeks afterwards.

Why does multi vendor OCPP support get underscoped so often?

Because the Open Charge Point Protocol is a standard, and standards read as though the work is done. A proposal says the platform speaks OCPP 1.6J and 2.0.1, everyone treats hardware support as a checkbox, and the price reflects one integration rather than five.

Then the messages arrive. One vendor reports energy in watt hours and another in kilowatt hours. One sends a Faulted status with a vendor error code you decode from a PDF, another simply stops sending heartbeats. StatusNotification transitions differ in order and in timing between brands. MeterValues sampling intervals differ, and one firmware release changes them without warning. Your fleet is Alpitronic, Kempower, ABB, Autel and Wallbox because you bought on price and lead time, which is the correct commercial decision and the reason this problem exists at all.

The fix is architectural and it has to be decided before the first sprint. Normalise at ingestion into one canonical model of site, electric vehicle supply equipment, connector, status, power and session, with a hardware abstraction layer mapping each vendor's error codes and units into your schema. A fault then means the same thing whether it came from Alpitronic or ABB, and when a firmware update changes behaviour you patch one adapter rather than every downstream feature. Insist that the proposal prices each vendor profile as its own line item, because that is what it is.

What goes wrong when you migrate sessions and charger identities?

Charger identity is the part that bites. Every incumbent platform assigns its own identifiers, and the mapping between a physical cabinet, its charge point identity on the network, its connectors and your asset register is rarely clean. Units get swapped under warranty and keep the old identity. A cabinet with four connectors is recorded as four chargers in one system and one in another. Sites get renamed after a rebrand. Two identifiers exist for the same unit because it was recommissioned after a power module replacement.

The session history matters more than operators expect, because it is the baseline for everything you will claim afterwards: uptime by site, revenue per connector, utilisation trends that justify the next capital request. Import it badly and you lose the ability to compare before and after, which is exactly the comparison that proves the project worked.

Do three things. Build the asset register first as its own deliverable, with a stable internal identifier per physical unit and a mapping table holding every external identifier it has ever carried. Import charge detail records rather than summaries, because a summary cannot be re-rated when you discover a tariff was applied wrongly. Then reconcile: total energy and total revenue per site per month in the new system must match the old platform, and every variance must be explained rather than absorbed. Do that before cutover, not after.

Why do payment, roaming and OCPP integrations break after launch?

Each one breaks for a different reason, and you need three different defences. Charger firmware breaks OCPP behaviour, usually after a vendor pushes an update to improve something unrelated. Payment processors change webhook payloads and settlement timing. Roaming hubs such as Hubject and Gireve evolve their interface versions and their partner onboarding rules, and a partner on the other side can change how they present tariffs.

The common failure is silence. A charger that stops sending MeterValues still looks online. A webhook that stops arriving does not raise an error, it simply leaves sessions unsettled. Nothing alerts, and finance discovers it during month end reconciliation three weeks later.

Defend with liveness checks rather than error handling. Alert when a charger's heartbeat gap exceeds its configured interval, when a site's session count drops materially against its own recent pattern, when the ratio of settled to rated sessions moves, and when an interface version is deprecated by a hub. Keep every raw OCPP message for a retention window, because when a vendor disputes a fault you need the transcript. Version your OCPP adapters and test a firmware release on one unit at one site before it reaches the fleet, which requires that your platform can pin firmware per site. Operators who skip that control learn about a bad firmware release from a whole region going dark at once.

What happens when uptime reporting and remediation are not covered?

You end up measuring a number you cannot influence. The federal National Electric Vehicle Infrastructure programme requires a 97 percent uptime minimum on funded sites, and the calculation has a defined shape including which outage causes are excluded. Most platforms will show you a status history. Far fewer compute uptime the way the programme defines it, track excluded causes, and produce the quarterly report a state department of transportation asks for. So the report is assembled by hand from exports, which is slow and, more importantly, produces a number nobody in operations recognises.

The remediation half is where the money is. Detection without an automatic response is just faster bad news. A fault should be fingerprinted against a known error library, then an auto remediation playbook fires first: RemoteReset, ChangeAvailability, and a remote command to release a locked connector. Only when the automatic attempt fails does a ticket open in your service desk, carrying the fault code, the site, the last MeterValues and the unit's recent fault history, so the technician rolls with the right part rather than a guess.

Get both into the first release rather than deferring reporting to phase two. Compliance reporting built after the fact tends to discover that the underlying events were never stored at the granularity the calculation needs, and retrofitting event granularity is a migration, not a feature.

Should you build custom or configure what you already own?

Stay on a subscription platform, and be content about it, if you run under roughly 50 chargers across one or two hardware brands, on standard public tariffs, with no roaming settlement and no federally funded sites. AMPECO, Monta and EV Connect are competent products, the per charger fee is cheaper than owning a platform at that scale, and building to feel sophisticated is an expensive habit.

The middle path deserves more attention than it gets. Many operators do not need to replace the charge point management system at all. They need a layer above it that owns the asset register, the rating and reconciliation, and the operational alerting, while the vendor keeps handling the OCPP connection. That is a materially smaller build and it removes the two most painful problems, which are usually money reconciliation and fault response, without a migration.

Build the platform outright when the vendor's model is the constraint. You cannot consolidate your hardware onto one certified list. Your tariffs include idle fee grace rules, negotiated fleet contracts or demand pass through that the vendor cannot express. You need roaming settled on your own contract terms. Your stacked per charger and per transaction fees now exceed an amortised build at your volume. Or the vendor's roadmap is gating decisions about your own network, which is the point at which the platform has stopped being a convenience and become your profit and loss.

How do hidden costs get into the quote?

Six places, and they are predictable. Each additional vendor hardware profile is real integration work rather than configuration, and the second OCPP version is close to a second project because 2.0.1 does not model the same things 1.6 does. Payment plus tax plus reconciliation is its own workstream, not a line item, because rating, settlement matching and dispute handling are three separate problems.

High availability is the one most often understated. A charger that loses its websocket is a dead charger earning nothing, so the reliability bar here sits above ordinary business software. That means redundant message brokers, connection draining on deploy, and a tested failover, all of which cost money that a demonstration never shows.

Then site level load management tied to a specific utility rate schedule, which is bespoke per tariff and per site electrical design. Compliance reporting, if it is added late. And historical migration with its reconciliation. What holds the number down is scope order: a focused first release covering live OCPP ingestion across your actual hardware, one clean billing flow and an operations dashboard with fault alerting runs $60,000 to $130,000 in 12 to 16 weeks. Roaming, smart charging and full reconciliation belong in the $150,000 to $400,000 phase across 6 to 12 months, priced against real sessions rather than assumptions.

What separates a build that works from one that fails here?

Four markers, in our delivery experience. The first is that the team treats a dropped connection as a revenue incident. Ask a prospective developer what happens when a charger reconnects mid session after a websocket drop. If they have built this before, they will describe session resumption, duplicate transaction handling and how MeterValues gaps are reconciled. If they have not, you will discover the answer in production during a busy weekend.

The second is that every billed kilowatt hour traces to a specific meter reading. That single property is what lets you win a fleet customer's invoice dispute, re-rate a session when a tariff was misconfigured, and reconcile against a processor payout instead of writing off variances. Systems that store a rated total and discard the underlying readings can never do any of it.

The third is migration by waves rather than by date. Point a subset of chargers at the new backend, verify that sessions, billing and faults match the incumbent, then move sites in groups. No location sees meaningful downtime and every wave de-risks the next. A big bang cutover across a network is how operators lose a weekend of revenue and their reconciliation baseline at the same time.

The fourth is owning the code, the repository and the cloud accounts from the first commit, with the right to bring in another firm. That is the structural difference between a build and a subscription with extra steps, and it is the whole reason for taking on the work.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. Standish's 2015 CHAOS research found roughly a third of software projects (about 36% by the Modern definition) fully succeed on time, on budget, and on scope, with top success drivers including executive support, user involvement, and clear requirements/business objectives. Source: Standish Group (CHAOS Report) (2015) →
  2. Deloitte's research found that digitally advanced small businesses experienced revenue growth nearly 4x as high as the prior year, were about 3x as likely to have exported, were nearly 3x as likely to have created new jobs, and were more than 3x as likely to have seen more sales inquiries in the last year. Source: Deloitte (research summarized by Google) (2017) →
  3. A study (led by Prof. Pak-Lok Poon, published in Frontiers of Computer Science, 2024) reviewing decades of spreadsheet-quality research found that about 94% of spreadsheets used in business decision-making contain errors, illustrating the hidden risk of manual spreadsheet workarounds that custom software is built to replace. Source: Central Queensland University / phys.org (Prof. Pak-Lok Poon et al.) (2024) →
  4. Salesforce's field-service research (State of Service / field service trends, survey of 5,500+ service professionals) found that 74% of mobile workers report increasing workloads and 47% say appointments don't go as planned due to customer miscommunication, unaccounted-for parts, or insufficient appointment lengths and travel times. (The separate claim that admin tasks consume ~30% of a technician's hours is NOT supported by the report - the seventh-edition data instead states technicians spend about 18% of working hours, ~7 hours/week, on admin, and only ~32% of time interacting with customers.). Source: Salesforce (2024) →
Shaurya J. · Senior React Native Engineer · Delhi

Shaurya builds cross platform apps in React Native at Digital Heroes, sharing logic between iOS and Android and dropping into native code where the shared layer runs out. His posts are useful for teams estimating a cross platform build and wondering where the hidden work sits.

View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

How should a proposal price support for five different charger brands?
As five line items, not one. Each vendor implements StatusNotification, MeterValues and error codes differently, reports energy in different units, and changes behaviour with firmware releases. A quote that treats OCPP support as a single checkbox has priced one integration and will bill you for the rest as change requests. Ask specifically which vendor profiles are included and what happens when a sixth brand arrives.
What breaks first when we migrate off our current charge point management system?
Charger identity. Units swapped under warranty keep old identifiers, a four connector cabinet is one charger in one system and four in another, and recommissioned units carry two identities. Build the asset register as its own deliverable with a stable internal identifier and a mapping table for every external identifier a unit has held. Import charge detail records rather than summaries, then reconcile energy and revenue per site per month against the old platform before cutover.
How do we stop a firmware update taking out a whole region of chargers?
Pin firmware per site and test a release on one unit at one site before it goes wider, which requires that your platform can control rollout rather than accepting whatever the vendor pushes. Version your protocol adapters alongside it, so a behaviour change is handled in one place. Keep raw protocol messages for a retention window as well, because when a vendor disputes what their unit reported, the transcript is the only answer that ends the conversation.
Can a custom platform actually help us hit the 97 percent NEVI uptime minimum?
Only if it does remediation as well as measurement. Computing uptime the way the programme defines it and tracking excluded outage causes gets you an accurate report. Hitting the number requires fault fingerprinting and an auto remediation playbook that tries a remote reset, a locked connector release and an availability change before a ticket opens, so most soft faults clear in seconds. Build the reporting into the first release, because retrofitting the event granularity the calculation needs is a migration rather than a feature.
Do we have to replace our CPMS, or can we build a layer on top of it?
A layer is often the right answer and it is much smaller work. Keep the vendor handling the protocol connection, and build above it the asset register, the rating and reconciliation engine, and the operational alerting and remediation. That removes the two problems operators actually feel, which are unreconciled revenue and slow fault response, without a migration. Replace the platform only when the vendor's model itself is the constraint on your tariffs, roaming terms or hardware choices.
Why does session revenue never tie to our processor payout?
Because rated totals are stored without the underlying meter readings, so a variance cannot be traced or re-rated. Every billed kilowatt hour should link to a specific MeterValues reading, and the platform should match charge detail records against processor payouts and inbound roaming records, flagging variances for review rather than letting them age out. That property is also what wins the argument the first time a fleet customer challenges an invoice.
What is the most commonly understated cost in an EV charging build?
High availability. A charger that loses its websocket earns nothing, so the reliability bar here is higher than for ordinary business software, and that means redundant message handling, connection draining on deploy and a failover you have actually tested. None of it shows in a demonstration. Site level load management tied to a specific utility rate schedule is the second, because it is bespoke to each site's electrical design and tariff.
How do we cut over without losing a weekend of revenue?
Move in waves. Point a subset of chargers at the new backend, verify that sessions, billing and fault handling match the incumbent, then migrate sites in groups until the network is across. Each wave reduces the risk of the next and no site sees meaningful downtime. A single cutover date across a whole network risks losing both revenue and the reconciliation baseline you need to prove the new system is correct.
Is it cheaper to customize Salesforce than to build a custom CRM from scratch?
If you use less than a third of what Salesforce does, a custom CRM is often cheaper by year three. Salesforce Enterprise lists at $165 per user per month, so 25 seats cost about $49,500 a year before admin and consultant fees, while a focused custom CRM runs $60,000 to $100,000 once plus 15 to 20% a year in maintenance. If you genuinely need Salesforce's ecosystem, reporting, and app marketplace, customizing it beats rebuilding it; the mistake is paying enterprise prices to use it as a glorified contact list.
What happens to my software if the agency shuts down or we stop working together?
Nothing dramatic, if the engagement was set up correctly: the code sits in your repository, hosting runs on your cloud account, and a handover document explains how to deploy and operate the system. Any competent replacement team can then take over in days rather than months. If the agency controls the repo, the servers, or the domain, fix that now, because renegotiating access during a dispute is the most expensive place to discover the problem.
How much should a small business expect to pay for custom software?
Across 2,000+ Digital Heroes projects, a small business system that replaces spreadsheets or one core workflow typically lands between $40,000 and $80,000, with more complex first versions running up to $150,000. The two levers that move the number most are integrations and user roles, not the team's hourly rate. Any quote under $15,000 for a full production system means the vendor has not understood your scope yet.
Should I hire a freelancer or an agency for my software project?
A skilled freelancer is the right call for a single-discipline scope under roughly $15,000, like a website, a plugin, or one integration. Above that, projects need design, backend, testing, and project management at once, and a solo builder becomes the single point of failure: if they get sick or take a bigger client, your project simply stops. Agencies bill 20-40% more per hour but carry continuity, code review, and someone to escalate to, which is what you are actually buying.
How many people should be working on my software project?
A typical $40,000 to $150,000 build runs on three to five people: a technical lead, one or two developers, a designer, and someone owning QA and project communication, often as overlapping part-time roles. More bodies do not make software arrive faster; past a point they slow it down with coordination overhead. The question that matters more than headcount is whether one named senior engineer is accountable for the outcome.
What is a discovery phase, and is it worth paying for separately?
Pay for it, and treat the output as yours. A discovery phase runs two to three weeks, typically 5 to 10% of the eventual build budget, and produces a written scope, wireframes, and a fixed quote you can take to any vendor, including a competitor of the agency that wrote it. Skipping it is how projects end up quoted from a two-paragraph email and delivered at twice the price.
Should I ask for a fixed price or pay the agency hourly?
Fixed price for the first version, hourly or retainer for what comes after launch. A fixed-scope, fixed-price V1 puts the estimation risk on the agency, which is exactly where you want it while trust is unproven; hourly billing on an unscoped greenfield build is a blank check. After launch, flip it, because maintenance and small features arrive unpredictably and fixed-pricing every ticket wastes everyone's time.
How do we get years of data out of our old system and into the new one?
Treat migration as a planned sub-project: a field-mapping document, at least one dry run on a copy of your data, then a cutover with the old system kept read-only for 30 days as a safety net. On Digital Heroes projects it consumes 10 to 15% of the budget when the old system has an export, and more when data must be pulled out screen by screen. Ask any vendor to walk you through their last migration before you sign.
We run everything on spreadsheets and Airtable. How do we know it's time for custom software?
The reliable signals are re-typing the same data into multiple tools, one employee acting as human middleware between systems, and errors appearing in handoffs between teams. Hard limits force the issue too: Airtable's Team plan caps at 50,000 records per base, and Business costs $45 per seat per month, so a 20-person team pays about $10,800 a year for a tool it has already outgrown. When workarounds consume more hours than the tools save, the spreadsheet era is over.
What happens if I stop paying for maintenance after launch?
Nothing breaks on day one, which is what makes it dangerous. Within 6 to 18 months, unpatched dependencies accumulate known vulnerabilities, an integrated API like Stripe ships a breaking change, and the first fix requires a developer to relearn a stale codebase at full price. Budget 15 to 20% of the build cost per year for upkeep; it is the difference between a $500 patch and a $15,000 emergency.
What are the biggest mistakes first-time software buyers make?
Choosing the lowest bid, paying more than 30-40% upfront instead of on milestones, skipping a written specification, and having no maintenance plan for after launch. The most expensive of the four in Digital Heroes rescue projects is the missing spec: without written acceptance criteria, done becomes an argument instead of a checklist, and every disagreement resolves in the vendor's favor. Fix those four and you have avoided most of the ways these projects fail.
What is the biggest mistake first-time software buyers make?
Choosing the lowest quote without asking why it is the lowest. A bid 40% under the field usually gets there by skipping tests, documentation, and code review, which are invisible in a demo and brutal to pay for later; every stalled project Digital Heroes has been asked to rescue tells some version of that story. The second mistake is signing without a written scope, which reliably turns the winning cheap quote into 1.5x to 2x the price by launch.
Who can build a custom software system?

Digital Heroes builds custom software systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.

Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.

What makes Digital Heroes different from other software companies?

Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.

Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.

How can I check Digital Heroes is legitimate before getting in touch?

Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.

Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.

Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?