When users want to pay cash at a self-checkout lane, the machine asks them to enter coins first, followed by bills. From the perspective of the user, this is counter-intuitive: when paying a cashier, typically the largest denominations are given first; and the machine wants the smallest denominations first.
It is common that a user wants to pay with a large bill, plus some small amount of change. If a user’s bill is, say, $9.03, and the user wishes to pay with a $10 bill, they may want to pay $10.03 instead, to get back an even dollar rather than 97 cents change.
How can the machine know whether to spit out 97 cents change or wait for the user to enter 3 additional cents? There are solutions, of varying complexity and convenience.
From a developer’s perspective, the most expedient is to accept the smallest denomination first. If users enter the smallest denomination first, they can assume that the user is finished entering money when the total entered matches or exceeds the amount owing.
There is often a trade-off between usability and development cost. In this case, the developers chose what was likely the easiest for themselves, at the expense of what was easiest to the users.