Pharmacy Stock & Expiry Register (India)
Every batch with its expiry, sold by first expiry, with alerts before stock goes to waste.
Try before you buy.
- Free preview: your entries, batches, backups and expiry alerts in full; the return lists, valuation and reorder list as counts and first rows (up to 10), totals hidden.
- Locked until you unlock it: download.
- Unlock: Premium pass, ₹799 for 30 days, a one-time payment that never renews.
Ways to unlock shows how to get the full result.
Printing this result is locked in the free preview.
This register is locked
It is encrypted in this browser. Type its passcode to open it on this device.
Forgot the passcode?
Nobody can open the register without it — not this site either, because the passcode never leaves this device. If you have an encrypted backup, delete this copy and restore the backup with its own passphrase. Otherwise you can only delete it and start again.
Document
Phone pictures
New entry
Stock entries
Products
Expiry alerts
Expired stock may not be sold or kept with the trade stock: rule 65(17) of the Drugs Rules, 1945 lets it wait for its return only in packages marked “Not for sale”, kept apart. A month on the pack counts to its last day.
Expiry return lists
One list for each supplier the batches came from, with quantities, rates and values. For returned goods the GST credit note is the supplier’s document, issued under its own return terms; when your own customers return goods to you, the Credit Note Generator makes yours.
Stock valuation
Reorder suggestions
Your pharmacy
Alerts, returns, reorder and valuation
Where your register is kept
In this browser on this device only (IndexedDB). It is not uploaded or copied anywhere, so clearing this browser’s site data deletes it: download an encrypted backup regularly and keep it somewhere safe.
Encrypted backup
One file with the whole register, encrypted on this device with a passphrase you choose (AES-256). Keep the file somewhere safe and the passphrase too: without it the file cannot be opened. Backups always download, also without a pass.
Restore a backup
Restoring replaces the register on this device with the one in the file. A passcode set on this device stays.
Passcode lock
Export
Your register is yours: these files always download, also without a pass. CSV files open in Excel, Google Sheets and LibreOffice; the JSON file is the whole register, not encrypted.
Import
Bring product records in from a spreadsheet saved as CSV: the first row names the columns (download a template to see which). Rows with a problem are listed and left out. A JSON file exported from this register adds its records to this one.
Delete the register
Removes every product record and the passcode from this browser. Download a backup first if you may need them.
Locked in the free preview. Opens the ways to unlock this result.
Locked in the free preview. Batch runs unlock with a pass.
Locked in the free preview. Query results unlock with a pass.
About the Pharmacy Stock & Expiry Register (India)
A batch-wise stock register for a pharmacy, chemist shop or clinic dispensary in India, kept in this browser on your device. Record purchases batch by batch — with the expiry, MRP, purchase rate, GST and the bonus quantity of a trade scheme — by hand or by importing the supplier’s invoice saved as CSV; sales, issues and returns are taken from the batch that expires first and has not expired, unless you choose a batch. Expired batches can never be sold here, because rule 65(17) of the Drugs Rules, 1945 forbids selling a drug after its date of expiry.
Expiry alerts list every batch that expires within 30, 60 or 90 days, with the quantity and the value at risk at cost and at MRP, so short-dated stock is sold or returned in time. From the same entries come the expiry-return lists for each supplier, a stock valuation at cost (each batch at its own rate) and at MRP, and reorder suggestions from your recent sales. Without a pass the return lists, the valuation and the reorder list are a free preview — their counts and first rows show, their totals and files unlock with a Premium pass, as does the expiry alerts’ CSV file. Your entries, the expiry alerts on screen and the encrypted backups are never locked. Sales billing itself belongs in Shop POS Billing.
How to use it
- Open Settings: your pharmacy’s name, address and drug licence numbers, how many days the return lists and reorder suggestions look at, and whether stock is valued excluding or including GST.
- Record the opening stock batch by batch (Stock in & out → Opening stock), or import it under Data & backup → Import → Opening stock.
- For each supplier’s bill, choose Purchase: the supplier and bill number, then each product with its batch, expiry, quantity billed, bonus quantity, MRP, rate and GST — or import the invoice as CSV (Import → Purchases).
- Record sales with the product and quantity: the batches are taken by first expiry, first out, and the line shows which batch each unit comes from. Customer returns, returns to the supplier and expired or damaged stock have their own entries.
- Check Expiry & returns every week for what expires within 30, 60 or 90 days, and send expired stock back with each supplier’s return list. The return lists, the valuation and the reorder list are a free preview without a pass; their PDF, XLSX and CSV files unlock with a Premium pass.
Examples
Purchase: 10 strips billed at ₹30.00 each and 1 bonus strip
The batch receives 11 strips valued at ₹300.00 — ₹27.27 a strip — so the bonus strip lowers the cost of all of them.
Sell 6 strips · batch A: 4 left, expiry 11/2026 · batch B: 10 left, expiry 06/2027
Takes 4 from batch A and 2 from batch B. A batch that has expired is skipped, and the line says how much stock is held in expired batches.
Batch CS1188 · 6 bottles · 83 days to the last day of its expiry month · rate ₹78.00 · MRP ₹120.00
Listed under “expiring in 61 to 90 days”, with ₹468.00 at cost and ₹720.00 at MRP at risk.
36 strips sold in 60 days · 7 days for an order to arrive · 30 days of stock to keep · 4 strips can still be sold
0.6 a day × 37 days = 22.2, less 4 on hand = 18.2 → order 19 strips (or the usual order quantity, if that is more).
Common uses
- A retail pharmacy checking every Monday what expires in the next 90 days, so it can be sold first or returned for credit in time.
- A chemist entering a distributor’s bill from its CSV export instead of typing every batch.
- A clinic dispensary issuing medicines to patients batch by batch and writing off what expired.
- Preparing the stock valuation at cost for the books at the end of the year.
Batches, expiry dates and first expiry, first out
A medicine is stocked batch by batch: each batch has its own number, expiry date, MRP and purchase rate, and the register keeps the stock of each one. Write the expiry as printed on the pack — 03/2027 or a full date; a month means the batch may be sold until the last day of that month. Sales are taken from the batch that expires first and has not expired, so older stock goes out before it is wasted. A sale entered late — yesterday’s sales entered this morning — takes only stock that was on the shelf on its date, and an entry is never changed or deleted in a way that would take a batch below zero. Rule 65(17) forbids selling or stocking a drug after its date of expiry; stock waiting to go back to the supplier may be kept only apart from the trade stock, in packages marked “Not for sale”. The register lists such stock under the expiry alerts and the return lists until it is returned or written off.
Purchases and the supplier’s invoice
Rule 65(4) asks a retailer to keep records of every purchase: the date, the seller’s name, address and licence number, the drug, the quantity, the batch number and the manufacturer, with the purchase bills serially numbered in date order. Enter the bill number and the supplier with each purchase, and keep the bills themselves. A supplier’s invoice saved as CSV — most billing software exports one — imports a row per batch: product, pack, batch, expiry, MRP, rate, GST, quantity, bonus quantity, manufacturer, HSN, supplier, bill number and date (download the template under Data & backup → Import to see the columns). New products and batches are created; rows with an unreadable expiry, quantity or bill date, or a batch already expired, are listed and left out.
How the stock is valued
Each batch is valued at its own purchase cost: the rate on the bill, with the bonus quantity of a scheme spread over all the units received. Choose under Settings whether that cost excludes GST (when you take input tax credit, the GST on purchases is not part of the stock’s cost) or includes it. The valuation also shows the stock at MRP, and the value of expired stock on hand separately, because it can only be returned or written off. The register shows cost; whether expired or slow-moving stock should be written down is for you and your accountant.
GST on medicines
Most medicaments of headings 3003 and 3004, including Ayurvedic, Unani, Siddha and homoeopathic medicaments, are in Schedule I of Notification No. 9/2025-Central Tax (Rate): 2.5% CGST plus 2.5% SGST, or 5% IGST. The drugs listed in Annexure I of Notification No. 10/2025-Central Tax (Rate) are exempt. Enter the rate on your supplier’s bill with each batch; the register uses it only for the valuation including GST.
Reorder suggestions
For each product: the sales and issues of the last days you choose (60 by default) give an average a day; that average × (the days an order takes to arrive + the days of stock you want to keep), less the stock that may still be sold, is the suggested order, rounded up. Expired stock is never counted as stock on hand. A product at or below its own reorder level is listed even without sales, with its usual order quantity. The days are yours to set under Settings; seasonal medicines need your judgement.
Where the register is kept
In this browser on this device (IndexedDB), never on a server. A passcode stores it encrypted (AES-256) and locks it when you step away; an encrypted backup is one file that restores the whole register on another device. Clearing this browser’s site data deletes the register, so back up regularly — a reminder shows while changes are not backed up.
Limitations
- One register per browser: to use it on another device, restore an encrypted backup there. Two counters entering on different devices do not see each other’s entries.
- It is not a billing counter: it records the quantity sold from each batch, not the customer’s bill or the payment. Bill in your billing software or Shop POS Billing and enter the day’s sales here.
- Return terms belong to each supplier. The return list says what is due to go back; the supplier’s credit note follows its own policy.
- Quantities are in the unit you choose for each product (a strip, a bottle). Loose tablets sold from a strip can be entered as part of a strip, to three decimal places.
Privacy
Your products, batches, suppliers and stock entries stay in this browser on your device (IndexedDB), encrypted when you set a passcode. Imports are read on the device and backups are encrypted on the device. Nothing is uploaded.
Frequently asked questions
What do I get without a pass?
Without a pass, Pharmacy Stock & Expiry Register (India) shows your entries, batches, backups and expiry alerts in full; the return lists, valuation and reorder list as counts and first rows (up to 10), totals hidden. Until you unlock it, the result can’t be downloaded. A Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.
What does the free preview show?
Everything you enter works in full for all your products: purchases, sales, returns, opening stock, invoice imports, batches, the expiry alerts with the value at risk, CSV and JSON exports of your own entries and the encrypted backups. The expiry-return lists, the stock valuation and the reorder suggestions show their counts and first rows (up to 10) with their totals hidden; their PDF, XLSX and CSV files, and the CSV file of the expiry alerts, unlock with a Premium pass.
Why can I not sell from a batch that has expired?
Because rule 65(17) of the Drugs Rules, 1945 forbids selling or stocking a drug after the date of expiry printed on it. The register skips expired batches when it takes stock for a sale and refuses one chosen by hand. Send such stock back with the return list, or write it off as expired.
How do I enter the bonus goods of a scheme?
Enter the quantity billed and the bonus quantity on the purchase line: both go into stock, and the cost of the billed quantity is spread over all of them. In “10 + 1”, 11 units come in for the price of 10.
Can I import my distributor’s invoice?
Yes, as a CSV file with a row per batch (Data & backup → Import → Purchases). The first row names the columns; the template shows them, and other names for the same columns (Batch No, Exp, PTR, Qty, Bonus) are recognised. Rows with a problem are listed and left out, so nothing half-read goes into the register.
Can it bill customers?
No. It is the stock and expiry side of a pharmacy. Bill in your billing software or in Shop POS Billing, and enter the quantities sold here, or keep this register for purchases, expiry and returns only.