Pharmacy POS: Batch Numbers, Expiry Dates and Recalls That Are Answerable
Every other feature a pharmacy needs is ordinary retail. One is not: you have to be able to say which batch of a medicine you took in, when it expires, and — if it is recalled — whether you sold any of it.
That question has an answer only if the lot number was recorded at the moment the delivery arrived. Recorded later, or recorded when somebody remembers, it answers nothing. GOF POS ships a Pharmacy / Medical store preset built around that.
What the pharmacy preset switches on
- Batch & expiry — a lot number and expiry date are required on every delivery line, oldest stock sells first, and expiring stock is flagged before it turns into a write-off.
- Sell by weight — for the syrups, ointments and loose items that are not counted in whole pieces.
Credit sales are on, because doctors' accounts and regular patients run tabs, and the product screen is set to search rather than a tile grid — a pharmacy carries thousands of lines and nobody finds Panadol by scrolling.
The lot number is required, on purpose
When batch tracking is on, the purchase form will not accept a line without a lot number. That is deliberate and it is the point of the feature: a batch number that is only usually recorded cannot answer a recall, because the one bottle you need to trace is always the one that was entered in a hurry.
The rule is enforced on the server as well as in the form, so a till running an older build cannot skip it.
It is not blanket, though. A pharmacy also sells carrier bags, tissues and baby bottles, and demanding a lot number for a carrier bag is how staff learn to type nonsense into the field. Batch tracking can be switched off per product, so you are only asked where it means something.
Oldest stock sells first — automatically
Sales draw from the lot with the nearest expiry date first. You do not have to remember, and neither does the person at the counter. Two rules behind it are worth knowing:
- An expired lot is never sold, even if it is chosen by hand. A lot can pass its date while a sale is still open on screen.
- If the customer is holding a specific box, the cashier can pick that lot — and GOF POS will draw from it first, then fall back to the normal order for the rest of the quantity. It prefers the lot; it does not refuse the sale because the chosen lot ran short.
Whichever lot went out is written on the sale line, so the record of what left the shop is not a reconstruction.
Expiring soon, while it is still sellable
A dedicated screen lists what is approaching its date, so you can discount it, return it to the supplier, or move it to the front. The dashboard flags it too. The value of this is entirely in the timing — a list of what expired last week is an accounting record, not a decision.
Supplier returns and the money behind them
Medicines go back to distributors more than most stock does. Purchase returns are a first-class part of the system: the goods come off the shelf, the supplier's ledger is credited, and the balance shown on the supplier card states a direction in words — whether you owe them or they owe you — rather than leaving you to read a minus sign.
What the till costs you per sale
Nothing above slows the counter down. The batch draw happens when the sale is saved, not while the customer is standing there, and a product with no lots recorded simply has none drawn. A pharmacy that has not yet started recording batches keeps selling exactly as before.
Getting started
Setup takes about ten minutes. When you sign up you pick Pharmacy / Medical store as your business type, and GOF POS switches on the features above for you — no configuration screens to hunt through, no consultant. If something in the preset does not suit you, every switch is yours to change afterwards in Settings → Business type.
The app runs on Windows, macOS and Linux for the counter, and on Android and iOS for stock checks and quick sales on the move. The desktop till keeps working when the internet does not, and syncs when it comes back.
See pricing or download GOF POS and try it on a real day's trading.