Receipts Around the World: How ReceiptIQ AI Learned Each Country's Receipts
Before every release, ReceiptIQ AI's scanner is checked against a fixed set of 527 receipts — the release gate. 406 of them are real receipts, photographed in the country they came from. 120 are rendered test receipts (40 Taiwanese, 40 Dutch euro supermarket, 40 German supermarket) built because, at the time, no real ones were available. One is a German receipt rebuilt from a user's report, because the photo that reached us was too small to read. If a change to the scanner makes even one of the 527 come out wrong, the release is blocked until it's fixed.
This page is the honest version of that number: which countries are covered, how deep the coverage really is, and the real receipts — a wrong currency, a misread cash payment, a discount folded into the wrong price, a total read a thousand times too small — that got found and fixed along the way.
The release gate, by country
| Country | Real receipts | Rendered test receipts |
|---|---|---|
| United States | 200 (a public research set of real receipts) | — |
| Japan | 141 (119 from a public Japanese dataset, 22 from a March 2026 Japan trip) | — |
| Netherlands / Bonaire | 30 (a Dutch-speaking user on Bonaire, prices in dollars) | 40 (euro supermarket receipts) |
| Taiwan | 3 | 40 |
| Germany | 6 | 40, plus 1 rebuilt from a user's report |
| Hong Kong | 13 | — |
| Canada | 6 | — |
| South Korea | 2 (airport duty-free shops, priced in US dollars) | — |
| China | 1 | — |
| Singapore | 1 | — |
| Colombia | 1 | — |
| Macau | 1 | — |
| Malaysia | 1 | — |
A few Australian and Singaporean receipts sit inside the US set as well. Seven countries have real depth — United States, Japan, the Netherlands, Taiwan, Germany, Hong Kong and Canada — and the rest, South Korea, China, Singapore, Colombia, Macau and Malaysia among them, are one or two receipts each that we're glad to have and would rather have more of.
One number here undersells a country. ReceiptIQ AI is built in Canada, and its developer has scanned hundreds of his own Canadian receipts with it since launch. That is everyday use, not testing: only six Canadian receipts sit in the fixed set that blocks a release. Turning more of that history into permanent test cases is on our list.
The stories
The count is only useful because of what it caught. Here are the real receipts that broke something, and what changed.
Japan: an English phone couldn't read a Japanese receipt
On a March 2026 trip to Japan, receipts scanned on an English-language phone came back wrong: item names read as barcodes, and two of four totals were incorrect. The scanner was reading Japanese text as if it were Latin script. On top of that, yen wasn't even selectable as a home currency, so a Japanese user's own yen receipts were silently converted to dollars. Both are fixed — the app now detects the receipt's script before reading it, and yen is a home currency.
Five currency bugs, one cause
An Australian receipt was stored as Thai baht — about 23 times too high — because OCR misread a printed letter "B" as the baht symbol. A Japanese receipt was read as Canadian dollars because a terminal ID happened to end in "1CAD". Five separate bugs, all with the same shape: a single stray character was allowed to outrank every other piece of evidence on the receipt. The fix, in every case, was to make the strong, accumulated evidence win over a lone token.
Taiwan, Hong Kong, Macau: one script, three currencies
A receipt from a restaurant in the Macau airport departure hall — spare-rib rice 70.00, hot coffee 25.00, MOP$ 95.00 — is the only Macanese receipt in the release gate, and it earned its place. Taiwan, Hong Kong and Macau all print Traditional Chinese, so to a scanner they look like one country. They are three currencies: New Taiwan dollars, Hong Kong dollars and Macanese patacas, and treating them as one puts the wrong money into someone's budget. Each is recognised by something only it prints. A Macau receipt says "MOP$". A Hong Kong receipt often says "HK$". A Taiwanese receipt carries the business tax number (統一編號) that Taiwanese law puts on essentially every receipt, which identified all 43 Taiwanese receipts we had and none of the 430 others. What we deliberately do not do is guess: a Traditional Chinese receipt with a bare "$" and none of those marks is left in your home currency rather than assumed to be from Hong Kong, because the first receipt that rule misjudged was a Taiwanese phone bill.
The Netherlands: no euro receipt to test against, so we rendered 40
Our only Dutch-language receipts turned out to be US dollars from a user on Bonaire — not a single euro receipt from the Netherlands itself. So we rendered 40 typical Albert Heijn/Jumbo/Lidl-style receipts to find out what a real one would break. It found discounts printed sign-first ("KORTING −1,50") that were being folded silently into the item's price instead of kept as their own line, and statiegeld (bottle deposit) lines that needed their own handling. Fixed the same day the rendered set was built.
Germany: cash paid minus change equals the real total
A German user paid a €6.82 EDEKA bill with a 10-euro note, and the app saved €10.00 as the total — the cash handed over, not the bill. It was fixed the same day, with a rule that's just arithmetic: cash given minus change given back equals what was actually paid. German receipts also print deposit (Pfand) lines and a tax breakdown table that needed their own rules, found while building 40 rendered German supermarket receipts alongside six real ones.
Colombia: a receipt where "$ 46,435" is forty-six thousand pesos
A café receipt from Medellín came back with a total of 46.43 and the alert "this receipt doesn't add up". Colombian pesos are printed with a plain dollar sign, no cents, and a comma for thousands, so "$ 46,435" is 46,435 pesos — and nothing in the scanner treated it as an amount at all. Three more things went wrong on the same receipt. The consumption tax (INC) is already inside the menu prices, but it was listed as an extra item and the cappuccino was shrunk from 8,300 to 5,152 to make the sum fit. No currency was detected, so the pesos would have been stored as the user's home dollars. And the date saved was the day of the scan: the receipt's legal header prints a tax-resolution date from 2024 before the purchase date, and the app stopped looking after the first date it found. The first three were fixed the same day for every user: a dollar sign before a thousands-grouped whole number now means "no decimals" (ordinary decimal amounts still outvote it), an included tax is recognised by name, and Colombia joined the currency detection. The date fix lives in the app itself — it now reads every printed date until one can be the purchase date — and arrives with the next app update.
South Korea: the shop is in Korea, the money is not won
Two receipts from duty-free shops at Incheon Airport taught us the same lesson twice in one afternoon. Korean duty-free shops price in US dollars: "$21.64" times ten, "Total amount $2,092.30". The first receipt carried a bare dollar sign and nothing else, so it was stored in the scanner's home currency, Canadian dollars, about 38% off. The tempting fix, "it says Incheon, so it is won", would have been wrong by a factor of 1,400. The second was worse. It prints a courtesy exchange-rate table for the traveller ("JPY: 164.51, KRW: 1568.31, CNY: 6.90, EUR: 0.89"), and our detector took the first currency code it recognised as the receipt's own: US$1,760 was stored as 1,760 yen, about 150 times too small. Now a Korean duty-free shop means US dollars, and three or more different currency codes on one receipt are read as a rate table, which says nothing about what was charged. Where a shop stands is not which money it takes.
China: a receipt with no currency printed at all
A receipt from a clothing store in Nanchang reads "2100.00" and nothing more: no symbol, no code, no word for money. With nothing to go on, it became the scanner's home currency. The evidence turned out to be the writing itself. Mainland China writes Simplified Chinese, and a set of characters exists only there, not in the Traditional script of Taiwan, Hong Kong and Macau, and not in Japanese. Eight or more of them on a receipt now mean yuan, unless the receipt clearly comes from Singapore or Malaysia, where Simplified is written too. Checked against every receipt we have, the rule picks out this one and exactly one other: a mainland supermarket receipt that had been filed under Hong Kong by mistake.
How the release gate itself works
The gate started smaller: 194 receipts from four countries, and a clear description of how a receipt-by-receipt measurement catches regressions that summary statistics miss. That article is accurate for its date — the set has since grown to the 521 described on this page, but the method it describes is the same one still running today.
A tilted photo can shift every price on the receipt
A supermarket receipt from Canada, tilted by less than a degree, made every price line up with the item printed one row below its own — enough for a whole receipt's prices to shift down by one item, with the total still adding up. The fix measures the tilt in the photo and levels the rows before matching names to prices. A restaurant receipt from Berlin, photographed at a much steeper angle, broke it again a day later: every price sat a full row above its dish, which on evenly spaced rows looks exactly like no shift at all. Two ways of measuring the steeper tilt were tried and dropped the same day, because they misjudged it. What shipped instead only acts when the list does not add up: it tries the row shift most prices agree on and keeps it only if the result adds up, every price has a dish, and no dish is left without a price.
Why this matters if you travel or live between countries
Most receipt scanners are built and tuned against whatever receipts the developer happens to have on hand — usually just one country's, in one format. A receipt printed in a different currency, a different decimal convention, or a language the scanner wasn't built for tends to fail quietly: a wrong total, a wrong currency, a dropped item, with nothing to tell you it happened. If you scan receipts from more than one country — on a trip, living abroad, or running a business across a border — that quiet failure is the thing that actually costs you.
We can't promise every receipt from every country is perfect. What we can show is the discipline behind trying: a fixed, growing set of real receipts, checked one by one, with any regression blocking the release until it's fixed. That's the standard this page is describing.
See every feature on the Features page, including how each release is tested.
Download on the App Store