Case study 01
Pharmacy ERP
A retail pharmacy running 100–150 transactions a day on batch-level inventory, with expiry control and prescription-gated dispensing.
- Sector
- Healthcare retail
- Year
- 2025
- Service
- ERP
Batch inventory · expiry control · GST billing
The problem
Generic billing software treats a medicine as one product. The same SKU actually sits on the shelf in three batches at three expiry dates and sometimes three printed MRPs, so batch tracking lived in a paper notebook beside the till — which meant expiry losses were discovered during stock-taking, after the supplier return window had closed.
What we built
Inventory modelled at batch level from the ground up, with first-expiry-first-out selection at billing so old stock clears before it becomes a write-off. Expiry alerts fire in 90/60/30-day tiers grouped by supplier, so one return covers a dozen items. Schedule H dispensing is blocked server-side until the prescribing doctor and prescription reference are captured. Reorder points compute from real sales velocity against supplier lead time rather than a fixed minimum.
Under the hood
- items
- batches
- invoices
- invoice_lines
- suppliers
- purchase_orders
- prescriptions
- ledger
- POST /bill
- GET /stock/fefo
- POST /grn
- GET /reports/expiry
- POST /prescription/verify
- expiry:tier-scan (daily 02:00)
- reorder:suggest (daily 06:00)
- refill:whatsapp (daily 10:00)