๐ Pharmacy / Medical Store Guide
This guide covers everything that's specific to pharmacy and medical-store usage of Ledgr โ features, fields, and workflows you won't find in generic accounting software.
Why Ledgr for pharmacies?
Pharmacy retail has compliance and operational requirements that most billing software ignores. Ledgr's pharmacy preset adds:
- Batch + expiry tracking โ every stock-in records batch number and expiry date; FEFO (First-Expiry-First-Out) picking on POS by default.
- Drug schedule classification โ Schedule H, H1, X support per the Drugs & Cosmetics Act 1940. Visible badges on POS so the cashier knows.
- Schedule H/H1 statutory register โ auto-generated from your sales. Required by drug inspectors during audits.
- Salt composition + manufacturer โ fields on every product, searchable from POS. Helps with substitutions when a brand is out of stock.
- Rx-required flag โ products marked Rx-required show a red "Rx" badge on POS; cashier knows to ask for prescription.
- Distributor DL number tracking โ each medicine wholesaler has their drug license number + expiry on file.
- Loose / dispensing units โ sell from a strip of 10, dispense by tablet. Multi-UOM with conversion.
- Expiry alerts โ dashboard shows medicines expiring in next 30/60/90 days.
batch_expiry feature flag is auto-enabled.Initial setup
1. Pick the Pharmacy niche
During onboarding, select Pharmacy / Medical Store at the business-type step. Ledgr enables:
- POS, Billing, Purchases, Credit Notes, Inventory, Accounting, Banking modules
batch_expiryfeature flag (drives the batch picker on POS + Product form fields)- "Medicine" terminology in lists (instead of generic "Item")
- Pharma-friendly stock units in dropdowns: strip, box, vial, sachet, jar, pouch, tube, bottle, ampoule, can, pack
Already onboarded with a different niche? Go to Settings โ Modules โ change Business Type to Pharmacy.
2. Configure GST (India)
Most medicines in India fall under 5% GST; some (like Vitamins, OTC supplements) attract 12% or 18%. Set up tax groups:
- Settings โ Tax โ Tax Groups โ ensure GST 0%, GST 5%, GST 12%, GST 18% groups exist (Ledgr seeds them by default for India).
- Decide if your business charges GST inclusive or exclusive โ for pharmacy retail, tax-inclusive MRP is standard. Tick Tax Inclusive on each product.
3. Add your distributors / wholesalers
Pharmaceutical distributors need a Drug License (DL) on file:
- CRM โ + New Contact with type=
vendor(orboth). - Fill the standard fields (name, address, GSTIN, phone).
- Scroll down to Pharmacy Distributor Fields (only visible when niche=pharmacy and type=vendor):
- Drug License Number (DL No.) โ e.g.
MH-MUM-12345 - DL Expiry Date โ Ledgr shows a red "EXPIRED" badge on the distributor list when this passes. Yellow "expires in 30 days" warning before that.
- Salesman / Contact Person โ the rep who takes your orders
- Salesman Phone
- Delivery Days โ e.g. "Mon, Wed, Fri"
- Drug License Number (DL No.) โ e.g.
- Save. Visible on Distributor List with the DL info column.
Adding medicines to inventory
The Pharmacy Product Form
When the pharmacy niche is on, the product form gains a Pharmacy Info section:
| Field | What it does |
|---|---|
| Manufacturer | Pharmaceutical company (e.g. "Sun Pharma", "Cipla"). Searchable on POS. |
| Salt Composition | Active ingredients (e.g. "Paracetamol 500mg + Caffeine 30mg"). Helps with substitutions. |
| Drug Schedule | OTC / G / H / H1 / X. Shown as colored badge on POS โ amber for H, orange for H1, red for X. |
| Rx Required | Checkbox. Adds an "Rx" badge so cashier knows to ask for prescription. |
| Pack Size | Free text โ "10 tablets per strip", "100 ml bottle", "30 g tube". |
| Storage Condition | "Below 25ยฐC", "Refrigerate 2-8ยฐC" โ informational on POS. |
| Rack Location | "Aisle 3, Shelf B" โ speeds up dispensing. |
Multi-UOM (loose dispensing)
Common scenario: you stock strips of 10 tablets but customers buy by tablet. Set this up via the multi-UOM picker:
- On the product, set primary unit =
tabletwith rate = price per tablet. - Click Manage UOMs on the product form.
- Add a row:
stripwith conversion factor10(1 strip = 10 tablets). - Optionally add:
boxwith factor100if you stock in 10-strip boxes.
On POS, the cashier sees a UOM dropdown per cart line โ pick tablet for loose sale, strip for full strip. The stock_ledger always records movements in the base unit (tablets), so inventory stays accurate.
Recording sales (POS)
FEFO batch picking
When you sell a medicine that has multiple batches in stock, the POS auto-picks the oldest expiring batch first (First-Expiry-First-Out). The cashier sees:
- Selected batch number on the cart line
- Expiry date with a colored indicator: green if > 90 days away, amber if 30-90 days, red if < 30 days
- Override option โ pick a different batch manually if needed
Drug schedule + Rx badges
While billing, Ledgr displays:
- Schedule badge โ colored chip on every product card in the search results. Cashier sees at a glance if it's H/H1/X.
- Rx badge โ red "Rx" pill if
rx_requiredis set. Cashier prompts customer for prescription. - Expiry warning โ if any batch in cart expires < 30 days, an amber row banner appears.
Schedule H / H1 / X register
The Drugs & Cosmetics Act, 1940 (and the H1 amendment, 2014) requires pharmacies to maintain a register of every sale of restricted-schedule drugs. Ledgr generates this automatically.
How to access
Sidebar โ Reports โ Schedule H/H1 Register (only visible when niche=pharmacy).
What it shows
One row per (invoice, drug) for every sale of a Schedule H / H1 / X medicine in the date range you pick. Columns:
- Sl. No ยท Date ยท Invoice #
- Patient name + phone + address (from the customer record)
- Drug name ยท Salt composition ยท Manufacturer
- Schedule (H / H1 / X) โ colored badge
- Batch No ยท Expiry ยท Qty
- Rx Required (Yes/No)
- Notes โ typically prescriber details, free text
Adding prescriber details
The register doesn't have a dedicated "doctor name + reg no" field yet โ these vary widely between states. The recommended workflow is to enter prescriber details in the internal notes field of each invoice. They appear in the Notes column of the register.
Expiry alerts
Stay ahead of expired stock โ a major financial loss for pharmacies.
- Sidebar โ Inventory โ Expiry Alerts shows medicines with batches expiring in the next 30 / 60 / 90 days.
- Filter by warehouse, by status (expired / critical_30 / warning_60 / notice_90).
- For each alerted item: contact the distributor for replacement or arrange a discount sale.
Common workflows
Reorder from a distributor
- Reports โ Reorder Report shows items at/below min_stock with suggested reorder qty (max โ current).
- Click Generate POs โ Ledgr groups items by their last_supplier and creates one draft Purchase Order per supplier.
- Review each draft, send via WhatsApp or email.
- When stock arrives, convert the PO to a Purchase Bill โ batch + expiry are entered at this point.
Handling expired stock
- Inventory โ Stock Adjustment โ pick the expired batch โ reduce qty with reason "Expired write-off".
- Ledgr posts journal entry: Dr. Stock Loss / Cr. Inventory.
- For supplier-credit-eligible expired stock: create a Debit Note (purchase return) to the distributor.
Drug returns
- From the original invoice, click Create Credit Note.
- Pick the line items being returned, adjust qty.
- Save โ Ledgr posts the journal (Dr. Sales Return + Tax / Cr. Sundry Debtors) and reverses the stock movement.
FAQ โ Pharmacy specific
Does Ledgr support distributor schemes (e.g. 1+1 free, 10+1 free)?
Yes โ every invoice line has a free_qty field. Enter the paid quantity in the regular qty column and the free quantity in free_qty. The stock movement is paid+free, but the invoice value is calculated only on paid qty.
Can I track multiple manufacturers / brand substitutes?
Each product is one brand. To track substitutes, use the salt composition field โ search by salt to find all brands with the same active ingredient.
What about Form 16 / Form 17 (sale / purchase registers for wholesalers)?
Form 16 (sale register) and Form 17 (purchase register) are required for drug wholesalers, not retailers. These are on the roadmap. For now, retail Schedule H/H1 register covers the most common audit need.
Multi-store pharmacy chain โ does each store get its own database?
Yes. Each Ledgr install is a separate company database. You can move data between stores via the .ledgr backup format. For consolidated reporting across stores, an export-and-merge workflow is currently the only option (a multi-tenant cloud version is on the roadmap).
Question we didn't answer?
WhatsApp us โ we've helped hundreds of pharmacies set up. We'll answer in plain English.