Practice Management

Running an In-Clinic Pharmacy in India: GRN, Batch and Expiry Control

Anexshe Revedha·Cofounder & COO, CuraVerto·11 September 2026·Updated 28 October 2026·7 min read
The 60-second version

Know what is on the shelf, batch by batch.

Stock you can trace, from receipt to bill.
1
Pick what you want to know
One tap jumps to that part.
2
See the simple version
Plain words, one picture.
123
  • Receive against the invoiceDrug, batch, expiry, quantity, rate, MRP, HSN and GST on every line.
  • Stock by batchEach batch keeps its own balance and its own expiry date.
  • First expiry goes firstDispensing selects first-expiry-first-out and skips expired or quarantined batches.
  • GST on the way outHSN and GST rate apply at sale, and a GST invoice is generated.
  • Reports that trace backClosing numbers trace to a receipt, a dispense or a return.

The invoice scan is a drafting aid. A person still checks batch and expiry on each line.

3
See it on your own pharmacy
A real person sets it up with you.

Send us a question about your receiving or expiry routine, and a real person from our team will answer it.

Ask us on WhatsApp
₹25,000per year excluding GST, every plan includes it
90 daysdefault window of the expiry report, downloadable as CSV
Per scansupplier invoice scanning is metered from your wallet
Want the detail? Read the full guide (7 min) ↓

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 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 what CuraVerto's Pharmacy module does at each step.

Step 1: The GRN is where stock accuracy is won or lost

The GRN is the record made when a supplier delivers against an invoice, and every downstream number depends on it.

Captured for each line
  • Drug
  • Batch number
  • Expiry date
  • Quantity
  • Rate
  • MRP
  • HSN code
  • GST percentage
The invoice scan is a drafting aid
A clinic can photograph a supplier invoice and let CuraVerto's invoice scan read the lines, after which staff review and confirm before the GRN is posted. 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

A free scheme must be booked in pieces, not packs, or the shelf and the screen drift apart.

Booked as packs
  • Two free strips add two to the batch
  • The shelf and the screen disagree for months
Converted to pieces
  • Free quantity is multiplied by pieces per package, like the paid quantity
  • Two free strips of fifteen tablets add thirty dispensable tablets

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

Batch-level tracking keeps a separate balance for each batch number with its own expiry date.

  1. STEP 1
    Receive
    Each received line creates or tops up a batch balance with its own batch number and expiry.
  2. STEP 2
    Dispense
    Dispensing draws from batches, so a recalled or damaged batch can be isolated without touching the rest of that drug's stock.
  3. STEP 3
    Report
    Reports read from batch balances, so a wrong batch on the GRN corrupts every report built on it.

Step 3: Expiry control that works before the counter, not after

Dispensing selects batches first-expiry-first-out and excludes batches that are expired or quarantined.

Question at the counterPaper registerBatch-aware system
Which batch do I hand out first?Whatever is at the front of the shelfEarliest unexpired batch, selected at dispensing
Is anything expiring soon?Found when someone checks the shelfExpiry report for a chosen window, exportable as CSV
Can I pull one bad batch?Search the shelf and hopeQuarantine that batch, keep its history
Did the free scheme land correctly?Depends on who typed itFree quantity converted to pieces at receipt

A quarantine flag pulls a batch out of circulation without deleting its history. The expiry report covers a window of your choosing, defaulting to the next 90 days, and leaves out quarantined and zero-quantity batches. Pull it weekly and decide what to return, discount, or reorder less of.

Step 4: GST on the way out

HSN and GST rate sit on the catalogue entry, apply when a sale is dispensed, and produce a GST invoice.

GST reports in the module
  • GST summary
  • HSN-wise
  • Input tax credit
  • GSTR-1 style

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

Every closing number should trace back to a receipt, a dispense, or a return, not to a guess.

Day-end view and registers
  • Day-end view
  • Stock ledger
  • Stock valuation
  • Inventory ageing
  • Supplier ageing
  • Schedule H1 register report

What plan you need

The Pharmacy module is included on every plan, starting at ₹25,000 per year (CMS).

  • ₹25,000
    CMS plan, per year, includes the Pharmacy module
  • ₹25,000
    CMS plan, per year, includes the Pharmacy module
  • Per scan
    Supplier invoice scanning is metered from your wallet

The module includes FEFO dispensing, expiry alerts, purchase orders and vendor management. 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 on every plan, starting at ₹25,000 per year (CMS), excluding GST. 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

Frequently asked questions

Run your clinic pharmacy on batch-level stock

CuraVerto's Pharmacy module covers GRN receiving, first-expiry-first-out dispensing, expiry reports and GST invoices, included on every plan, starting at ₹25,000 per year excluding GST.

See CuraVerto pricing →Explore the Pharmacy moduleChat on WhatsApp

Prefer not to use WhatsApp? Leave your number and we will call.

We use your name, clinic and number only to contact you about CuraVerto. If you say how you heard of us, we keep that with your request. See our privacy policy.

More from the blog