Deposits & eco fees

The money on a ticket that is not the shop's: a deposit on a can, a levy on a tire. Both sit on the receipt as their own line, where the customer can see them and claim them back.

No screen yet

Fees are built and tested but have no screen in the app. Setting one up, changing it, putting the fee lines on a live ticket and working out what goes back on a return all happen over the API today. The rules below are what the software does.

Why it gets its own line

The shortcut every till without this feature takes is to bury the deposit inside the shelf price. That is the one outcome to design against: a deposit inside the price is a deposit nobody can reclaim, because there is nothing on the receipt to claim it against.

So each fee becomes its own line on the sale, named in words the customer knows — Bottle deposit, Tire levy — sitting beside the goods that earned it.

Setting a fee up

A fee carries a short code, a name that appears on the receipt, an amount in whole cents, and a kind: deposit or eco.

Attach it to exactly one of:

Attaching to both is refused, because anything in that category that is also the named product would be charged twice. Attaching to neither is refused too: a fee with nothing to attach to never fires.

A fee applies to every store in the company by default, which is what a provincial levy is. It can be limited to one store instead. There is also a free-text note for the jurisdiction — CA-ON — purely so whoever reads the list later knows why the fee exists.

The fee gets a SKU of its own

Creating a fee creates a hidden service product behind it, so the fee line is taxed by the same engine, refunded by the same path and counted by the same reports as everything else on the ticket. It tracks no stock, so nobody counts deposits in a stocktake.

How each kind is taxed

DepositEco fee
Taxed by defaultNoYes
WhyRefundable security, not payment for goods — taxing it would hand back less than was paid.Part of what the retailer charges for the goods, so it is taxed like them.
Goes back with a return by defaultYesYes

Both defaults can be set the other way on any individual fee, because provinces disagree and this software is sold into several of them.

An untaxed deposit carries no tax rows at all — not a zero-rate row — so a tax report never has to explain away a component that should not be there.

On a live ticket

The fee lines on a ticket are reconciled against what is actually in the basket, from scratch, and running it twice changes nothing. That means:

A levy cannot be discounted away

Fee lines are stamped as a person's decision, which is the one kind the till refuses to recalculate. Without that, a trade customer's standing 10% would come off a provincial levy — money the shop collects on somebody else's behalf and has no right to discount. See Customers & loyalty for standing discounts.

Fees cannot be restated on a sale that has already been paid for.

Changing or retiring a fee

Change the amount and the new figure applies to tickets from then on; renaming a fee renames the line on future receipts too. Retiring a fee stops it being charged from that moment.

Retiring is deliberately soft: the fee lines already on finished sales stay exactly where they are. A deposit that vanished from last week's receipt could not be reclaimed against it, which is the failure this whole feature exists to prevent.

When the goods come back

Ask for a plan before you refund, naming the goods going back and how many of each. The answer lists every fee line attached to them and says, one at a time, whether it comes back:

The plan also gives the total that is genuinely refundable, so the person at the returns desk is not adding it up in their head.

Screenshot to come: a ticket with two cans and a Bottle deposit line beneath them, and the refund plan showing $0.20 coming back — once this has a screen.
The deposit sits beside the goods, which is the only way a customer can point at it.

Who can do what

Creating, changing and retiring a fee need the right to set prices — a cashier does not get to decide what a province charges. Anyone who can read the catalog can see the list of fees a store collects. Putting fee lines on a live ticket is part of ringing up a sale. Asking for the refund plan is for the person at the returns desk. See Roles & permissions.

Fees are a per-store add-on; switched off for a store, every route stops answering.