Picture a pharmacist running a mid-size store who does his software migration on a Sunday. By Tuesday he has sold stock that the new system thought was valid — but that his distributor had already flagged for return. The batch numbers never made it across. The expiry dates were blank. The return window closed. The loss is his.
That is not a horror story. That is the predictable outcome when a pharmacy does opening stock import without a batch-wise structure — and it usually shows up only after the money is gone.
If you are switching software right now, or planning to, this post is the only thing standing between you and that same mistake. Read it before you touch a single file.
---
Your Stock Is Not a Number — It Is a List of Batches, and the Difference Costs You
When a legacy system exports your inventory, it often gives you one line per medicine: "Paracetamol 500mg — 240 tablets." That number is useless for actual pharmacy operations. What you need is:
- Batch B2204, qty 80, expiry March 2026
- Batch C0115, qty 100, expiry November 2026
- Batch C0892, qty 60, expiry February 2027
Without this granularity, your new software has no way to apply FEFO (First Expiry, First Out) logic when billing. It will pull from whichever batch the system picks, not the one expiring soonest. Every strip sold from a later batch leaves an earlier one on the shelf to expire — and every batch that expires unsold is money written off because of one gap in your migration file.
---
A Blank Expiry Column in Your Import File Is a Compliance Liability, Not Just an Operational Inconvenience
Under Rule 65 of the Drugs and Cosmetics Rules, the record of every supply of a Schedule C, H or H1 drug must carry its manufacturer, batch number and expiry, and Schedule H1 supplies also go into a separate register — prescriber's name and address, patient's name, drug and quantity — kept for three years (Rule 65(3)(h)). If your opening stock import leaves expiry dates blank for these molecules, those records are incomplete from the first sale.
A drug inspector visit is not predictable. A visit that finds blank expiry fields in your supply records — for stock you have already sold — is not something your CA can reverse after the fact.
The fix is upstream: your import file must carry expiry date as a mandatory column, not an optional one, and before the first bill you must check every row whose expiry is empty.
---
GST Reconciliation Breaks When Batch Data Is Missing at Purchase Entry
Most medicines you stock carry HSN code 3004 and, from 22 September 2025 (after the 56th GST Council meeting withdrew the 12% slab), attract GST at 5%. When you do a pharmacy stock migration without batch-level purchase price data, you lose the ability to match your opening stock valuation to your original purchase invoices.
This matters at three points: when you return expired goods to your distributor (the credit note must reference the original batch and purchase rate), when you file GSTR-2B reconciliation, and when your accountant values closing stock for income tax. A mismatch between what your system shows and what your distributor's credit note carries is a reconciliation dispute — and a distributor can reject a return claim outright if batch numbers do not match their records exactly.
The correct opening stock import file includes: medicine name, HSN, batch number, manufacturing date, expiry date, MRP, purchase rate (exclusive of GST), GST percentage, and quantity. If your current software's export does not give you all nine fields, you need to reconstruct them from your physical purchase invoices before migration day.
---
What Stock Management Looks Like When the Migration Is Done Right
Here is what changes when your opening stock import carries complete batch and expiry data from day one:
| Situation | Without batch-wise import | With correct batch-wise import |
|---|
| Billing a Schedule H1 medicine | Pharmacist manually enters batch | System auto-selects earliest expiry batch |
| Expiry approaching in 45 days | No alert; stock stays on shelf | Flagged for return before window closes |
| Distributor return claim | Disputed — batch mismatch | Matches original purchase data |
| Drug inspector visit | Supply records missing batch and expiry | Batch and expiry on every sale record |
| GST credit note | Manual reconciliation | Matches original purchase entry |
None of that is a software feature on its own. It is what correct data at the starting point produces.
---
How Nesayo Handles This From the First Day
When a pharmacy uploads its opening stock into Nesayo — as CSV, Excel, pasted text or a photo of the bill — each batch comes in with its own batch number and expiry, and the catalogue of more than 2.5 lakh medicines fills in details such as HSN and GST where your file did not state them. A month-only expiry like 08/2026 is read as the last day of that month, so the pack stays sellable through 31 August 2026. On a photographed bill, a row whose expiry cannot be read is still added to stock but flagged for review rather than guessed. Fix every such row before the first bill: a batch saved with no expiry can never be blocked as expired.
Once the opening stock is live, Nesayo's Expiry Guard agent — part of the AI Employee plan (₹999/month as of September 2026; current pricing at nesayo.com/pricing) — checks every batch across your inventory every six hours and suggests a discount or a return while there is still time to act. The Morning Briefing agent sends a summary each day showing which batches are crossing into the 30-, 60-, and 90-day expiry buckets, so the pharmacist arriving to open the shutter already knows what to act on.
Billing pulls the earliest-expiry batch automatically using FEFO logic, and refuses a batch once its expiry month has passed. Schedule H1 sales are logged automatically at billing: date, medicine, batch, quantity and bill number, with the patient and prescriber names entered on the bill. Nesayo does not record the prescriber's address yet, so the pharmacist adds it to complete the Rule 65(3)(h) register. For stores that use Tally for accounting, the AI Employee plan includes a Tally export (not a live integration — an export file you load into Tally) for your accountant.
Billing itself is free, with no time limit (nesayo.com/pricing). The agents — including Expiry Guard and Morning Briefing — are on the AI Employee plan; paid plans start with Starter at ₹399/month, as of September 2026.
---
The Choice in Front of You Right Now
If you do nothing — migrate your opening stock as a flat list of medicines and quantities, no batches, no expiry dates — you will spend the next 12 months discovering the consequences one by one: a rejected return claim here, a compliance gap there, a write-off you did not see coming. If you take two days before migration to reconstruct your batch data from purchase invoices and load it correctly, you head off those downstream problems before they start.
The second path takes more effort on day one. It costs nothing else.
Spend 2 minutes on nesayo.com/demo — a sample pharmacy is pre-loaded, no signup required. See how stock sits batch by batch with its expiry, and what the expiry alerts look like on day one of going live.
---
FAQ
How do I export batch-wise stock from Marg or Medeil before migrating to new software?
Most desktop pharmacy systems, including Marg (per publicly listed features on Marg's website as of April 2026), allow a stock ledger export from their reporting module. Look for a report labeled "Batch-wise Stock" or "Item-wise Batch Report" — not just "Stock Summary." Export to CSV or Excel and verify that expiry date and batch number appear as separate columns before you import anywhere.
Is FEFO a legal requirement in India for retail pharmacies?
FEFO (First Expiry, First Out) is not explicitly mandated by name in Indian retail pharmacy regulations as of this writing, but it is the practical standard required to comply with Rule 65 of the Drugs and Cosmetics Rules, which requires that batch and expiry data be maintained and that expired medicines not be dispensed. Dispensing a later-expiry batch when an earlier one exists creates avoidable compliance exposure. Verify your state's specific drug inspector guidelines with a qualified regulatory consultant.
What format should an opening stock import file be in for pharmacy software?
Most pharmacy management systems accept CSV or Excel (.xlsx). The minimum columns for a compliant batch-wise import are: medicine name, batch number, manufacturing date, expiry date, MRP, purchase rate, GST percentage, HSN code, and quantity. Some systems also require a pack size or unit column. Check your target software's import template before exporting from your old system — mismatched column order is the most common reason imports fail.
Can I claim GST input credit on medicines in my opening stock?
Input tax credit on opening stock at the time of GST registration is governed by Section 18(1) of the CGST Act and requires filing Form GST ITC-01 within 30 days of becoming eligible. You must have valid purchase invoices for the stock. Speak to your CA about your specific situation — the rules for credit availability differ depending on whether your store was previously unregistered, was under composition, or is switching from one registration category to another.
What happens if I import opening stock without expiry dates and then try to add them later?
Most pharmacy systems allow you to edit batch records after import, but any sales transactions that ran between the initial import and the correction will not retroactively update the Schedule H1 register entries. You will have an incomplete audit trail for that period. The cleaner path is always to get the data right before the first bill is raised on the new system.
What is the distributor return window for near-expiry medicines in India?
There is no single statutory window — it is governed by the terms in your distributor agreement. In practice, many distributors set a minimum remaining shelf life for returns, and the window differs from one distributor to the next. Confirm the window with each distributor in writing before assuming a batch is returnable.
How should I value opening stock for GST purposes when migrating pharmacy software?
Opening stock should be valued at purchase cost (exclusive of GST) as reflected in your original purchase invoices. For GST reconciliation purposes, the value must match what is on record with your GSTIN. If your old system stored MRP rather than purchase rate at the batch level, you will need to reconstruct purchase values from your invoice file before import. Your CA or GST practitioner should review the opening stock statement before you file your first return on the new system.