Skip to content
CodeShare

Private iPhone app

Your deposit vouchers and Bonuskaart, in one place

CodeShare is an iPhone app that keeps your Albert Heijn deposit vouchers (emballagebonnen) and your Bonuskaart together, so they're on your phone at the till instead of in a coat pocket at home.

  • Scan a bon
  • See totals per store
  • Show it at the till
An example emballagebon, with made-up values: Albert Heijn store 4520, deposit of 1 euro 20.

What it does

Made for the bottle machine and the till

Scan a bon

Point the camera at the voucher, or pick a photo or screenshot of one. CodeShare reads the barcode and the printed text in one pass: store, address, amount and when it was printed. Anything it misreads, you can correct.

Totals per store

A voucher only works in the store that printed it. So vouchers are grouped by store, each with its total, nearest store first. Walk into one and it appears at the top with what you have to hand in there.

Show it at the till

The app draws the barcode itself, full width, at full screen brightness. The tills at Albert Heijn read it straight off the phone.

Used, or refused

Mark a voucher used once it's scanned. If the till refuses one, it moves to its own list, out of the totals, to try again or delete.

Swipe through at the store Coming

A store visit: the Bonuskaart first, then every voucher for that store, one swipe each. Coming with the next design pass.

CodeShare's home screen with made-up vouchers: a card saying you're at Albert Heijn, Grote Marktstraat 1, with two vouchers worth € 1.80 and a Redeem button; the Bonuskaart; a voucher the till refused; and that store's vouchers.

How it works

Scan, keep, and share if you like

  1. Scan

    Scan the bon when you get it from the machine. You don't need to keep the paper.

  2. Kept on your phone

    Everything is stored on the phone itself, so it works in the shop without signal.

  3. Shared with your household, if you want

    Sign in with a passkey, no password. The people you share with join by scanning a QR code on a member's phone, in person. After that every phone stays in sync.

End-to-end encrypted

The phone that starts a household makes a random household key and keeps it in its Keychain. Each phone also has its own device key in the iPhone's Secure Enclave, which never leaves the chip. When someone joins, the household key travels to their phone sealed to that device key.

Every voucher is sealed with ChaCha20-Poly1305 before it leaves the phone. The server stores sealed blobs and has no key to open them.

Local-only mode

No account needed

Choose “Use without an account” and CodeShare never talks to its server. Your vouchers stay on the phone and nowhere else. The one outside request is to Apple Maps, to find a new store's address so stores can be sorted by distance.

You can turn on sync later in Settings. The vouchers you already have come along.

Privacy

What the server sees, and what it never sees

The server sees

  • Your username and your passkey's public key
  • Your IP address, in its request logs
  • Which phones belong to your household, by their public keys
  • For each code: whether it's a voucher or a card, the store number, whether it's unused, used or refused, and when it was added, changed, used or deleted
  • Each store's address, as printed on the bon (stores are shared by number between all users)
  • A keyed fingerprint of each barcode, so the same bon isn't stored twice. Without your household key it doesn't give away the number.
  • Error reports from the app: fixed messages and error codes, never anything you scanned

It never sees

  • The barcode number, so it can't redeem a voucher
  • The amount, or any label you add
  • The household key, or any phone's private key
  • Your GPS location: sorting by distance happens on the phone

From store numbers and the times vouchers are marked used, the server can work out which stores you visit, and roughly when. The phones keep a sealed copy of each code's store, status and dates, and trust that copy, so the server can't quietly change them.

This website has no analytics, no cookies and no trackers.

FAQ

Questions

Is it on the App Store?

No. CodeShare is a private app, installed straight from Xcode onto the phones it's built for. It isn't on the App Store or TestFlight.

Which stores does it work with?

Albert Heijn, for now. Jumbo may come later.

Why build it?

At Albert Heijn the bottle machine pays out a bon, not cash, and you can only spend it as store credit, in the same store. Bons pile up in wallets, get forgotten, or are in someone else's bag when you're at the till. With CodeShare they're on everyone's phone.

Which languages?

The app is in English, Dutch and Traditional Chinese. This page is in English only.

Does it work without signal?

Yes. Vouchers and the Bonuskaart are stored on the phone. Sync catches up the next time the app is open with a connection.