Odoo Industries

Pharmacy Management in Odoo: Batches, Expiry, Prescriptions and POS

A pharmacy has problems a normal shop does not. The same medicine is bought by the box and sold by the strip or the tablet. Every batch has an expiry date, and one expired strip sold by mistake is a real risk to a patient. Some medicines may only leave against a prescription, and wholesale customers need a valid drug licence before you deliver.

The Pharmacy Management app adds these pharmacy rules on top of standard Odoo Community. Medicines, batches, purchases, counter orders, wholesale orders, transfers, invoices and loyalty cards stay the normal Odoo documents, so stock, accounting and taxes are never kept twice.

Everything under one Pharmacy menu

The app gives your team a single Pharmacy menu with Medicines, Retail POS, Wholesale Sales, Purchases, Inventory, Prescriptions, Customers, Customer Loyalty, Delivery Management, Doctors & Practitioners, Accounting, a Dashboard and Reports & Analytics. Twelve pharmacy roles keep duties separate, and every feature area can be switched off per company without losing data.

1. A medicine master that matches how pharmacists search

Each medicine carries its generic name, composition with strengths, dosage form, drug schedule, manufacturer, MRP, storage condition and rack. At the counter, one search finds a medicine by brand, generic name, composition, manufacturer or any pack barcode.

2. Box, strip and tablet

One medicine can be bought and sold in several pack sizes, each with its own barcode. Quantities are converted on the server, and a pack that may not be broken is refused — so a strip cannot be cut from a pack that must be sold whole.

3. Batches, expiry and recalls

Every batch records its manufacturing date, expiry, batch MRP and a status. Stock is picked first-expiry-first-out. An expired, quarantined, recalled or damaged batch is skipped when stock is reserved and refused at the counter, on a delivery and on a transfer to a customer. When a recall comes in, the app marks the batches, lists the stock and the customers who received it, and creates the transfers that move the stock to quarantine; the recall cannot be closed until that stock is in quarantine. The Inventory menu adds views for near-expiry and expired batches, quarantine and damaged stock, stock ageing and dead stock.

4. Purchases with batch data

Supplier licences are kept with the supplier. Buy-X-get-Y-free schemes come in as zero-price lines, batch number, expiry and MRP are captured on the receipt, a minimum shelf life can be required on receipt, and supplier returns carry a reason.

5. Prescriptions and practitioners

Prescription-only medicines leave only against a verified prescription and a pharmacist authorisation. The app keeps dispensing records and a controlled-medicine register under Prescriptions > Compliance Registers. Practitioners have their own records, and documented professional engagements (training, talks, health camps) need a compliance approval.

6. Wholesale orders

For wholesale customers, the drug licence can be checked (a company setting) and a credit-limit block based on Odoo's standard customer credit limit applies when the order is confirmed, with a manager approval to release it. Deliveries go out with a delivery challan that lists the batches.

7. Counter, loyalty and home delivery

Retail sales run on Odoo's Point of Sale. Loyalty members are identified by mobile number on the standard loyalty program of the counter; points are settled on the server, and redeeming them requires a one-time code sent to the customer by SMS through your own MSG91 or Twilio account. Home delivery adds delivery zones by PIN code, delivery charges, cash on delivery, assignment, proof of delivery and returns.

8. Dashboard, reports and alerts

The dashboard shows executive, inventory, counter, loyalty, delivery and practitioner figures. Reports cover sales, profitability and branch comparison, medicine and batch stock, expiry and near-expiry, fast and slow movers, purchases and outstanding amounts, loyalty, delivery performance and the compliance registers. Daily alerts arrive as activities.

India-ready, on Odoo's own localisation

The app works with Odoo's Indian localisation, so INR, GST taxes and HSN codes stay on the standard documents. A word of honesty that also appears in the app's own documentation: it supports your procedures, but it does not certify legal compliance — that stays with the licence holder.

Who this is for

  • Retail pharmacies and chemist shops.
  • Pharmacy chains with several branches.
  • Wholesale drug distributors and stockists.
  • Hospital and clinic pharmacies.

The app runs on Odoo 19 and Odoo 20 Community and depends on the standard Point of Sale, Loyalty, Sales, Purchase, Inventory and Product Expiry apps. See the Pharmacy Management page for screenshots and the Odoo Apps Store link.

Pharmacy Management icon

Pharmacy Management

Pharmacy management for retail and wholesale: medicines, batches and expiry, prescriptions, POS, loyalty, home delivery

View the app Odoo Apps Store