Why I Built OtterWallet — One PDF Too Many

← Back to overview

Next week I'm taking the train to Malmö. One week, no car — so I bought a weekly transit pass from a third-party provider ahead of time. What I got: an email with a PDF. Inside, a scannable code.

Sounds fine at first. But then came the question everyone probably knows: Do I really have to dig out this PDF on my phone every time I get on the bus? Or — even worse — print the thing out and stuff it in my jacket pocket?

What's the point of having a wallet on my phone?

"This should be easy"

I have an iPhone. Apple Wallet is pre-installed — my bank cards and boarding passes live there. Surely there's a way to just add a barcode.

Nope. Apple Wallet only accepts passes that are digitally signed by an issuer and properly packaged. My PDF ticket? Apple doesn't care.

On to the App Store.

The App Jungle

I tried five or six apps. The first one couldn't read PDFs. The second was so confusing I gave up after three minutes. The third would have worked — if I'd signed up for a monthly subscription at $4.99.

For a single wallet pass.

That's where it got personal. I'm fed up with subscriptions for every little thing. Netflix, Spotify, cloud storage — all fair. But loading a barcode into my wallet? For that, I'm supposed to register, hand over my credit card, and hope I remember to cancel before the trial runs out?

I'm not alone in this. According to CivicScience (2025), 41% of consumers report experiencing subscription fatigue. And a C+R Research study (2025) found that 74% of consumers underestimate their monthly subscription costs — estimating $86 on average while actually spending $219. People simply lose track.

41%Subscription fatigue$86/mo.Estimated cost$219/mo.Actual cost
Quellen: CivicScience (2025), C+R Research (2025)

On top of that, every app wants to be installed first. Storage space, loading time, learning curve. According to AppsFlyer (2025), more than half of all apps are uninstalled within 30 days. 24% don't even make it past the first launch. Who installs an app for a single task that should take two minutes?

The Free App Trap: Required logins, hidden costs, data harvesting

Web Services — Same Story

Okay, I thought, how about a website? Somewhere on the internet, there has to be a service that turns a barcode into a wallet pass.

There is. Behind login walls. And — of course — behind subscription paywalls.

After a few hours of searching, I was close to losing it.

"Fine, I'll Build It Myself"

I've been a full-stack web developer for over 25 years. And I'd been wanting to try out what the new AI tools can do — Claude.ai, Gemini, ChatGPT. What better experiment than a real project solving a real problem?

So I started building.

What I didn't know at the time: generating a wallet pass is not a weekend project. There's the Apple Developer Account, certificates to generate, the Google Wallet API with its own issuer account, connecting a payment provider, calculating transaction fees — and then taxes on top.

But the drive was there. And the pain of the problem was greater than the fear of complexity. You know how it goes: sometimes frustration leads to the best solutions.

From problem to solutionPDF with codeNo way into WalletApps: subscriptions onlyWeb: paywalls onlyBuild own service

What Came Out of It

The result is OtterWallet. A service that does exactly what I needed:

No subscription. You buy a pass pack (1 to 50 passes) and use it whenever you want. No expiration, no auto-renewal, no credit card quietly getting charged.

No app. You open the website, scan your barcode or upload your PDF, and get a finished wallet pass — for Apple or Google Wallet.

No login. You get a code to access your purchased passes. No registration, no email address needed.

Shareable. Your pass pack can be shared with family or friends. One code, multiple passes.

Zero Friction: No app, no subscription, no login

The Price — And Why It Is What It Is

One thing that still bothers me: the price for a single pass. 99 cents sounds like nothing — but when you just want to load one barcode into your wallet, it still feels like too much. It honestly puts me off too.

The problem is microtransaction fees. On a 99-cent payment, the following gets deducted: sales tax, payment provider fees, income tax, business tax. At a price below 50 cents, I'd be paying out of pocket.

That's why the pass packs exist as a workaround. Per pass, you end up at 10 to 30 cents — a price I can live with. And I'm working on bringing the single-pass price down too.

Price per pass (in cents)1 pass99 ct5 passes30 ct10 passes20 ct25 passes12 ct50 passes10 ct

What I Learned

This project taught me more than some professional projects of recent years. Not just technically — certificates, APIs, webhook-based payment processing — but also about AI-assisted development.

I'm genuinely surprised by what you can accomplish with Claude.ai, Gemini, and ChatGPT. Not as a replacement for experience, but as an accelerator. 25 years of web development help you evaluate the output and ask the right questions. But the speed at which you can solve problems and build prototypes is remarkable.

What's Next

OtterWallet is currently in beta. That means: the core features are in place, but there will be rough edges. If you notice something or have an idea, I'd love to hear your feedback.

Next steps:

My Malmö ticket? It's in my wallet now. I'm happy. Next week I'm taking the train there — let's see if the scanner on the bus agrees.

Built for the Journey — currently in beta, created by a human to solve a real problem

By Hans-Peter Beck · Research, text and images with AI assistance