alex-arguello.com_ menu ≡

CASE_02 · 2022–2024 · ZETTLE_US

Zettle US Launch

PayPal · Zettle · Compose design system · accessibility

I led the Android Key-In and PayPal Invoicing features for Zettle's US launch, drove early architecture decisions across the Stockholm timezone gap, and built the custom design system library shared between PayPal Here and Zettle modules. Introduced TalkBack and accessibility into both surfaces; wrote the Kotlin microservices that bridge PayPal's payment systems with Zettle's invoicing and manual-card-input flows.

PLATFORMS
Android · backend microservices
ROLE
Lead engineer
STACK
Kotlin · Compose · MVI
FOCUS
US launch · accessibility · DS

// case_study

Zettle is PayPal's small-business POS brand, born in Stockholm and dominant across Europe before this work. The launch into the US market needed feature parity with the Stockholm origin product, integration with PayPal's payment systems, and accessibility built in from day one — not retrofitted later.

I led the Android development of the Key-In and PayPal Invoicing features for the US expansion. Key-In is the manual-card-entry path — when there's no reader, when the card is over the phone, when a refund is going out without a present cardholder. Invoicing is the asynchronous payment path that bridges PayPal's existing payment infrastructure with the Zettle POS workflow.

I drove the early architecture decisions and the cross-timezone integration with the Stockholm stakeholders. Daily-overlap windows are short between San Jose and Stockholm — writing decisions down rigorously, aligning async, and protecting handoffs became part of the job.

Zettle and PayPal Here were two product surfaces that had to feel coherent inside the merchant's hands while still respecting the brand boundary — Zettle is Zettle, PayPal Here is PayPal Here. I led the creation of a custom design system library that standardized the UI primitives across both modules, so a button, a list cell, an input field meant the same thing visually and behaviorally regardless of which product surface was rendering it.

TalkBack and accessibility work was something I introduced across the PayPal Here and Zettle modules during this period. Accessibility is the kind of thing that's brutal to retrofit and pleasant to design in — labels, focus order, the announcement strategy for state changes are the kinds of decisions you want to make once, in the architecture phase, and never again.

Behind the UI work I developed Kotlin microservices that enabled the actual communication between PayPal's payment systems and Zettle's invoicing and manual-card-input flows. The mobile app talks to these services; the services talk to legacy PayPal payment infrastructure on one side and the Zettle workflow on the other. Putting the translation in microservices instead of in-app meant the integration could evolve without forcing app updates.

That same boundary became the foundation for Server-Driven configurations and made cross-platform parity between Android and iOS something the service layer enforced — not something each app had to chase release by release.

modern stack

Kotlin · Jetpack Compose · Coroutines · StateFlow / SharedFlow · MVI · Hilt

backend & systems

Kotlin microservices · Java · Android SDK · Retrofit · OkHttp · Protobuf · JSON · Gradle custom plugins · Objective-C

← ./work · cd ../