Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesiTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
A payment integration treated every currency as if it had two decimal places. When it received a yen payment of ¥3,400, it divided the amount by 100 and recorded ¥34. The payment was correct; the order system then flagged it as underpaid. Sergey Shinder describes the incident in a September 29, 2026 article on DEV Community, including the engineering choices that led to it and the safeguards he recommends.
How a correct yen payment became an underpaid order
Shinder says the integration had previously handled pounds and euros, so its webhook handler applied a fixed conversion: divide the payment amount by 100. That assumption worked for the currencies the system had seen. It failed when the company began selling in Japan.
For a ¥3,400 charge, the payment provider sent an integer amount in yen. The handler divided that amount by 100 and stored ¥34. Fulfilment compared the recorded value with the order total and put the order on hold as underpaid. The customers had paid the right amount; the internal order value was wrong.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Shinder reports that 206 orders were held over 26 hours. Those are his incident figures, not independently audited statistics. He says the currency code was present alongside the amount but the handler did not read it to choose a scale: “The handler had the currency code right next to the amount on every single call for four years. It just never needed to read it until the day it did.” Read Shinder’s account on DEV Community.
#1 Best Overall
- LARGE EIGHT-DIGIT DISPLAY – Clear and easy-to-read 8-digit display, perfect for everyday calculations and ensuring accurate results in home or office settings.
- TAX & CURRENCY EXCHANGE FUNCTIONS – Effortlessly handle tax calculations and convert home currency to other currencies for easy financial management.
- GENERAL PURPOSE CALCULATOR – Ideal for a wide range of applications, from basic math to business and personal use, with memory keys for quick storage and recall.
- USER-FRIENDLY KEYBOARD – Easy-to-use layout, featuring square root, percent calculation, and simple functions that make it perfect for everyday tasks.
- COMPACT & PORTABLE DESIGN – Space-saving design that fits easily on any desk or in a briefcase, making it ideal for both home and office use.
Why a fixed divide-by-100 rule fails
A monetary amount is not fully specified by its number alone. Its currency determines how that number relates to the major unit: many currencies use a two-decimal minor unit, but not all do. ISO 4217 specifies currency codes and the decimal relationship for currencies that have minor units. Its overview describes relationships such as dividing by 100 or 1,000; it does not justify assuming that every currency uses 100. ISO’s currency-code overview.
In Shinder’s examples, yen and won have no minor unit, while Bahraini and Kuwaiti dinars use three decimal places. A generic handler that applies a two-decimal conversion to all of them can misstate values, even when the incoming amount and currency code are both correct.
Rank #2
- Metric conversions.
- Sized and powered for calculations anywhere.
- Protective wallet case for carry-with convenience.
- Metric converter
- 10-Digits with punctuation
The relevant standards record is ISO 4217:2015. ISO says the standard specifies three-letter alphabetic and three-digit numeric currency codes, as well as the decimal relationship for currencies with minor units. The edition was published in August 2015 and confirmed in 2021; the record shows review activity in 2026. Currency-scale logic should therefore use currency-specific metadata rather than a universal decimal assumption.
Safeguards Shinder recommends
Centralize currency-aware conversion
Keep amount conversion in a shared money library that reads currency exponent data, rather than repeating arithmetic in payment handlers. That gives the system one place to apply the currency’s scale and makes a fixed divide-by-100 rule less likely to spread across services.
Rank #3
- 10 digit large angled LCD display
- Durable plastic keys
- Functions include: currency conversion functions, automatic tax keys, percent key, backspace key, 3 key independent memory, extra-large plus key, sign change, and automatic power down
- Sleek dark blue design
- Opertes on twin power (solar/battery backup)
Keep the currency attached to the amount
Represent money as a value together with its currency, and pass both through calculations and interfaces. An amount separated from its currency is ambiguous: the number 3400 could mean different major-unit values depending on the currency’s scale.
Reject unknown currency codes
If the system cannot resolve a currency code to valid scale metadata, fail explicitly instead of silently applying a default. A rejected payment event can be investigated; a plausible-looking but incorrect amount may progress into fulfilment or accounting.
Rank #4
- Mr. Pen calculator boasts a 10-digit LCD display that provides crisp and clear number visibility, ensuring accuracy for all your everyday calculations.
- Built with high-quality, durable materials, this calculator is designed for long-lasting use, making it a reliable companion for students, professionals, or home office tasks.
- Featuring large, ergonomic round buttons, it offers a comfortable and responsive touch, allowing for effortless data entry and smooth calculations.
- Its sleek and compact design makes it highly portable, easily fitting into bags, purses, or desk drawers for on-the-go convenience.
- Battery not included
Test zero-, two-, and three-decimal currencies
Shinder recommends contract tests for payment flows covering currencies with zero, two, and three decimal places. Tests should exercise how an amount arrives, how it is converted or stored, and how the resulting order total is compared with the payment. The goal is to catch scale assumptions at the integration boundary, not just verify arithmetic in isolation.
Free tools Windows power users keep installed
One-click scans. No signup required.
Reconcile orders and payments by currency
Compare order totals with payment totals using the currency as part of the match. Shinder says daily reconciliation would have exposed the discrepancy as a 99 percent gap on the first morning. That is his counterfactual about this incident, not an observed reconciliation result or a general guarantee about detection time.
Best Value
- Check your calculations thanks to the calculator's inbuilt serial impact roller printer that enables you to monitor your inputs and retains ongoing records. This two-color printer with a four-key memory prints red and black ink at up to 2.3 lines per second onto the included roll of paper.
- Printing calculator offers 12-digit LCD display for convenient viewing. 4-key memory keeps often-used figures accessible for faster calculations. Clock and calendar functions help maintain schedules.
- Easy-to-use solution for all of your basic math needs. Streamline financial calculations with currency conversion, tax calculation, and item counter functions. 1-year manufacturer limited warranty.
- Dimensions: 2.2"H x 6.4"W x 9.1"D. Package content: AC adapter, paper roll, user manual.
- Powered by any standard AC outlet, eliminating the need for expensive batteries. Decimal switch, rounding switch, percent, sign change, backspace, double zero, and grand total functions help you solve a variety of mathematical problems.
The refund path had the opposite risk
The author says the refund path contained the inverse mistake: it multiplied rather than divided. In this incident, he reports, the payment provider rejected refunds larger than the original charge, preventing that code path from producing the feared over-refund. That provider-side rejection was a backstop, not evidence that incorrect refund amounts are safe; conversion should be correct before a refund request is sent.
What the standards establish—and what the incident shows
ISO 4217 provides the currency-code and minor-unit framework; the standard’s record does not independently validate Shinder’s company incident or the figures he reports. His account illustrates a practical integration failure: even correct payment data can create incorrect order state when software ignores the currency that gives an amount its meaning.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

