A pharmacist in Surat counted 34 strips of a calcium supplement on the last shelf — all expired by three months. The batch had arrived six months earlier, sat behind a newer purchase of the same product, and never moved. The MRP on those strips: ₹3,200. The distributor refused the return. The strips went into the bin.
That is not a storage problem. That is a reporting problem. A monthly expiry audit — specifically a batch-wise expiry report run at the end of every month — would have flagged that batch when it still had 90 days left and a live return window. The pharmacist never ran one because pulling batch data from his billing software took the better part of a morning.
If you found this post by searching for a faster way to do a monthly expiry audit or batch report, keep reading. What follows is what that missing report is actually costing you — and what 15 minutes at EOM can recover.
---
The Expired-Stock Write-Off You're Treating as a Cost of Business
Walk to the back of any neighborhood pharmacy in Chennai, Nagpur, or Ludhiana and you will find a cardboard box. It holds expired strips, vials, and sachets. Every pharmacist we have spoken to calls it "normal shrinkage." Pharmacy industry data suggests 3–8% of inventory value is lost to expiry annually. On a pharmacy turning over ₹15 lakh a month, the lower end of that range — 3% — is ₹54,000 a year. The upper end is ₹1,44,000.
The tragedy is that most of this stock was returnable. Distributors in India typically accept returns on medicines with 3 or more months remaining before expiry, though individual distributor policies vary. The stock that ends up in the bin usually expired during the window when it was still returnable — the pharmacist just didn't know it was sitting there.
A batch-wise expiry report fixes exactly this. It surfaces every batch in your inventory, sorted by expiry date, so you can act while the return window is open. Without it, you are finding out about expiry after the distributor's cutoff has already passed.
---
The Compliance Exposure That a Missing Batch Report Creates
Selling expired medicine in India is not a civil matter. Under the Drugs and Cosmetics Act, Section 27, selling a drug that is not of standard quality — which includes an expired drug — carries a fine of ₹1 lakh to ₹10 lakh, and in serious cases, imprisonment. Schedule H and H1 drugs (governed by D&C Rules, Rule 65) require a register that must be retained for three years. A batch report is part of demonstrating that your stock management meets that standard.
Drug inspectors in Maharashtra and Karnataka have been conducting unannounced audits at retail pharmacies. If an inspector pulls a Schedule H1 item from your shelf and you cannot produce batch-level movement records, the burden of proof is on you.
A monthly EOM batch report, printed and filed, is the simplest paper trail you can maintain:
- Batch number and expiry date for every SKU in stock
- Quantity on hand per batch
- Date the report was generated
This takes 15 minutes if your software supports it. It takes half a day if it doesn't.
---
The GST and Return Credit Mess That Bad Batch Tracking Causes
When you return expired stock to a distributor, they issue a credit note. That credit note affects your GST input tax credit. Medicines sold in India are taxed at 5% under GST (confirmed at the 56th GST Council meeting, September 2025), and medicines fall under HSN 3004. When a return is processed without a matching batch number and invoice reference, the reconciliation between your purchase register and the credit note becomes difficult. Discrepancies here can trigger notices during GST scrutiny.
The root cause is usually the same: the pharmacy's billing software records sales but does not track which batch a sale consumed. So when a return happens, there is no batch-level audit trail to reconcile against.
A clean monthly batch report gives your accountant the exact batch, quantity, and purchase date for every return. That makes the credit note match. That keeps your GSTR-2A reconciliation clean.
---
What the 15-Minute EOM Audit Actually Looks Like
Here is the difference between a pharmacy that runs a monthly expiry audit and one that doesn't:
| Without Batch Report | With Batch Report |
|---|---|
| Discovers expiry while billing — batch already expired | Catches batches 60–90 days out, return window still open |
| Distributor return refused — full write-off | Distributor accepts return — full credit recovered |
| No paper trail for inspector | Printed batch register on file |
| GST credit note reconciliation manual and error-prone | Batch reference on every return, accountant reconciles in minutes |
| Owner spends 3–4 hours at month-end manually checking shelves | 15-minute report, sorted by expiry date, generated from software |
The pharmacist who runs this audit on the last working day of each month does three things: generates the report, marks the 30–90 day window items for prioritized sale or return, and files the printout. That is the entire process. The constraint is whether the software can generate that report in one click or whether it requires exporting raw data to a spreadsheet and sorting manually.
---
How Pharmacies Running Nesayo's Expiry Guard Handle This
The Expiry Guard agent — one of five AI agents in Nesayo — does not wait for the end of the month. A pharmacy in Thane has the expiry notification arriving in its Morning Briefing by 6:17 AM on the day a batch crosses the 30-day threshold. By the time the pharmacist opens the shutter, the system has already identified the batch, flagged the quantity, and drafted a return order for one-tap approval.
Billing in Nesayo uses FEFO (First Expiry, First Out) batch selection automatically. When a sale is entered — whether by voice in Hindi, Tamil, or any of the 10 supported Indian languages, or by scanning a prescription with Claude Vision — the system picks the earliest-expiring batch first. That single behavior, applied to every transaction, is the mechanical reason that expired stock stops accumulating on the back shelf.
At month-end, the batch-wise expiry report is generated in one click. It shows every SKU, every batch, the expiry date, the quantity on hand, and the days remaining. The Schedule H1 register is auto-populated and ready to print — no manual entry, no separate ledger. For pharmacies that export to Tally Prime, the free Tally Prime export (available as of 2026-07-07; see current feature list at nesayo.com) carries batch references through so the accountant's reconciliation is clean. Billing is free forever (as of 2026-07-07; see pricing at nesayo.com/pricing). AI plans — including Expiry Guard — start at ₹399 per month for the Starter plan; the AI Employee plan with all five agents is ₹999 per month (as of 2026-07-07; current pricing at nesayo.com/pricing).
---
The Choice in Front of You Right Now
If you do nothing, next month looks like this month: a cardboard box at the back, a distributor call that goes badly, and a number on your P&L labeled "expired stock" that you have learned to accept. The write-off compounds. The compliance exposure stays live. The GST reconciliation stays messy. If you run a monthly expiry audit — even manually — you will recover a portion of that loss. If you run it with software that automates the batch tracking and the return flagging, the audit takes 15 minutes and the Expiry Guard agent handles the rest.
Go to nesayo.com/demo — real pharmacy data is pre-loaded, no signup required. Filter the batch report to the 30–90 day expiry window and see exactly what your return queue would look like this month. It takes two minutes.
---
FAQ
Won't migrating my data take forever — and will I lose what I have?
Nesayo's onboarding team typically completes a data migration from common Indian pharmacy software within one to two working days using your existing purchase and sales data. Your historical records are not deleted; they are mapped to Nesayo's batch structure. If you have a CSV or Excel export from your current software, that is usually enough to start. A dedicated support contact walks you through it.
What happens during a power cut or internet outage — my billing can't stop?
Nesayo runs as a PWA (Progressive Web App), which means billing continues offline on any device — phone, tablet, or laptop — and syncs automatically when connectivity returns. An owner in Pune ran three hours of billing during a local outage in March and saw the data sync without any manual intervention when the connection came back. Offline mode supports full billing including batch selection.
What is the catch with free billing — why would you give that away?
There is no catch in the sense of a hidden fee or a data-selling arrangement. Billing is free because Nesayo's paid revenue comes from the AI agent plans (Starter ₹399/mo, AI Employee ₹999/mo, Chain ₹2,499/mo — as of 2026-07-07; see nesayo.com/pricing for current rates). A pharmacy that bills for free and never upgrades is still a customer we want — the network effect of more pharmacies on the platform benefits everyone. Expiry Guard, Morning Briefing, and the other AI agents are where the paid value sits, and you can verify exactly what is included before committing.