Scanner price accuracy

"That shelf says $2.99." What the till does about a label that disagrees with the barcode, what your store owes the customer, and the record it leaves so somebody can go and fix the label.

No screen yet

This is built and tested, but there is no button for it in the POS. Correcting a line, reading the list of wrong labels and setting the store's policy all happen over the API today. The rules below are what the software does; this page describes them so you know what your store is set to and what it owes, not so you can press something.

Why a manual discount is not enough

A cashier told the shelf says less has one obvious tool: knock the difference off by hand. That works for the customer standing there, and it records a favour. Nobody can then answer the two questions that actually matter — which labels in this shop are wrong, and which products keep getting it wrong wherever they are shelved — and the shop has no evidence it honoured anything.

A price-accuracy correction fixes the line and files the proof in one action.

The three policies

Each store is set to one of three. The setting belongs to the store, not to the cashier, and not to the moment.

PolicyWhat the customer is charged
Lower price lower The price on the label, on every unit. No goodwill on top. The default, because a shop that charges more than its own sign is wrong in any country.
Canada's Code scop The Scanner Price Accuracy Code: the item is free up to $10, and above $10 the customer pays the label price less $10. See the worked examples below. Stores in Canada were set to this.
Record only none The customer pays the scanned price and the mismatch is recorded anyway. For a chain where corrections are a head-office decision — the record still has to exist, or the pattern is invisible.

The Canadian Code, worked through

The Code is about the label price, not about the size of the mistake. Work from the shelf price:

ScannedShelf labelCustomer paysWhy
$4.99$2.99$0.00Label under $10, so the item is free.
$12.49$10.00$0.00"Up to $10" includes $10 exactly.
$13.99$10.01$0.01A penny over the line: $10.01 less the Code's $10.
$49.99$39.99$29.99Label price less $10 — worth more than the mispricing was.
The $10 is not converted

A signatory in Vancouver owes exactly ten dollars, so the figure stays ten in the store's own currency rather than being run through an exchange rate that would change what a customer is owed from one day to the next. A country with a different remedy gets its own policy, not a different number here.

Several of the same item on one line

The Code gives the benefit on one item. Three tins scanned wrong, label $3.50: the line becomes three at the shelf price, $10.50, less one free tin, so $7.00. Giving all three away is not the Code.

What happens to the ticket

One action does all of it:

What it refuses to do

The record it leaves

Every correction stores both prices, what was charged, what the shop handed back, which policy and which rule applied, the register, the product, who reported it — customer, staff or audit — the member of staff who did it, and an optional note.

Nothing can edit it afterwards

The evidence table is append-only: the database itself refuses an update or a delete. Evidence that can be edited proves nothing, which is the whole point of keeping it. Rows survive even if the sale they came from is removed.

Two lists read that record:

Both lists need the right to read store reports. They are per store, and one store's wrong labels never appear in another's.

Screenshot to come: the wrong-label list for a store, showing scanned price, shelf price, what was charged and who reported it — once this has a screen.
The manager's list: which labels were wrong, and when.

Turning it off

Price accuracy is a per-store add-on. Switch the module off for a store and every route stops answering, list and correction alike. That is the switch to use for a store that should not be doing this at all — as opposed to Record only, which is for a store that must still keep the record.