Like many technical, geeky people I’m often fascinated to find the details behind apparently mundane systems that are around us that most people take for granted. Take for example the “reduced to clear” stickers that supermarkets use to reduce stock as it approaches the Use By/Display Until Date. Each chain of supermarket uses a different system, sometime it’s obvious what the codes mean, other times it’s less obvious. This presents a challenge to reverse engineer.
I’ve thought about the codes a bit in the past and the Tesco Barcode “controversy” rekindled this interest so over the last few months I’ve kept an eye out for opportunities for research.
I should point out right from the outset that the one thing I’m not aiming to do is get anything for a lower price than the supermarket is offering it to sell it for. In fact one of the tests that I would like to do is check if i could pay more for a reduced item than the original price. Obliviously I would test this on sometime quite cheap as I’m not that stupid.
So I’m passing Asda and there are only a few hours left in the day, prime time for reductions. As I head for the entrance I notice an employee reseting the anti-theft devices on trolleys that people have taken over the “red line”, that’s a whole other area of research that I’ve yet to explore…. maybe there is a future blog post in it.
There are a lot of reductions tonight so I head to the self-service checkouts with ingredients for a small feast. I notice that the mini-pork pies reduced to 10p (yes, I know it’s not strictly part a Pescetarian diet but they would have ended up in the bin shortly anyway) are packaged in such a way to make it almost imposable to scan the reduction bar code.
After a half-hearted attempt to scan the barcode, I took my opportunity to press the “Enter barcode button” and start entering the code on the reduction barcode 0..2..0..5..1..8..0..0..0..0..1..1 (oh, woops my clumsy fingers that that last number should have been a 0, oh well just one of those things!)
Unrecognised Barcode, please try again
Oh maybe I made a mistake with the number of zeros 0..2..0..5..1..8..0..0..0..0..1..1
“Oh let me help, I’ll need to do the reduction barcode for you”
She then swipes her operator barcode card to bring up the operator menu, selects an option and taps in 0..2..0..5..1..8..0..0..0..0..1..0.
So Asda have restricted manually entering reduction price barcode to operators only. That pretty much puts the stops on “mistakes” me as a customer could make. Further research would involve making my own barcodes by scanning a smart phone displaying a barcode image or preparing bits of paper with bar codes in advance, both of which would be pretty hard to pull of without being noticed and would be tricky to explain if noticed.
But all is not lost. Just by looking at the code on the items it’s possible to imply something about them as i already did above about the last two digits. Asda helpfully prints the full item codes on the receipt.So lets look an example for the pork pies
020518000010
020 – Reduction codes prefix?
518 – This appears to be a “department” or “product type” 518 corresponds to “Deli Pies”
00 – Not sure what this means, appears constant as 00 (possibly thousands & hundreds digits??)
0010 – Reduced price in pounds and pence in this case 10p
Interestingly this format gives very little detail to link back to the product being sold, unlike Tesco codes that have a reference to the original barcode. Asda links to a higer level department code that may contain multiple products. I guess they aren’t too bothered or have another way of tracking it.
Stay tuned for more reduction barcode fun…
Does it really just need a barcode to get the operator menu? No pin or such as well? All you need then is a camera phone to test that.
I can’t be sure but I think she probably put a PIN in too.
Trying to take a photo of an operator card that the self-service machine would scan would be rather tricky. Explaining why you have an operator menu up would be *interesting*
Every operator number is accompanied by a 4 digit pin.
Isn’t the real weakness in the unmanned supermarket checkout that there’s no human there? Why couldn’t I take the label from yesterdays cabbage & put it on a leg of lamb or a bottle of scotch today?
Well there is the self service attendant that pays a varying amount of attention…
Of course a barcode can can be put on another item, although I believe there are often weight based checks. However this isn’t what I’m interested in. I’m interested in working out how it works for the challenge.
I believe the extra zeros aren’t padding but allow the item to be priced up to £9999.99.
See this poor gentlemen’s receipts for details: http://metro.co.uk/2014/03/25/thats-not-asda-price-shopper-charged-450-for-loaf-of-bread-4678396/
If you were to print your own barcode, or even take a markdown sticker from an item bought on a previous day, the system will flag it as an unrecognised item. The system is aware of which (fresh) items are markdown on a particular day. The ambient markdowns, which can remain on sale for several days, have a yellow sticker covering half the barcode with the price printed on so the checkout staff can manually override the price. This is done to prevent people saving old stickers and taking them back to store to “markdown” whatever they want. Also, markdown stickers do not check the weight of an item as it may be damaged, for example a multi pack of crisps missing one packet and then sellotaped up.
I work at asda (not on checkouts) but I have a lot of time with the gun that prints the price reduction barcodes. if there’s anything I can help with just ask
Hi there, what information do you have? Do you know about the syntax of the barcodes? Lets discuss! lol
UPC-C is the barcode format. You can use a free online UPC-C checksum calculator and barcode generator if you want to change the price.
What’s written under a ‘Whoops’ barcode is not quite what’s in the barcode.
If you scan it, it doesn’t have the leading 0, but does have a checksum digit at the end.
The barcodes are upc-c type and all have a checksum at the end, if the checksum doesn’t add up it wont work. Thats why the barcode you entered didnt work, you put a 1 where a 0 should be and this last digit is the checksum!!! There is nothing to stop you entering reduced barcodes yourself at the selfscan but the checksum prevents the integrity of the code. You can find a free checksum calculator and barcode generator online.
You need to find a reduced code that doesn’t specify the item and therefore the weight cannot be preprogrammed. I once had a ‘2p veg reduced’ code and of course it doesn’t say what veg. The deli code on the recipt would work good.