--- title: "Running an In-Clinic Pharmacy in India: GRN, Batch and Expiry Control" url: https://curaverto.com/blog/clinic-pharmacy-inventory-batch-expiry-grn-india updated: 2026-09-11 source: first-party vendor documentation --- # Running an In-Clinic Pharmacy in India: GRN, Batch and Expiry Control Category: Practice Management · Author: Anexshe Revedha, Cofounder & COO · Reading time: 7 min read Most in-clinic pharmacies lose money quietly: a batch nobody flagged, a free-scheme quantity entered as a pack instead of tablets, a supplier invoice typed by hand at the end of a long day. Here is the receiving-to-dispensing chain done properly, and how CuraVerto's Pharmacy module handles each link. A pharmacy inside a clinic looks simple from the front desk: a prescription arrives, medicines go out, a bill is printed. The losses happen behind that, in three places that most clinics run on memory and paper: what came in (the goods receipt), which batch it came in as, and when that batch expires. This post walks through those three, plus GST on the way out, and describes what CuraVerto's Pharmacy module does at each step so you can judge any system, ours included, against the same checklist. ## Step 1: The GRN is where stock accuracy is won or lost A GRN, or goods received note, is the record you create when a supplier delivers against an invoice. Every downstream number depends on it: the quantity you think you hold, the batch you will dispense from, the cost your margin is calculated on, and the input tax credit you claim. A GRN typed with a wrong batch number or a wrong pack size does not fail loudly. It just makes the shelf and the screen disagree for months. CuraVerto's Pharmacy module supports receiving stock against a supplier invoice line by line, capturing the drug, batch number, expiry date, quantity, rate, MRP, HSN code and GST percentage for each row. Instead of typing an invoice with dozens of lines, a clinic can photograph it and let CuraVerto's invoice scan read the lines, after which staff review and confirm before the GRN is posted. The scan is a drafting aid: a person still checks the batch and expiry on each line, because those two fields are exactly where a misread costs money. ## The free-quantity trap: packs are not tablets Suppliers often bill ten strips and send two free under a scheme. If your catalogue stores stock in tablets but your GRN row records packs, the free quantity is easy to mis-book. In CuraVerto, the stock quantity for a received line is the pack quantity multiplied by the drug's pieces per package, and the free quantity is converted the same way before it reaches stock. So a scheme of two free strips of fifteen tablets adds thirty dispensable tablets to the batch, not two. Whatever system you use, test this on a real scheme invoice before you trust it: receive a line with free quantity and check that the on-hand count moved by pieces, not packs. ## Step 2: Batch-level stock, not just drug-level stock Stock that is tracked only as "Amoxicillin 500mg: 240" hides the one fact a pharmacist needs at the counter: which of those 240 expire first. Batch-level tracking keeps a separate balance for each batch number with its own expiry date, which is what makes recalls and near-expiry sales manageable. - Each received line creates or tops up a batch balance carrying its own batch number and expiry. - Dispensing draws from batches, so a recalled or damaged batch can be isolated without touching the rest of that drug's stock. - Reports read from batch balances, which is why a wrong batch on the GRN corrupts every report built on it. ## Step 3: Expiry control that works before the counter, not after The expensive way to find expiring stock is to open a box and see it. The cheap way is a system that shows the risk early and refuses to hand out stock that should not be sold. In CuraVerto's Pharmacy module, dispensing selects batches first-expiry-first-out, and the batch query excludes batches that are already expired or quarantined, so those never reach the pharmacist's cart. A quarantine flag lets you pull a batch out of circulation without deleting its history. For planning, there is an expiry report you can pull for a window of your choosing, defaulting to the next 90 days, which lists batches approaching expiry and leaves out quarantined and zero-quantity batches so the list is only things you can still act on. It can be downloaded as CSV. The practical use is a weekly routine: pull the 90-day list, decide what to return to the supplier, what to discount, and what to reorder less of. | Question at the counter | Paper register | Batch-aware system | | --- | --- | --- | | Which batch do I hand out first? | Whatever is at the front of the shelf | Earliest unexpired batch, selected at dispensing | | Is anything expiring soon? | Found when someone checks the shelf | Expiry report for a chosen window, exportable as CSV | | Can I pull one bad batch? | Search the shelf and hope | Quarantine that batch, keep its history | | Did the free scheme land correctly? | Depends on who typed it | Free quantity converted to pieces at receipt | ## Step 4: GST on the way out Each medicine has its own HSN code and GST rate, and a pharmacy bill has to carry them per line. CuraVerto stores the HSN and GST rate on the catalogue entry, applies them when a sale is dispensed, and generates a GST invoice for the sale. The Pharmacy module also includes GST summary, HSN-wise, input tax credit and GSTR-1 style reports so the numbers your accountant needs come from the same transactions that moved stock, instead of a separate spreadsheet. For the fiscal-year and document-numbering side of billing, see the related post below. ## Step 5: Day-end and the reports you will actually open A pharmacy that reconciles daily catches errors while someone still remembers the sale. CuraVerto includes a day-end view and a set of registers and reports, among them stock ledger, stock valuation, inventory ageing, supplier ageing, and a Schedule H1 register report. Which of these you rely on depends on your clinic, but the principle is the same everywhere: every closing number should trace back to a receipt, a dispense, or a return, not to a guess. ## What plan you need On CuraVerto, the in-house Pharmacy module with FEFO dispensing, expiry alerts, purchase orders and vendor management is included from the Pro plan at ₹24,999 per year, not on Essential at ₹9,999. Supplier invoice scanning is metered per scan from your wallet, so it is a usage cost, not part of the plan fee. Prices exclude GST. ## Frequently asked questions - **What is a GRN in a clinic pharmacy?** A GRN, or goods received note, is the record made when a supplier delivers stock against an invoice. In CuraVerto's Pharmacy module it captures drug, batch, expiry, quantity, rate, MRP, HSN and GST for each line, and it is what creates the batch stock you later dispense from. - **How does CuraVerto stop expired medicines being dispensed?** CuraVerto's dispensing step selects batches first-expiry-first-out and excludes batches that are expired or quarantined, so they do not appear in the pharmacist's cart. Staff can also quarantine a batch to pull it from circulation while keeping its history. - **How are free scheme quantities handled in the GRN?** CuraVerto converts the free quantity on a received line into dispensable pieces using the drug's pieces per package, the same way it converts the paid quantity, so a free strip adds the full number of tablets to stock rather than a single unit. - **Which CuraVerto plan includes the pharmacy module?** The in-house Pharmacy module is included from the Pro plan at ₹24,999 per year, excluding GST. It is not part of the Essential plan at ₹9,999 per year. Supplier invoice scanning is charged per scan from the wallet. - **Can I download expiry and GST reports?** Yes. CuraVerto's Pharmacy module offers an expiry report for a chosen window with CSV download, and GST reports including a GST summary and HSN-wise view, built from the same transactions as stock movement. ### Related reading - [CuraVerto Pharmacy Management for Clinics](https://curaverto.com/solutions/pharmacy) - [GST Billing, Fiscal Years and Document Numbering for Clinics](https://curaverto.com/blog/gst-billing-fiscal-year-document-numbering-clinics) - [Schedule H and H1 Compliance for Digital Prescriptions in India](https://curaverto.com/blog/digital-prescription-schedule-h-compliance-india) ## Frequently asked questions ### What is a GRN in a clinic pharmacy? A GRN, or goods received note, is the record made when a supplier delivers stock against an invoice. In CuraVerto's Pharmacy module it captures drug, batch, expiry, quantity, rate, MRP, HSN and GST for each line, and it is what creates the batch stock you later dispense from. ### How does CuraVerto stop expired medicines being dispensed? CuraVerto's dispensing step selects batches first-expiry-first-out and excludes batches that are expired or quarantined, so they do not appear in the pharmacist's cart. Staff can also quarantine a batch to pull it from circulation while keeping its history. ### How are free scheme quantities handled in the GRN? CuraVerto converts the free quantity on a received line into dispensable pieces using the drug's pieces per package, the same way it converts the paid quantity, so a free strip adds the full number of tablets to stock rather than a single unit. ### Which CuraVerto plan includes the pharmacy module? The in-house Pharmacy module is included from the CuraVerto Pro plan at ₹24,999 per year, excluding GST. It is not part of the Essential plan at ₹9,999 per year. Supplier invoice scanning is charged per scan from the wallet. ### Can I download expiry and GST reports? Yes. CuraVerto's Pharmacy module offers an expiry report for a chosen window with CSV download, and GST reports including a GST summary and HSN-wise view, built from the same transactions as stock movement. --- Canonical: https://curaverto.com/blog/clinic-pharmacy-inventory-batch-expiry-grn-india Contact: sales@curaverto.com This document is CuraVerto's own description of its product.