That's not a debt - that's a point-of-sale. They're allowed to accept or refuse any form of payment there (at least under US law - UK is probably similar).
The reason for the laws surrounding debt is to prevent creditors from purposefully holding debtors in debt by refusing to accept their payments ('Oh, sorry, you HAVE to pay me in this form, so I'll refuse your payment and instead charge you an extra day of interest, etc.)
Would love to see the source code for this situation, where payment is disrupted due to the change jar needing to emptied. I bet the programmers put in some amusing comments.
Is there a way this scenario can be coded in any other way than:
---
while(moneyGotSoFar < targetMoneyToget)
{
// code to interface with hardware device which
// is taking in money
// NOTE: moneyGotInThisBurst would be told by the
// hardware device software
...
// some time out code. And exception handling if
// no cash entered
moneyGotSoFar += moneyGotInThisBurst;
}
---
So point is, the developers may not think upfront of these kind of cases. And this case can be a boundary condition test case - May potentially test any array overflows. Or some looping done the wrong way. Or out of memory if it has been coded in Java(Oops. Sorry :-))
Legal Tender only means what you have to accept in settlement of a debt. You can choose to accept small denomination coins in any volume, or anything else for that matter. But if you have agreed a transaction with someone, or otherwise have a debt to that person, a court will consider the payment made if you pay (or try to pay) with legal tender.
"Legal tender" only means they're compelled by law to accept the payment to discharge a debt. Anyone can decide to accept anything as payment.
Also, paying for your groceries in that way (self-checkout) isn't discharging a debt as no debt was incurred: You could have decided not to pay and put the groceries back, after all.
Lock me up and throw away the key.
(Fortunately it was a self-checkout so no witnesses).