Designing a Custom Terminal App

Systems Design
Client
Osprey EV Charging Network
Project type
Systems Design
Project year
May 2024 - March 2025

Problem Statement

Paying for EV charging relied on rigid, machine-led terminal flows that didn’t work well for drivers in real charging situations. The experience needed to be clearer, more forgiving, and work alongside the charger screen, while still being reliable enough to scale across thousands of locations.

Outcomes

I designed a custom payment app for Adyen-powered Payter terminals at Osprey charging points. The work covered payment flows, error handling, receipts, and session recovery, supported by a small, scalable design system. The app was tested on site and rolled out across thousands of EV chargers.
I designed a driver-first payment experience that made paying for EV charging clearer and less stressful in real-world conditions.
The custom terminal app handled edge cases like failed payments, interrupted sessions, and receipts more gracefully, reducing friction at a critical moment in the charging journey.
The work scaled across thousands of charging points, creating a more consistent and reliable payment experience across Osprey’s network.

Context

This project focused on designing a custom payment experience for EV charging terminals at Osprey sites. The aim was to replace rigid, machine-led terminal flows with a clearer, driver-first interface that worked alongside the charger screen. The app was built for Adyen-powered Payter terminals and tested in real charging environments before being rolled out across the network.

Constraints

The terminal app had to work within the limitations of fixed hardware and alongside an existing charger screen, rather than replacing it. Designs needed to be clear and legible on a small display, handle multiple charging states, and remain reliable across thousands of locations. There was also a need to create a lightweight design system that could scale across terminals without becoming overly complex.

Primary Challenge

The main challenge was helping drivers understand what was happening at the charger at a glance, especially when multiple charging sessions could be active at the same unit. The interface needed to clearly communicate availability, payment status, and next steps, while handling errors and interruptions without causing confusion or frustration.

Discovery

  • I started by reviewing the existing terminal payment flows to understand where drivers were getting confused, stuck, or slowed down.
  • I spent time testing the terminals in real charging environments, observing how people approached the charger, switched between the charger screen and the terminal, and reacted when things didn’t go to plan.
  • I worked closely with engineers to understand the technical constraints of the Payter terminals and how payment states, errors, and session data were handled behind the scenes.
No items found.

Design Goals

  • Make paying for EV charging feel clear, quick, and driver-first in real-world conditions.
  • Reduce confusion between the charger screen and the terminal by clearly communicating status, availability, and next steps.
  • Create a scalable terminal design system that could be reused across thousands of charging points.

Principles

  • System over screens
    Focus on reusable patterns and shared behaviours so the terminal experience could scale consistently across the network.
  • Simplify complex data
    Present charging and payment information in a way that feels clear and manageable, even when multiple states or sessions are involved.
  • Design for error and recovery
    Treat failed payments, interruptions, and session recovery as core parts of the experience, ensuring drivers always understood what had happened and what to do next.

Design Decisions

Streamlined Payment Flow

I wanted users to have a seamless and intuitive experience when initiating payments at the charging terminal. By simplifying the steps and making the payment process really clear, I reduced user confusion and made sure that even first-time users could get through it without any hassle.

Accessibility and Feedback Loops

Ensuring that the interface was accessible to all users in real world settings was key to the projects success. We conducted real world testing and designed with accessibility principles guiding the designs , so that the terminal app could be used comfortably by people with different levels of tech familiarity.

Receipt and Completion Options

At the end of the charging session, we wanted to make sure users had a simple and clear way to get their receipt. Offering a scannable QR code or an easy receipt process ensured a smooth wrap-up to the whole experience. By leaving the QR code on screen for up to a minute, we considered user context of retrieving their device ad being able to scan easily.

The Solution

I designed a custom terminal app that replaced rigid payment flows with a clearer, driver-first experience. By focusing on simplified data, predictable states, and robust error and recovery flows, the app worked smoothly alongside the charger screen and scaled across thousands of terminals. A small, purpose-built design system ensured consistency while remaining flexible enough to adapt to different charging scenarios.

No items found.

Learnings

This project highlighted how important it is to design for shared systems, not isolated screens. Working with constrained hardware and complex payment states reinforced the value of simplicity, clear communication, and designing for failure as a core part of the experience. It also deepened my understanding of how close collaboration with engineering can shape more reliable and scalable products.

Let's work together

For enquiries about product design roles or collaborations, feel free to get in touch.

Some work is subject to confidentiality and can’t be shared publicly, but I’m happy to discuss further examples on request. I aim to respond within one business day.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.