johns gresham

Headless Stripe Card Reader Entry at Zippin

getzippin.com

Full Stack Software Engineer / Team Lead, Zippin, August 2019

Zippin builds checkout-free store technology. Overhead cameras and shelf sensors track what shoppers pick up, so they can leave without a traditional checkout. Entry still needed a way to identify the shopper and confirm they had a payment method on file.

At the time, the usual way into Zippin stores, and into other checkout-free retailers, was the app. Customers had to download it, create an account, and add a credit card before they could walk in. That is a lot of friction for a quick stop. App entry stayed available after we shipped card entry, but tapping a card was a much easier path and became by far how most people chose to enter.

In August 2019 I shipped card-reader entry for Zippin's San Francisco demo store using a Stripe Terminal Verifone P400 in headless mode. There was no iPad or cashier display. The reader stayed ready for a customer to tap or insert their card, without going through app onboarding.

The constraint

Stripe's Terminal JavaScript SDK was built around a staffed checkout flow, with a browser UI on an iPad or POS display where someone initiates the payment. That does not fit an unattended store entrance that needs to keep requesting a card on its own.

Stripe did not support running the Verifone P400 that way. The bundled front-end code assumed a browser-only environment.

Stripe Terminal Verifone P400 card reader at Zippin's SF demo store entry
Verifone P400 at Zippin's SF demo store.

The approach

I worked through Stripe's bundled JavaScript for Terminal and P400 control, and removed browser-only dependencies so the card reader command logic could run without a display UI. That let us run a headless service that kept the reader in a continuous collect-card state for store entry.

When a shopper tapped or inserted a card, we pre-authorized about $50 so we knew they could cover a reasonable amount of product, then opened the doors. Final charges still came from Zippin's normal post-shop reconciliation using the camera and sensor system.

Card entry demo at Zippin's SF demo store.

Risk I flagged to management

This depended on Stripe's bundled client code and backend behavior outside their documented, supported product path. I made that clear to management.

Management accepted that risk so we could ship the feature.

SF first, then Golden 1 Center

I implemented Verifone P400 entry for Zippin's SF store before any other checkout-free company had this kind of card reader entry, including Amazon.

In January 2020 we put a card reader in Zippin's new store at Sacramento's Golden 1 Center, home of the Sacramento Kings, where customers used it in a high-volume environment. Golden 1 Center announced it as the world's first in-arena checkout-free convenience store. Golden 1 Center partners with Zippin.

Zippin checkout-free store at Golden 1 Center in Sacramento
Zippin store at Golden 1 Center (Sacramento Kings), January 2020.

What I did

Part of a broader Full Stack Software Engineer / Team Lead role at Zippin (Apr 2019 – Jun 2021), building customer-facing systems, store hardware integrations, and the software that made walk-in, walk-out retail work in production.