Refunds return money to a customer AND put the product back into stock. RxShelf
handles both sides atomically — never one without the other. Sale stays on the
books; the refund is recorded against it with its own reference (REF-000123).
Demo coming soon
Void vs refund — pick the right one
| Situation | Use |
|---|---|
| The wrong sale was rung up and the customer is still at the counter — hasn't left with goods | Void — reverses the sale entirely, excluded from reports. Owner/manager only. |
| Customer left with goods and later returns for a refund | Refund — sale stays on the books; refund recorded against it. |
Void has no time-limit rule but only works on unaltered completed sales (no
refunds against them). Refunds have no time limit at all — you can refund a
sale from any date.
Refund flow
- Find the sale — go to Sales → History, search by reference number
(e.g.
SAL-0000042) or date. Click the sale to open the detail. - Click Refund.
- Pick items and quantities:
- Full refund — leave all lines selected at their full quantity.
- Partial refund — untick lines you're keeping, or reduce a line's quantity (e.g. customer bought 20 tablets, returning 10 → change 20 to 10).
- Pick refund method — cash, transfer, card, or other. Independent of the original payment method — you decide how to return the money.
- Enter a reason — required. Documented reasons make audits easy: "Damaged pack", "Wrong drug dispensed", "Customer changed mind".
- Confirm refund.
A refund receipt with its own reference (REF-000123) is generated.
What actually happens
- Stock is returned to the same batches it came from. RxShelf snapshots the batch of every dispensed unit at sale time, so a refund puts the units back into the exact batches that gave them out. Batch numbers and expiry dates on the shelf reflect reality.
- Discount is pro-rated. If the original sale had a discount, refunding a unit returns what was actually paid, not the list price. A ₦1,000 product sold at 10% off refunds at ₦900.
- Cumulative refunds are capped at the total. You can't refund more than the customer paid, across any number of refund events.
- Sale status updates automatically:
- All items refunded → sale marked refunded (excluded from reports).
- Some items refunded → sale marked partially refunded (included at NET).
Who can refund
- Owner and Manager — by default.
- Dispenser — no by default. Owner can grant
manage_refundsas a per-staff override (see Set per-staff permissions). - Accountant — cannot refund. This can't be overridden.
Where refunds show up
- Sales → History — refunded and partially-refunded sales carry a status badge; open the sale to see the refund history.
- Sales → Refunds — a dedicated list of every refund with filters (date, who processed).
- Reports → Sales — refunds are netted against the sale they refund, so all totals (staff performance, product performance, revenue trend) show the true amount that landed. See Run the sales report.
Next steps
- Run the sales report — see net figures after refunds.