top of page
Electric Car Charging

Case study

Smart EV Charging Platform and Multi-Brand Vehicle API for a Norwegian Energy Technology Company

Plexteq collaborated with a Norwegian energy technology company to develop a brand-agnostic electric vehicle charging API featuring a price-aware smart charging engine. The solution automatically converts Nord Pool spot prices and local grid tariffs into cost-optimized charging plans, delivered on a Java 21 and Spring Boot platform with full-stack observability.

Project Highlights

Industry

Energy & E-Mobility

Market

Nordics / EU

Expertise

EV Charging, Smart Charging & Demand Flexibility, API Platforms, OEM Integrations

Cooperation

2023 – 2025

Technologies

Java 21, Spring Boot 3, PostgreSQL, InfluxDB, Grafana, Datadog, Resilience4j, Docker

Business Challenge

Norway leads the world in electric vehicle adoption, raising a key residential energy question: when should millions of cars charge? Nordic electricity is priced hourly on the Nord Pool spot market, and households also pay grid tariffs that vary by location and time. Charging a car immediately at 17:00 coincides with the evening peak, while charging during lower-cost night hours reduces both costs for owners and strain on the local grid.

 

Our client, a Norwegian energy technology company, aimed to make charging optimization accessible to every EV owner through existing partner apps. Their objectives were to enable users to start and stop charging from the app, automate charging during the lowest prices, and provide clear cost visibility for each charge.

​

The primary challenge was vehicle integration. Each EV manufacturer provides a proprietary API with unique authentication, credential requirements, command semantics, rate limits, and reliability. Commands sent to vehicles aren't always executed because of sleep mode, connectivity loss, or silent rejections. As a result, app teams focusing on direct OEM API integration would spend significant effort on integration and error handling, rather than enhancing the customer experience.

​

The client required a single, stable API layer that any front-end or back-office application could integrate with, regardless of vehicle brand. They also sought an optional intelligent tier to manage planning, scheduling, and reliable command execution. Plexteq was engaged to deliver the platform end to end, covering architecture, data modeling, OEM integration, the smart charging engine, and production operations.

Key Challenges

#1. Fragmented OEM Ecosystem

Each vehicle brand uses a distinct API contract, credential model (such as password, PIN, or username), token lifecycle, and command behavior. The platform required a uniform contract, enabling client applications to control any supported vehicle through consistent endpoints.

#2. Unreliable Command Delivery

Vehicle commands can fail for reasons such as sleep mode, connectivity loss, unplugged cables, or OEM throttling. In smart charging scenarios that require multiple start-and-stop cycles overnight, a single missed command could leave the car uncharged by morning.

#3. Price-Aware Planning Across Tariffs

Optimal charging plans depend on hourly spot prices, supplier markups, location-specific grid tariffs, current battery level, available charging power, and the user's required departure time. Since these factors change daily, the plan needed to recalculate automatically each time the car was plugged in.

#4. Multi-Tenant, Security-Sensitive Access

The API supports multiple partner applications, each with distinct users, and maintains long-term access to customer vehicles. OEM credentials and tokens needed to be managed so partner apps would not store them, and users could revoke vehicle access at any time.

Solution Delivered

Plexteq's dedicated mobile team owns the full lifecycle of the SDK: architecture, development, releases, documentation, and merchant-facing support.

↳ Brand-Agnostic Vehicle API 

Plexteq developed the core service as a Spring Boot application with a versioned REST API documented via OpenAPI/Swagger. A catalog endpoint lists all supported vehicle brands, models, and years, along with machine-readable credential requirements, enabling partner apps to dynamically generate the appropriate login form for any brand.

​

An adapter layer supports the uniform contract, with each OEM integration implementing a common vehicle interface for authentication, vehicle state, charge state, start and stop commands, and location. Tesla was the first production integration, and the architecture allowed new brands to be added without modifying the public API or client applications.

↳ Two Product Tiers from One Codebase 

The client required two commercial packages, both supported from a single codebase:

​

  1. EV API (core): a lightweight, reliable mapping layer for partners developing their own charging logic. It supports vehicle discovery, authentication, battery and connection state, and direct start and stop charging.

  2. EV API PRO: the comprehensive smart charging tier, offering extended vehicle and charging insights, per-location charging settings, price-optimized schedules, recurring charging, failure notifications, and cost history.

