Eurocash360

Redesign of a wholesale app integrating two distinct purchasing modes.
UX Design — UI Design — Native iOS/Android & Web — Designed in 2024 at mohi.to agency

Overview

Eurocash Group is the largest wholesale distributor of fast-moving consumer goods (FMCG) in Poland.

They provide comprehensive supply chain solutions, keeping thousands of independent grocery stores, cafes, restaurants, and hotels stocked and running smoothly.

Context

Eurocash operated two disconnected apps for deliveries and in-person shopping, creating a fragmented digital experience that needed to be unified.

Previously the company ran entirely separate applications: one for ordering deliveries, another for the Cash & Carry halls. Different databases. Different navigation logic. Different pricing, too. A customer could see one price on the delivery app and something else entirely at the hall, with no way to compare or switch between the two.

This fragmentation was one piece of a multi-year transformation of Eurocash's wholesale business, part of modernizing how the company served independent store owners at scale.

A key information shaping every design decision was the target audience: the largest user group is 50+, many of them long-time store owners more used to in-person, paper-based, or phone-based ordering than digital tools. Clarity, low cognitive load, and forgiving interaction patterns had to come before trend-driven UI choices.

The goal was a single product spanning web, desktop, and native iOS/Android apps, one that could hold two very different purchasing logics without either one losing its clarity — while respecting how differently a store owner uses a phone in the middle of the hall versus a desktop at the back office.

Team & my role

The project was designed by a 4-person team at mohi.to agency. As the core contributor, I carried most of the design work, from information architecture through to final UI.

I designed the overall structure, navigation logic, and interaction patterns running across native iOS, Android, and web/desktop — adapting flows to each platform's conventions (e.g. gesture-based cart management and barcode scanning on mobile vs. denser data views on desktop) while keeping the underlying system consistent. I owned the most critical part of the product, the offer/catalog screen, adapted for both native mobile and web contexts, and I was responsible for the advanced cart system (covered below).

We worked in an agile setup, running two-week sprints in close collaboration with Eurocash's product and dev teams.

Eurocash ran usability tests with real users and, while we were working, kept bringing results back to us. That loop mattered. Our design decisions got validated against actual user behavior. That shaped things like the promotion completion mechanic and the multi-cart flow.

Approach

Every decision in this section came down to one thing, really: making two conflicting shopping logics feel like a single system.

Starting from Eurocash's user research and the MVP scope, we leaned on Analytics and Hotjar data to shape an information architecture built around what each customer group actually needed.

The toughest system-level problem was reconciling two channels running on completely different pricing and purchasing logic, Cash & Carry halls on one side, scheduled deliveries on the other, into something that felt like one coherent product.

To avoid making users mentally switch between modes, I designed a shared Customer Budget, a real-time price comparison view, and a persistent indicator that always showed which channel someone was currently shopping in. Without that constant, visible anchor, it would've been easy to lose track of which prices or promotions applied at any given moment, especially for users who weren't used to context-switching inside an app in the first place.

The cart as a system

For many Eurocash customers, the cart isn't a checkout step, it's storage, a promotion tracker, and a running list of several prices at once.

Many Eurocash customers use the cart as storage or a promotion tracker, holding several running prices at once, rather than as a quick checkout step.

For delivery orders, I built a cart that lets customers select and deselect individual items for partial submission, because these orders often get placed over days, not minutes, and fulfilled in batches rather than one clean transaction.

Then there's the promotion completion piece. If a customer is short by – for example – 2 units on a promotion requirement, the cart lets them top it up to unlock the discount.

The same item could sit inside two or three different offers simultaneously. Because of this I designed an aggregate promotions view showing every deal a product currently qualifies for. Some promotions only kick in at certain quantity tiers (the first 5 units at one price, everything after at another), which means a single product line in the cart might carry several prices at once, not just one.

To keep that readable, I presented a clean average price per product, with the full promotion breakdown still there if someone wanted to dig into it. Customers could trust the total on the screen without doing math in their head.

Self service in the hall

Customers scan their own cart in the hall, manage several at once,  add codntainers, deposits, and bundle deals, all in one place.

This flow only exists on the native mobile app, since it depends on the phone's camera for scanning and needs to work reliably with one hand while someone's pushing a cart. For in-hall shopping, I designed the self-service flow: scan a barcode on your physical cart to link it to a digital session, then scan and add products yourself as you go.

Customers can run several physical carts at once within a single app session, adding, removing, reassigning products between them, which meant treating cart management as a system with multiple moving parts.

On top of that, there's container support: Eurocash-branded containers with a deposit, or your own, weighed and barcoded in-store. Both had to behave consistently in the cart, deposit tracking included.

Cash & Carry pricing also runs on bundles rather than single units, mixed-product package deals, which needed its own view entirely, one that groups otherwise unrelated products into a single purchasable unit tied to the promotion.

Outcome

The app replaced two legacy platforms and now serves 45,000 customers, most of them independent store owners running one or more locations.

eurocash360 launched as the first B2B app in Poland to bring two separate wholesale channels, delivery and Cash & Carry, under one roof.

By designing a single navigation model, one unified cart system, and pricing logic that stayed consistent across both channels, the product turned two fragmented, inconsistent tools into one coherent solution, laying groundwork for Eurocash's ongoing transformation from a traditional wholesaler into an integrated retail operator.

My contribution to this project — owning IA, navigation, and the cart system across web and native mobile — led to my promotion to Senior Product Designer in mohi.to partway through the engagement.