Inventory and stock

Items, batches, expiry alerts, suppliers, purchase orders, stock movements, and bulk import.

Inventory is your clinic's stock book. It holds three kinds of things — medications, supplies and equipment — tracks how much of each is on the shelf, warns you before you run out or before a batch expires, and writes down every single change with a reason and a name against it. Both the admin and the pharmacist work from the same module.

Admin/c/your-clinic/admin/inventory
Pharmacist/c/your-clinic/pharmacist/inventory

Set it up in the right order

Items point at a category and a supplier, so those two have to exist first. Do it in this order and you will never have to go back and fix things.

  1. 1

    Create your categories

    Groups like Homeopathic Remedies, Wound Care, Diagnostic Equipment. Each category is tied to one item type.

  2. 2

    Create your suppliers

    The firms you buy from, with their phone number, drug licence and GSTIN.

  3. 3

    Add your items — one by one, or all at once with Import Excel

    This is where you set the opening stock, the minimum stock and the prices.

  4. 4

    Set a sensible Minimum Stock on every item

    That number is what makes low-stock alerts fire. An item with a minimum of 0 will never warn you.

  5. 5

    Get into the habit of clicking Check Expiry every week

    Expiry alerts are not raised on a schedule — somebody has to press the button. See Alerts below.

The inventory dashboard

The six numbers across the top are the morning check. If Low Stock, Out of Stock, Expiring Soon, Expired Stock or Active Alerts is above zero, the card grows a coloured bar at the top so you can spot it without reading.
Total Items
Every item on your books.
Low Stock
Items sitting at or below the Minimum Stock you set for them.
Out of Stock
Items at zero.
Expiring Soon
Batches whose expiry date falls within the next 30 days.
Expired Stock
Batches already past their expiry date.
Active Alerts
Alerts nobody has resolved yet. Same number you see on the floating alerts button.

The Quick Actions row takes you to Add New Item, View All Items, Purchase Orders, View Reports and Transaction Logs. Below the stats, Analytics Overview draws six charts: Stock Health Status, Stock Movement (Last 14 Days), Items by Category, Expiry Status, Items by Type and Inventory Value by Category. The charts are held for a minute at a time — click Refresh at the top right if you have just changed something and want the numbers redrawn.

Recent Alerts on the left shows the latest five (No active alerts when you are clear), and Low Stock Items on the right shows the five worst offenders, with View all dropping you into the item list already filtered to low stock.

Categories and suppliers

Both live under Inventory. Categories are at Categories, suppliers at Suppliers (with a Search suppliers... box, since that list grows).

Category Name
Required. For example Homeopathic Remedies or Wound Care.
Description
Optional note for your staff.
Category Type
Required — Medication, Supply or Equipment. This is the one that catches people out: on the item form, only categories whose type matches the item's type are offered. A category typed as Supply will never show up on a medication.
Supplier Name
Required. The only mandatory supplier field.
Contact Person, Email, Phone, Address
Who you ring when a delivery is late. The phone number is pulled into the Low Stock report so you can reorder without hunting for it.
Drug License Number
For example DL-12345-2024.
GST Number (GSTIN)
The 15-character GSTIN, for example 22AAAAA0000A1Z5.
Notes
Anything else — payment terms, delivery days.
Active Supplier
On by default. Switch it off to retire a supplier: they keep their history, but only Active suppliers can be picked on a new purchase order.

Items

Read the list by colour, not by number: the stock badge is red at zero, orange at or below the minimum, green above it. The Adjust Stock button only appears on rows that are already at or below their minimum — it is a corrective tool, not the everyday one.

Search with Search items by name, SKU, or barcode.... Click Filters to narrow by Category, by Type (All Types, Medication, Supply, Equipment), or to tick Low Stock Only; Clear Filters resets them. The list loads 20 rows at a time as you scroll. Clicking anywhere on a row opens the item; the pencil edits it and the bin deletes it.

  • Add Item — the full form, covered below.
  • Import Excel — the bulk import wizard, covered below.
  • Refresh — re-reads the list.
  • Delete Selected (n) — appears once you tick row checkboxes; you confirm with Delete All.

On a phone or a narrow window each item becomes a card, and under the stock badge you get an estimate of how many doses are left in the tin — something like ~24× 1 Dram Globules · ~48× ½ Dram Globules. That is your current stock divided by how much stock each dispensing size takes out.

