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.
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.
| Policy | What 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:
| Scanned | Shelf label | Customer pays | Why |
|---|---|---|---|
| $4.99 | $2.99 | $0.00 | Label under $10, so the item is free. |
| $12.49 | $10.00 | $0.00 | "Up to $10" includes $10 exactly. |
| $13.99 | $10.01 | $0.01 | A penny over the line: $10.01 less the Code's $10. |
| $49.99 | $39.99 | $29.99 | Label price less $10 — worth more than the mispricing was. |
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:
- The line is repriced to the shelf price, and any goodwill the policy owes is taken off as a discount on that line.
- The tax on the line is re-quoted against the new amount, and the sale's subtotal, discount total, tax and total all move with it.
- The correction is stamped as a person's decision, which is the one kind of discount the till refuses to recalculate. Scan the next item and the corrected price is still there — the customer is never charged the price they were just told they would not pay.
- An evidence row is written whatever the policy did, including under Record only.
What it refuses to do
- Reprice upward. If the shelf label is higher than the till, nothing happens — The scanned price is not higher than the displayed price. The Code protects a customer from being overcharged; it is not a one-click way to charge more at the counter. An identical price is refused for the same reason.
- Touch a sale that is already paid for. Cannot correct a price on a completed sale — refund the difference instead. Rewriting a finished sale would be rewriting a receipt. See Refunds & returns.
- Let a cashier hand it over alone. The correction needs the price-override right, because under the Code it can give away up to $10. A cashier can ring the sale up and cannot decide this. See Roles & permissions.
- Accept a shelf price that is not money. Negative, or finer than a cent, is rejected — a shelf edge is printed to the penny.
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.
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:
- Which labels in this store were wrong, newest first, for the manager who is going to walk the aisle with a label printer. Filterable by date and product.
- Which products keep doing it, across the whole company rather than one store, ranked by how often and by how much has been handed back. A label that is wrong in one branch usually came from the same price file as all the others, so this is the list the buying team takes to the supplier.
Both lists need the right to read store reports. They are per store, and one store's wrong labels never appear in another's.
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.