My company, MoneyBadger, enabled Lightning payments acceptance for Pick n Pay in South Africa last year. PnP is the 2nd largest retailer in South Africa with over 1500 stores nation wide. (which is why SA's btcmap is looking so healthy).
The main problem we had is that PnP uses their own QR format, so we developed a "companion app" that is a QR scanner capable of reading the retailer's QR codes and translating it into a bolt11 invoice. Our app, CryptoQR, lets you pick your preferred Lightning wallet (since iOS's default app selection is useless), and auto-launches your wallet with payment info pre-filled.
So the way to pay with Lightning at the till is:
  1. Ask the teller for "QR checkout"
  2. Launch "CryptoQR" and scan the payment QR code
  3. "CryptoQR" launches your wallet of choice with bolt11 invoice loaded (URI scheme lightning:)
  4. Complete payment in your preferred wallet.
It's clunky, but it works. For a long time we tried to think of a better solution to remove the dependency on our scanner app. Maybe we could publish an API? But open-source lightning wallet developers seemed reluctant to add a South Africa specific proprietary API to their codebases (rightfully so!).
That's when we spoke to one of the Blink Wallet (blink.sv) devs who suggested "Hey, why don't you just create a lightning address for each transaction, in the form: <qr_data>@our.domain.
Brilliantly elegant! Can't believe I didn't think of that! No need for adding 3rd party APIs, just map a specific QR format to a specific lightning address provider.
The trivial code change was created and merged about a week ago: https://github.com/GaloyMoney/galoy-client/pull/331/files
This is permissionless innovation in action.
Ironically, somebody posted a video of Blink scanning and paying directly at PnP to reddit and the mods removed it, thinking it was spam?. Meanwhile it is something fairly unique and special. Reddit used to be cool, what happened?
I tried to set the record straight on that thread and got insta-banned
reply
1010 sats \ 1 reply \ @ek 1 Nov
Why does PnP use their own QR format?
reply
Very good question...
South Africa has a number of different QR based mobile wallets. They all used their own QR format, but it became a bad user experience as you had to match the code at the till with the user's app.
The retailer QR technology providers decided to standardise on a single QR format and require all mobile wallets to support the "universal" standard. Unfortunately, this universal standard (based on EMVco) looks nothing like a Bitcoin or Lightning invoice.
reply
Nice workaround :)
reply