↳ Reliable Command Queue with Acknowledgment and Retries 

In the PRO tier, every command, whether immediate or part of an overnight plan, is written to a persistent command queue in PostgreSQL rather than sent directly to the vehicle. Each entry includes its scheduled send time, command type, acknowledgment state, retry counter, and status. A dispatcher operating across multiple service instances claims due commands using row-level locking, sends them through the appropriate OEM adapter, and verifies the vehicle's resulting state rather than relying solely on the API response.

​

Retry behavior is configured per vehicle type through retry plans that define how many attempts are made and how long to wait between them, reflecting each manufacturer's real wake-up and throttling characteristics. OEM calls are wrapped with Resilience4j circuit breakers and rate limiters, so a degraded manufacturer API cannot cascade into the rest of the platform.

↳ Smart Charging Engine 

When a user asks for the car to reach, for example, 80% by 07:00, the scheduling engine:

​

  1. Reads the current battery level, capacity, and available charging power (voltage, phases, and actual current) from the vehicle to calculate the required energy and time.

  2. Loads hourly Nord Pool spot prices for the relevant price area, applies the power supplier's markup, and adds the grid tariff identified from the car's location.

  3. Selects the cheapest combination of intervals that delivers the required energy before the deadline, minus a configurable safety buffer, so short interruptions don't leave the car undercharged.

  4. The resulting start-and-stop sequence is written to the command queue, and the plan is returned to the app with projected costs for immediate versus smart charging, enabling the app to display user savings.

 

A separate minimum charge level lets the platform respect grid-flexibility signals: charging can be paused or overridden when the grid needs relief, but never below the floor the user has set.

↳ Recurring, Location-Aware Charging 

Users can set charging profiles by location, specifying target levels and ready-by times for weekdays and weekends. When the car is plugged in at home, the platform detects it and automatically generates the next optimized plan without user intervention. At unknown locations, automatic charging is disabled by default to prevent unexpected behavior, but manual control remains available.

↳ Cost History and Energy Accounting 

Each completed charge is recorded with its schedule, energy consumed, power cost, grid cost, total cost, and location. The system stores price and tariff data for each interval, enabling accurate cost calculations. Partner apps can display per-charge and historical spending, as well as user savings from smart charging.

Key Results

~32%

average reduction in charging cost versus immediate charging

99.5%+

of planned charges completed by the user's ready-by time

<2 weeks

typical time for a partner app to integrate the full API

1 day

to onboard a new partner application on the multi-tenant platform

Business Outcome

The core EV API launched first, providing partner app teams with a stable integration target within weeks. The PRO tier was introduced after a pilot period, during which smart charging plans were tested on real vehicles and compared to immediate charging using identical price data.

​

Measurable gains from the engagement:

  • ~32% lower average charging cost for users on smart charging compared with charging immediately on plug-in

  • 99.5%+ of scheduled charges completed on time, supported by automated retries and evening readiness checks

  • A single integration for partner apps across multiple supported vehicle brands, with new OEMs added without API changes

  • Real-time visibility into charging behavior and integration health through Datadog and Grafana

  • Complete cost transparency per charge, including power, grid, and savings, available to end users in their app

KUJUNDAME TULEVIKKU

Plexteq pakub parima kvaliteediga tarkvaraarendus-, testimis- ja tugiteenuseid.

​

Meie arendatud süsteemid teenivad kõrgtehnoloogia, tervishoiu, telekommunikatsiooni, jaemüügi, võrguturbe, kinnisvara ja videokonverentside valdkonna kliente.

 

Meil on edasijõudnud oskused ja piisavad ressursid, et luua suuremahulisi lahendusi ning viia idu- ja kasvuettevõtted ideest kasumini.

KONTAKT

Ahtri tn 12, Tallinn, 15551, Eesti
18 Yunosti ave., Vinnytsia, 21000, Ukraina

+372 6 10 42 43 
+380 67 395 35 34

  • Twitter
  • Facebook
  • LinkedIn

© 2014–2026 Plexteq

bottom of page