Reverse-engineering the Telebirr receipt QR code
A customer holds up their phone at a shop counter in Addis. On the screen is a Telebirr receipt, and in the corner is a small square labelled Payment QR Code . The shopkeeper has a queue and a 10-character transaction number to copy by hand. cheki.et is a free, MIT-licensed tool that checks Ethiopian bank and wallet receipts against the bank's own record. We wanted that shopkeeper to be able to…
A Telebirr receipt QR code on a phone screen is decoded from base64 to ASCII text of hex characters, which reveals the transaction number hidden within. The QR code follows a TLV (tag, length, value) format, where the transaction number is contained within a larger hex value. The CRC (cyclic redundancy check) value is verified at the end of the payload to ensure its integrity. A Python script was used to decode the QR code and validate the transaction number and CRC, ensuring that it matches the real receipt.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.