Adding an item

Every field has a small (i) beside it — hover for a plain-English explanation. Only Item Name and Item Type are actually required; everything else can wait.

Basic Information

Item Name
Required. The full product name as it will read on prescriptions and invoices — Arnica Montana 30C.
Generic Name
The scientific name of the substance, e.g. Arnica montana.
SKU
Your own short code, e.g. HOM-ARNA-30. It must be unique — a repeat gives you An item with this SKU already exists.
Barcode
The number on the pack. Scan it or type it.
Item Type
Required — Medication, Supply or Equipment. It decides which categories you are offered and whether the medication sections appear at all.
Category
Searchable list, filtered to categories of the same type. Empty? Create the category first.
Supplier
Searchable list of your suppliers.
Manufacturer
Who makes it (SBL, Dr. Reckeweg…), as opposed to who you buy it from.
Manufacturing Date
As printed on the pack.
Description
Internal note. Patients never see it.

Medication Details

This section only appears when Item Type is Medication.

Dosage Form
Tablet, Syrup, Ointment, Drops, Powder, Globules, Mother Tincture (Q), Dilution or Other.
Strength
e.g. 30C, 200C, 1M, Q.
Storage Conditions
Room Temperature, Refrigerated (2-8°C), Frozen (-20°C), Cool & Dry Place or Protect from Light.
Requires Prescription
Tick for anything that must not go over the counter without a doctor's line.
Controlled Substance
Tick for regulated substances that need special handling and records.

Homeopathy Details

A green-bordered panel that appears only after you pick Globules, Mother Tincture (Q) or Dilution as the dosage form. It is what makes this a homeopathic stock book rather than a generic one, and it is easy to miss.

Potency
e.g. 6, 30, 200, 1M, 10M.
Potency Scale
X (Decimal - 1:10), C (Centesimal - 1:100), LM (50 Millesimal) or Q (Mother Tincture).
Source Type
Plant Kingdom, Animal Kingdom, Mineral Kingdom, Nosode, Sarcode or Imponderabilia.
Latin Name
e.g. Arnica montana.
Pharmacopoeia
HPI (India — the usual choice here), HPUS, GHP or BHP.
Vehicle/Medium
Alcohol 90%, Alcohol 60%, Alcohol 40%, Sucrose Globules, Lactose Globules, Cane Sugar Pills or Distilled Water.
Globule/Pill Size
Size 10 (Smallest) through Size 40 (Largest).

Stock Management and Pricing

Opening Stock
What is physically on the shelf right now.
Minimum Stock
The line in the sand. At or below it, the item turns orange and raises a low-stock alert.
Reorder Level
Set it above the minimum: it is the point at which you should be placing the order, not the point at which you are in trouble.
Maximum Stock
Optional ceiling, to stop over-buying.
Unit of Measure
Units, Tablets, Capsules, Bottles, Boxes, Strips, Vials, Ampoules, Tubes, Packets, ml, Grams or Pieces. Every stock number for this item is counted in this unit.
Purchase cost (₹)
What you pay per unit. Never shown to patients.
Selling Cost (₹)
What goes on the invoice per unit. As soon as both prices are in, a green Profit Margin line shows the percentage and the rupees per unit.
Notes and Item is Active
Internal notes, and the tick (on by default) that keeps the item available to prescribing and billing.

Click Create Item.

One item, in detail

Click any row to open the item. The top of the page carries Current Stock (with an orange Below minimum note when it has dropped), Stock Value (stock × purchase cost), Selling Cost with its margin, and the number of Active Batches. The Stock Levels panel puts Minimum, Reorder, Current and Maximum side by side with a bar that runs red, orange or green.

Recent Stock Movements lists the last changes with the quantity and the level before and after each one. Active Batches on the right shows each batch number, what is left of it and Expires: dd/mm/yyyy — orange within 30 days, red once past. For medications, Additional Info repeats whether the item requires a prescription, whether it is controlled, and how it must be stored. Adjust Stock and Edit Item sit at the top.

Stock levels and what the colours mean

StateWhenWhere you see it
Out of StockCurrent stock is 0Red badge on the item list; Out of Stock stat card; a critical alert
Low StockCurrent stock is at or below Minimum StockOrange badge; Low Stock stat card; a high alert; the Adjust Stock button appears on the row
Reorder NeededAt or below Reorder Level but still above the minimumCounted separately in the Stock Health Status chart and in the Low Stock report
HealthyAbove bothGreen badge

