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.
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:
- A product — this can of pop.
- A category — every tire in the shop, so a new tire added next month collects the levy without anybody remembering to set it.
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.
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
| Deposit | Eco fee | |
|---|---|---|
| Taxed by default | No | Yes |
| Why | Refundable 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 default | Yes | Yes |
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:
- One fee per item, not per line. Six cans is six deposits: $0.10 each, $0.60 on the line.
- It follows a change of quantity. Two cans become five, and the deposit line becomes five.
- It leaves when the goods leave. Void the cans and the deposit goes with them. A deposit that outlives its bottle is money charged for nothing.
- No fee on a fee. Fee lines never earn fees of their own.
- It counts towards what the customer owes. A fee line the total does not include is a fee the till never collects.
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:
- Four cans back means four deposits back — Deposit returned with the container.
- One can back out of two means one deposit. Partial returns give back a partial fee, not the whole line.
- Nine cans back on a two-can sale gives back two. The shop never refunds more of a fee than it took.
- A levy the shop has already remitted and cannot reclaim is listed with Levy already remitted and not reclaimable — tell the customer. It is said out loud rather than quietly kept, and any other fee on the same goods still comes back normally.
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.
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.