Matko Milić logo
Back to work

Case study

Go2Wash

A digital layer for a self-service car wash network in Croatia.

Go2Wash is a mobile app for buying tokens through Revolut, finding partner car wash locations, and starting washing devices through an ISU code. The launch is coming soon, and the system is prepared for 24 companies, 59 car wash locations, and 571 devices in Croatia.

Mobile2026RRevolut payments

Overview

One app, multiple partners, hundreds of devices.

The challenge was not only building a polished mobile UI. The product also had to connect the user experience with an existing car wash server, partner companies, locations, user balances, and physical machines in the field. A user buys tokens for a selected company, finds a location, scans the machine ISU code, and sends credit to start washing.

Token purchase for a selected partner and location.

Map and list of car wash locations with GPS data.

ISU code scanning on the washing device.

Fetching min/max/step rules for the specific device.

Sending credit to the machine and updating local balance.

Wash history, news, promotions, and user settings.

My role

Mobile app, integrations, and production logic.

The project was developed under Nordia Digital, where I was CEO and the only developer on the project. I built the React Native app, car wash API integration, Firebase functions, Revolut payments, device scanning, locations, wallet logic, and release preparation.

Scale

Prepared for a national network.

According to the client, the system will cover 24 companies, 59 car wash locations, and 571 devices in Croatia. Each partner has its own payment/wallet flow, and the app has to route purchased tokens to the correct owner.

User flow

User flow

The challenge was not only building a polished mobile UI. The product also had to connect the user experience with an existing car wash server, partner companies, locations, user balances, and physical machines in the field. A user buys tokens for a selected company, finds a location, scans the machine ISU code, and sends credit to start washing.

Payments

Revolut card, Revolut Pay, Apple Pay, and Google Pay.

A key part of the project is the payment architecture. The app creates a Revolut order, passes metadata such as owner and token quantity, and after a successful payment the backend credits the correct partner wallet. This allows one app to support multiple companies without mixing balances.

Native Revolut Pay flow with deep-link return to the app.
Card payments through the Revolut merchant card form SDK.
Apple Pay and Google Pay processed through a Revolut order.
Per-owner wallet routing for partner car wash companies.
R

Revolut

Token payment

EUR

Order

20

tokens

€10.00

Revolut Pay
Apple Pay
Google Pay
Card

Intermediary model

A first-of-its-kind payment/tax architecture for a car wash network in Croatia.

The key business detail is that Lavateh does not need to treat all partner turnover as Lavateh’s own revenue for tax/accounting purposes. Lavateh acts as an intermediary: the customer pays through the Lavateh app, while the backend uses owner metadata, wallet routing, and transaction records to automatically attribute the revenue to the actual company whose car wash was used. Lavateh revenue is created only when a Lavateh-owned location is used.

Revenue is automatically linked to the partner that owns the location or device.

Lavateh can unify payments and user experience without mixing partner business income.

The Revolut payment flow carries the metadata required for correct post-payment allocation.

The model is prepared for multiple partners, locations, and machines inside one app.

Stack and delivery

A mobile product for physical infrastructure, payments, and field operations.

React NativeExpoFirebaseCloud FunctionsRevolut paymentsApple PayGoogle PayQR/ISU scannerMaps

Ownership

Developed under Nordia Digital, where I was CEO and the only developer on the project.

Want something similar?