Low-stock and out-of-stock alerts are raised for you automatically the moment stock crosses the line — and cleared automatically when it climbs back above the minimum.

Correcting stock by hand

Adjust Stock is how you fix a number without pretending a sale happened. You will find it on any low-stock row of the item list, and always at the top of an item's own page.

  1. 1

    Type the change into Quantity (positive to add, negative to subtract)

    10 adds ten; -5 takes five away.

  2. 2

    Pick a Reason

    Received stock, Stock count correction, Damaged goods, Expired items, Return from customer, Return to supplier or Other.

  3. 3

    Add Notes (optional) if the reason needs explaining.

  4. 4

    Check the New Stock Level: preview, then click Adjust Stock

    The change is written to the transaction log with your name, the reason, and the level before and after.

Batches and expiry

A batch is one delivery of one item: a batch number, a quantity, an expiry date and the price you paid. When an item has batches, its stock is the sum of the batches still active, and dispensing always eats the batch that expires first, so old stock leaves before new stock. A batch flips to expired once it is past its date and to depleted once it hits zero.

Purchase orders

The six tiles are both a count and a filter: All, DRAFT, PENDING, APPROVED, ORDERED, RECEIVED. Click one to show only those orders. Search by PO number or supplier... finds a single order.

New Order builds one: pick the Supplier (only active suppliers are offered), optionally set an Expected Delivery Date and Notes, then click Add Item, search by name or SKU, and click each match to add it as a line. The unit price comes across from the item's purchase cost; change the Qty and Unit Price and the line total and the Order Summary follow. Adding the same item twice is blocked with Item already added. Finish with Save as Draft or Submit Order.

StatusWhat it meansThe button that moves it on
draftStill being writtenSubmit for Approval
pendingWaiting for someone to approve itApprove — or Reject, which cancels it
approvedApproved but not yet placed with the supplierMark as Ordered
orderedPlaced; you are waiting for the deliveryReceive Stock
partialSome lines arrived, some did not— (set automatically)
receivedEverything arrived— (the end of the line)
cancelledRejected or called off

The Status Timeline on the order page draws the same journey with ticks against each stage reached.

Receive Stock is designed to be the moment a delivery becomes stock: for every line you enter the Received Qty that actually turned up, the Batch Number printed on the pack and the Expiry Date, then click Confirm Receipt — which should create a batch, raise the item's stock and log a purchase movement.

Alerts

The orange Check Expiry button is the one people never find. Nothing scans your batches on a schedule — this button is the scan.

Filter with the tabs, each carrying its own count: All, Unresolved, Out of Stock, Low Stock, Expiring Soon, Expired. Every alert card names the item (click it to jump to the item and fix the stock), the kind of alert, the message, the time it was raised, the item's Current Stock, and a Resolve button. The same alerts sit behind the floating alerts button in the corner of every inventory page.

AlertHow it is raisedSeverity
Out of StockAutomatically, the moment stock hits zerocritical
Low StockAutomatically, when stock falls to or below the minimumhigh
ExpiredOnly when you click Check Expiry — the batch is also marked expiredcritical
Expiring SoonCheck Expiry, for batches with 7 days or less lefthigh
Expiring SoonCheck Expiry, for batches with 8 to 30 days leftmedium

Bulk import from Excel

Import Excel (on the items list and on the Add Item page) opens Import Inventory from Excel — a three-step wizard for loading an existing stock list. It accepts .xlsx, .xls and .csv, up to 1000 rows at a time.

  1. 1

    Upload — drag your file in, or click Download template first

    The template already has every column with the right headers. Your own column names do not have to match anything: you map them in the next step.

  2. 2

    Map Columns — check what the wizard guessed

    It reads your headers and maps what it recognises. Set the Header row if your headings are not on row 1, use Import rows: From row / to row to import only part of the sheet, and give any field a Default value to fall back on when a cell is empty. Item Name and Item Type are the only required fields — leave either unmapped and its box stays red.

  3. 3

    Preview & Import — read the first rows, then click the import button

    You get a count of rows, mapped columns, defaults and skipped columns. If anything is wrong you see it per row, as Row 7: ….

The template covers name, item type, SKU, barcode, generic name, category name, supplier name, dosage form, strength, manufacturer, manufacturing date, current stock, minimum stock, maximum stock, reorder level, unit of measure, cost price, selling price, requires prescription, controlled substance, storage conditions, description and notes. It does not carry batch numbers or expiry dates. Every imported item comes in active.

Transaction logs — who changed what

Transaction Logs is the full audit trail: every movement of every item, never edited, never deleted. The table shows Date & Time, Item, Batch, Type, Qty Change, Before, After, Reason and Performed By — so 'who dropped the Arnica by 40?' is a two-minute question, not an argument.

It opens on the last month. Widen it with Start Date and End Date, narrow it with Movement Type and Item, or type into Item name, SKU, batch, reason… — then click Apply. Clear puts it back. Movement types are Purchase, Sale, Dispensed, Adjustment (+), Adjustment (-), Return to Supplier, Customer Return, Transfer In, Transfer Out, Expired, Damaged, Opening Stock and Other; the first group adds stock, the rest take it away.

Reports

Stock Valuation answers the question an owner actually asks: how much money is sitting on those shelves, and how much will it be worth when it sells?
TabWhat it gives you
Stock ValuationTotal Items, Total Units, Cost Value, Selling Value and Potential Profit, then every active item line by line.
Low StockYour reorder list — low stock, out of stock and reorder-needed, each with the current, minimum and reorder numbers and the supplier's name and phone.
Expiry TrackingBatches bucketed as Expired, then 7, 30 and 90 days, with the batch number, quantity and days remaining.
Stock MovementsEverything that moved between the Start Date and End Date you pick, totalled by movement type.

Export CSV on any tab downloads that report as a spreadsheet. Reports and dashboard charts are cached for a few seconds at a time, so give them a moment after a big change.

Admin and pharmacist: who can do what

In practice, almost everything. The pharmacist portal carries its own complete copy of the module — same items, same categories, same suppliers, same purchase orders, same alerts, same reports — just reached from the pharmacist's own sidebar under Inventory.

TaskAdminPharmacist
Inventory dashboard and analyticsYesYes (their own Inventory Management landing screen)
Add, edit, delete items; bulk deleteYesYes
Import from ExcelYesYes
Categories and suppliersYesYes
Adjust stockYesYes
Purchase orders — create, approve, receiveYesYes
Alerts, Check Expiry, ResolveYesYes
Reports and transaction logsYesYes
Dispense a prescription (the thing that actually deducts stock)NoYes

Doctors, front-desk staff and lab technicians have no access to Inventory at all. See Roles and permissions.

How stock actually leaves the shelf

Not from this module. Stock comes off when a pharmacist dispenses a prescription — and that is gated by billing, not by stock: the prescription must have an invoice, and the invoice must have at least some payment against it, or dispensing refuses with Invoice required or Payment required. Bill the patient first. Cancelling an invoice or raising a credit note puts the same quantity back.

Why can't I see Inventory in the sidebar?+

Your plan does not include the Pharmacy & Inventory feature, or you are not signed in as an admin or a pharmacist. Check Plans and billing.

I set a Minimum Stock but I never get a low-stock alert.+

Alerts fire when stock falls to or below the minimum, and they resolve themselves when it climbs back above it. If the minimum is 0, nothing will ever fire — a stock of 0 will still raise an out-of-stock alert, but you get no warning before it.

The item list says my stock is fine, but the pharmacist says there is nothing left.+

Open the item and read Recent Stock Movements and then the transaction log. Every change carries who made it, when, why, and the level before and after — that is where the difference will be.

What is the difference between Minimum Stock and Reorder Level?+

Minimum Stock is the danger line: cross it and the item turns orange and alerts you. Reorder Level should sit higher — it is the point at which you place the order so that you never reach the minimum.

Dispensing failed with a message about a conversion mapping. What now?+

The doctor prescribed in a unit (a dram, say) that has no conversion to the unit the item is stocked in. The system will not guess and deduct the wrong amount. The practical fix is to edit the item and stock it in ml (for liquids and dilutions) or Grams (for triturations); the conversion table itself is managed centrally by the platform, not by your clinic.

Can I delete a purchase order?+

The bin on a draft order does not work yet. Reject a pending order instead — that marks it cancelled and keeps it out of your way.

Still stuck? Email contact@hellohomeo.in and a human will get back to you.