Drug & Supplies Inventory
Stock cards for a clinic: the 8 columns, a worked example, FEFO, counting and reorder points
A stock card that actually works has 8 columns, and the two an aesthetic clinic usually skips are lot number and expiry date — the two that make FEFO possible, and the only two that help when a product is recalled. This guide has a filled-in example, what to do when a count doesn't match, a reorder-point formula with worked numbers, and where Excel stops being enough.
Published Updated 20 min read

The short answer
- A stock card is the movement record for one product at one branch, with a running balance on every line — not a summary produced at month-end.
- The 8 minimum columns: date · reference document · lot number · expiry date · quantity in · quantity out · balance · who recorded it. WHO requires comprehensive records of receipts, storage and issues carrying at least the date, product name, quantity received or supplied, supplier and customer, batch number and expiry date.
- Anything with an expiry date rotates by FEFO — first expiry, first out — not FIFO, which goes by receipt order. FEFO is impossible if the card has no lot and expiry columns.
- A clinic holding narcotics or psychotropics (midazolam, ketamine, phentermine, diazepam) keeps a separate FDA ledger and files a monthly report within one month of month-end. An internal stock card does not replace that set of books.
- When a count disagrees with the card, find the cause and post a new adjustment line with a reason and an approver — never erase or overwrite. WHO asks for root cause and CAPA, not a corrected number.
- Reorder point = (average daily usage × lead time in days) + safety stock. Three worked examples are in the guide.
01What a stock card is, and what columns it needs
A stock card is the record for one product at one branch. Every time stock moves, one line is added, and the end of that line says what is left. Its entire value is in the word running — if you cannot say how many vials were on the shelf last Tuesday afternoon, what you have is a summary report, not a stock card.
WHO sets the minimum in its guidance on storage and distribution of medical products (TRS 1025, Annex 7). Clause 17.10 says comprehensive records of all receipts, storage, issues and distribution should be kept, including at least the date · name and description of the product · quantity received or supplied · name and address of supplier and customer · batch number · expiry date. Clause 13.1 says stock levels for every product should be maintained, on paper or electronically, and updated after each operation — entries, issues, losses and adjustments. Translated into columns on a clinic's card, that is:
- Date — the day the stock actually moved, not the day someone found time to write it up.
- Reference document — goods-receipt number, visit number, inter-branch transfer note, or adjustment number. A line with no reference is a line nobody can trace.
- Lot number — the column aesthetic clinics most often skip, and the one that makes a lot-specific recall possible.
- Expiry date — only stock from the same lot shares an expiry. Two lots received in the same month are two lines, never one.
- Quantity in and quantity out as separate columns — not one column with negative numbers, which are the easiest thing on a handwritten card to miss.
- Balance — calculated from the line above, never a number somebody typed over the top.
- Recorded by — a person's name, not a department, because when the balance is wrong the first question is who to ask.
Date3 Aug 2026
- Reference
- Opening balance
- Lot
- —
- Expiry
- —
- In
- —
- Out
- —
- Balance
- 4
- Recorded by
- —
Date5 Aug 2026
- Reference
- GR-2026-0388 goods receipt
- Lot
- C4402T
- Expiry
- 31 Mar 2027
- In
- 6
- Out
- —
- Balance
- 10
- Recorded by
- Parichat, RPh
Date7 Aug 2026
- Reference
- OPD-006712 procedure
- Lot
- C4402T
- Expiry
- 31 Mar 2027
- In
- —
- Out
- 1
- Balance
- 9
- Recorded by
- Nattarika, RN
Date12 Aug 2026
- Reference
- GR-2026-0412 goods receipt
- Lot
- C4521T
- Expiry
- 30 Jun 2027
- In
- 10
- Out
- —
- Balance
- 19
- Recorded by
- Parichat, RPh
Date14 Aug 2026
- Reference
- OPD-006840 procedure
- Lot
- C4402T
- Expiry
- 31 Mar 2027
- In
- —
- Out
- 2
- Balance
- 17
- Recorded by
- Nattarika, RN
Date19 Aug 2026
- Reference
- TF-2026-0031 transfer to Thonglor
- Lot
- C4402T
- Expiry
- 31 Mar 2027
- In
- —
- Out
- 3
- Balance
- 14
- Recorded by
- Parichat, RPh
Date26 Aug 2026
- Reference
- ADJ-2026-0009 monthly count adjustment
- Lot
- C4521T
- Expiry
- 30 Jun 2027
- In
- —
- Out
- 1
- Balance
- 13
- Recorded by
- Parichat, RPh
Date31 Aug 2026
- Reference
- Closing balance
- Lot
- —
- Expiry
- —
- In
- —
- Out
- —
- Balance
- 13
- Recorded by
- —
02FEFO is not FIFO, and an aesthetic clinic needs FEFO

WHO defines FEFO (first expiry / first out) as a distribution procedure ensuring the stock with the earliest expiry date is distributed or used before an identical item with a later expiry date, and clause 12.30 says plainly that stock should be appropriately rotated and the FEFO principle should be followed. FIFO decides by the order stock was received, which is a different question — and it gives a different answer the moment a supplier delivers a shorter-dated lot after a longer-dated one, which happens with refrigerated goods more often than people expect.
What differsWhat decides which unit goes out
- FIFO
- The order it arrived in the store
- FEFO
- The nearest expiry date
What differsMinimum data the card must carry
- FIFO
- Date received
- FEFO
- Lot number and expiry date, on every line
What differsWhen a shorter-dated lot arrives later
- FIFO
- The earlier receipt still goes first, so the short-dated lot sits until it expires
- FEFO
- The earliest-expiring lot goes first, regardless of when it arrived
What differsWhat goes wrong if you get it wrong
- FIFO
- The cost released does not match the goods used
- FEFO
- Expired stock sits on the shelf and has to be written off or returned
What differsSuits
- FIFO
- Items with no expiry date
- FEFO
- Drugs, fluids, fillers, botulinum toxin, cosmeceuticals — anything with an EXP
For an aesthetic clinic this is not only about waste. Much of what the clinic holds is cold chain stock that has to stay within a defined temperature range at all times, and it is injected into people. When a manufacturer announces a recall, the questions that must be answerable the same day are: when did that lot arrive, how many units, who received it, and how much is left. WHO clause 10.7 requires distribution records to hold enough information to trace products supplied, naming batch numbers and quantities explicitly. A clinic whose stock card has no lot column cannot answer that, however diligent its staff are.
03Products the law requires a separate receipt-and-issue ledger for
A stock card a clinic designs for itself is a management tool, not a statutory form. But a clinic that holds narcotics or psychotropic substances also keeps a separate set of ledgers and reports on Thai FDA forms, which must be filed. The Narcotics Control Division summarises the forms for healthcare facilities as follows.
CategoryNarcotics category 2 · psychotropics category 2
- Ledger form
- บ.ย.ส.2/ว.จ. 2-จ1 (patient treatment) · บ.ย.ส.2/ว.จ. 2-จ2 (drug distribution unit)
- Monthly report form
- ร.ย.ส.2/ว.จ. 2-จ1 · ร.ย.ส.2/ว.จ. 2-จ2
- Deadline
- Within 1 month of month-end
CategoryPsychotropics categories 3 and 4
- Ledger form
- บ.ค.-2
- Monthly report form
- ร.ค.-4/เดือน
- Deadline
- Within 1 month of month-end
CategoryNarcotics category 3
- Ledger form
- —
- Monthly report form
- ยส.วจ./เดือน
- Deadline
- Within 1 month of month-end
04What a fully filled-in stock card looks like
Below is one card header with all 8 columns that every line has to carry. The numbered markers match the order used in this guide. Print it as a template — for paper, for an Excel sheet, or as a checklist for whether the system you are about to buy has all the fields.
Stock card · Botulinum toxin type A 100 U
Product code BTX-100 · unit: vial · store at 2–8°C · Sukhumvit branch
- Date
- 12 Aug 2026 — the day stock actually moved, not the day it was written up
- Reference
- GR-2026-0412 (goods receipt) · or a visit number · or a transfer note · or an adjustment note
- Lot number
- C4521T — copied off the actual box, not off the purchase order
- Expiry
- 30 Jun 2027 — a different lot is always a different line
- Quantity in
- 10 vials
- Quantity out
- — (its own column; never a negative number in the 'in' column)
- Balance
- 19 vials — calculated from the line above, not typed over
- Recorded by
- Parichat, RPh (signed) — a person, not a department
An adjustment line needs a 9th field: the reason, and who approved it
05Counting: cycle counts, full counts, and what to do when it doesn't match

A card nobody counts against is a card nobody knows is true. WHO clause 13.1 requires periodic stock reconciliation at defined intervals, comparing actual stock with the recorded figure. Clause 13.2 requires the root cause of a discrepancy to be identified and corrective and preventive actions taken so it does not recur. Clause 13.4 requires stock to be checked at regular intervals to find items close to expiry and remove them from usable stock. Note that none of the three mentions an annual full count.
Action research at Mukdahan Hospital shows frequent counting is both achievable and worth it. The pharmacy team ran a daily inventory-accuracy assessment form alongside a FEFO system across 1,053 pharmaceutical items for 9 months (Dec 2024 – Aug 2025), over 24 assessment rounds covering 21,908 item checks. Average quantity accuracy came out at 99.99%, lot and expiry accuracy at 99.68%, and FEFO shelf-arrangement accuracy at 99.75%. More to the point, the value of medicines that had to be returned or exchanged fell from 1,377,678.66 baht in fiscal 2024 to 956,585.64 baht in 2025 — a 30.60% reduction.
GroupHigh value, or legally controlled
- Examples in an aesthetic clinic
- Botulinum toxin, fillers, anything on the psychotropics list
- How often to count
- Weekly, or at every shift handover
GroupFast moving
- Examples in an aesthetic clinic
- Topical anaesthetic, needles, fluids, daily consumables
- How often to count
- Monthly
GroupSlow moving and low value
- Examples in an aesthetic clinic
- Gauze, gloves, treatment-room consumables drawn in bulk
- How often to count
- Quarterly
GroupFull count of the whole store
- Examples in an aesthetic clinic
- Every item, with movement frozen during the count
- How often to count
- Once a year, on the accounting cycle
Freeze movement on that item first
No issues until the discrepancy is understood, or the number moves again before anyone works out when it went missing.
Recount, with a different person from the first count
A fair share of discrepancies disappear here, because they were a skipped box or the wrong unit rather than missing stock. Recount before escalating.
Work backwards to the last line where the balance was right
A card with a balance on every line lets you bracket when it happened, leaving a handful of lines to check instead of a year of them.
Find the cause, not just a number that matches
The usual causes: stock used in a visit was never deducted; damaged or expired stock was binned without a line; a transfer to another branch was posted on one side only; units were mixed up between vials and boxes. Each one has a different fix.
Post the adjustment as a new line, with a reason and an approver
Never erase or overwrite. An adjustment is a movement like any other, and it should be approved by someone other than the person who counted. This is the point where a stock card stops being a file anyone can edit.
For narcotics and psychotropics, don't fix the internal card alone
The FDA-form ledger has to reflect reality too. Ask the Narcotics Control Division or your provincial public health office how a discrepancy should be corrected and reported in that set of books.
06Reorder points: the formula, with three worked examples
A good stock card tells you what is left; it does not yet tell you when to order. That number is the reorder point: reorder point = (average daily usage × lead time in days) + safety stock. Lead time is how long it really takes from placing the order to stock reaching the shelf, not what the supplier says. Safety stock covers the busier-than-usual week and the late delivery. Take the average from your own stock card over the last three months — not from a feeling.
ItemBotulinum toxin 100 U
- Avg use / day
- 0.8 vials
- Lead time (days)
- 7
- Safety stock
- 3 vials
- Reorder point
- 9 vials
ItemHA filler 1 ml
- Avg use / day
- 1.5 syringes
- Lead time (days)
- 14
- Safety stock
- 8 syringes
- Reorder point
- 29 syringes
ItemTopical anaesthetic cream 30 g
- Avg use / day
- 2.0 tubes
- Lead time (days)
- 5
- Safety stock
- 5 tubes
- Reorder point
- 15 tubes
Setting reorder points does not mean holding more stock. A study at Pattaya City Hospital applied a continuous review inventory policy with simple moving-average forecasting and a 0.5-month lead time, and compared it with the existing way of working. Average monthly inventory value fell by 8.6–24.5% while the average annual inventory turnover rate rose by 9.4–32.8% — less cash tied up and faster-moving stock at the same time, because the reorder point came from real data instead of ordering ahead just in case.
07Is Excel enough, and where does it break
Excel can absolutely run a stock card, and for a single-branch clinic with a few dozen items and one person recording, it is enough. The problem is not that Excel can't — it is that Excel enforces nothing. A lot column nobody fills in still saves. A balance typed over its formula raises no warning. A cell edited yesterday leaves no trace of what it used to say. The dividing line is not the number of items; it is which of these you need enforced.
The jobA running balance on every line
- Paper card
- Added by hand; one slip runs on forever
- Excel
- A formula does it, until someone inserts or deletes a row
- A stock system
- Derived from the movements; it cannot be changed later without a trace
The jobLot number and expiry
- Paper card
- Possible, if every line really gets written
- Excel
- Possible, but you design it yourself and it usually ends up an empty column
- A stock system
- A required field at goods receipt
The jobEnforcing FEFO on issue
- Paper card
- Relies on whoever reaches into the fridge
- Excel
- Relies on whoever reaches into the fridge
- A stock system
- The earliest-expiring lot is offered automatically
The jobWarning on stock near expiry
- Paper card
- Someone has to walk the shelves
- Excel
- Someone has to open the file and filter
- A stock system
- Set how many days ahead, and it warns you
The jobSeveral people working at once
- Paper card
- One at a time, queueing at the folder
- Excel
- Clashing files, or one called "final_really.xlsx"
- A stock system
- Concurrent entry
The jobMultiple branches
- Paper card
- A folder per branch and no overall view
- Excel
- Merged by hand at month-end
- A stock system
- Balances per branch, with a combined view
The jobA trace of who changed what, when
- Paper card
- Handwriting, crossings-out and a signature
- Excel
- None — an edited cell leaves nothing behind
- A stock system
- Every line carries a user and a timestamp
The jobTied to what was actually used in a visit
- Paper card
- Copied across from the chart afterwards
- Excel
- Copied across from the chart afterwards
- A stock system
- Deducted straight from the visit's line items
08Setting up a clean stock card system in a week
Day 1 — decide what gets a card
Start with high-value items, refrigerated items and legally controlled ones. You do not need everything at once; most clinics have no more than 30–50 items in that group. Gloves and gauze can follow later.
Day 2 — fix one unit of measure per item
Vial, or box, or unit — pick one and write it on the shelf label. A large share of the discrepancies found at counting come from two people using two different units, not from missing stock.
Day 3 — do an opening count, lot by lot
Count the physical stock and write down the lot number and expiry from the box. This becomes the opening-balance line on every card. It happens once, so make it as accurate as you can — everything afterwards runs on from these numbers.
Day 4 — set reorder points and safety stock
Use the formula above on three months of history. If you have no history, guess and diarise a review in a month. A wrong number that gets reviewed beats a blank nobody comes back to.
Day 5 — write down who records, and when
One rule matters: record when the stock moves, not at the end of the day, and the person who takes the stock is the person who records it. Having one person write it all up in the evening is where the data starts drifting.
Day 6 — set the count cadence and the near-expiry warning
Put actual dates in an actual calendar for which group is counted when, and decide how many days ahead of expiry you want to be warned. The warning window has to be long enough to still use or return the stock, not just long enough to know it expired.
Day 7 — run it for one full day, then recount in the evening
Take the 5 fastest-moving items and count them against the cards at close. If all 5 match, the rules you wrote work. If they don't, you found the hole on day one instead of at year-end.
09Common mistakes
- One card covering several branches — a correct total with no idea where the stock is, is of no use. One card per item per branch, and a transfer is posted on both sides.
- No lot column, because "we remember" — right up to the day a manufacturer recalls one lot and you have to say who it was injected into.
- A balance typed over instead of calculated — the first time someone types over it, the card stops being a stock card, and nothing shows you which line it stopped at.
- Editing history instead of posting an adjustment — the number matches again, but whatever caused the mismatch is still there and will be back next month.
- Deducting at end of day from memory — the cancelled procedure, the vial that was dropped, and the item pulled but not used are the three things a six-o'clock memory never has all of.
- Opened or reconstituted stock never recorded — a reconstituted vial has a far shorter usable life than a sealed one. If the card still counts it as full, the balance is right on paper and useless on the shelf.
- Mixed units of measure — "3 left" meaning boxes to one person and syringes to another creates more variance than theft does.
- Counting only the expensive things — a cheap item running out mid-procedure stops the day just as effectively, and it is usually the one nobody owns.
10Self-audit checklist
Take the cards for your three most expensive items and run them against this list. It takes about ten minutes. Anything you cannot tick is a gap you now know about, which beats one you don't.
- One card per product, per branch
- Every line carries the date the stock actually moved
- Every line carries a reference document you can open
- Every line for a dated product carries a lot number and an expiry date
- Quantity in and quantity out are separate columns, with no negative numbers
- Every balance adds up from the line above
- Every line names the person who recorded it, not a department
- Issues always take the earliest-expiring lot (FEFO)
- Adjustment lines carry a reason and an approver who is not the counter
- The lot actually used is recorded in the visit's chart, not only in the store
- Count rounds are in a real calendar, not "when there's time"
- Narcotics and psychotropics have their separate FDA-form ledger as well
In Flow Clinic
Stock held as lots, deducted first-expiry-first for you
Flow Clinic's inventory module holds stock as lots with a lot number and an expiry date, and records every movement as an append-only line — it cannot be edited or deleted — carrying the user, the timestamp and the branch.
- Receiving against a purchase order creates the lot with its lot number and expiry date, and issues deduct from the earliest-expiring lot automatically, FEFO-style — or from a lot you name, when the lot actually used is recorded.
- Balances are held per branch, and an inter-branch transfer is posted on both the sending and the receiving side, with the lot keeping its identity across branches.
- Stock used in a procedure, sold at the counter, or drawn from a course package is deducted with a reference back to the source document and the patient, and the cost is captured from the purchase price of the lot actually consumed.
- Set a minimum reorder point per item, override it for individual branches, and set how many days ahead of expiry you want warning — plus the count cadence for each item.
- In a stock-count round the counter enters figures without seeing the system quantity, and the variance has to be approved by someone holding a separate permission before it becomes an adjustment line referencing the counted row.
- Product labels print straight from the inventory module, with a choice of Thai name, English name, product code, clinic code and a cold-chain marker.
Sources
- WHO Good storage and distribution practices for medical products (TRS 1025, Annex 7) — World Health Organization, 2020 — FEFO definition · §12.30 stock rotation · §13.1–13.4 stock control and reconciliation · §17.10 what a record must contain
- Narcotic reporting for healthcare facilities (การจัดทำรายงานวัตถุเสพติดของสถานพยาบาล) — Narcotics Control Division, Thai FDA — ledger forms, report forms and deadlines (Thai)
- Psychotropic substances: the four categories and example substances — Narcotics Control Division, Thai FDA (Thai)
- Research and development of medicine inventory management using the FEFO system and a daily inventory accuracy assessment technique, Mukdahan Hospital — Journal of Research and Health Innovation Development, Vol. 6 No. 3 (2025), pp. 462–475 (Thai)
- Development of an efficient drug inventory management system for Pattaya City Hospital — Thai Journal of Pharmacy Practice, Vol. 16 No. 4 (2024) (Thai)
Frequently asked questions
- Is a stock card the same thing as a bin card or an inventory ledger?
- They are names for the same thing: a record of stock in and out for one product, with a balance on every line. Some clinics call it a drug control card or a consumables card depending on what it tracks. The name matters far less than whether it has all 8 columns and whether anyone counts against it on a cadence.
- We're a small clinic with 30 items. Does every one need a card?
- Not all at once. Start with high-value items, refrigerated items and legally controlled ones — usually the group holding most of the money despite being few in number. Low-value consumables can follow. What you should not do is run that first group half-heartedly.
- How many years do we have to keep stock cards?
- WHO clause 13.1 says only that records should be kept "for a suitable period of time and as required by national legislation" — it names no number of years. For narcotics and psychotropics, which have their own FDA-form ledger, ask the Narcotics Control Division or your provincial public health office for the retention period that actually applies. Do not assume it from the retention rule for some other kind of document.
- The count came up short. Do we have to report it to anyone?
- For ordinary stock, it is yours to handle — find the cause, post an adjustment with a reason and an approver, and close the gap that let it happen. But if it is a narcotic or a psychotropic, the shortfall also affects the ledger and the report filed with the FDA. In that case contact the Narcotics Control Division or your provincial public health office for the right procedure, rather than quietly adjusting the internal card.
- Should we use FEFO or FIFO?
- FEFO for anything with an expiry date — WHO clause 12.30 says stock should be rotated on the first-expired-first-out principle. FIFO applies to items with no expiry. In an aesthetic clinic almost everything worth putting on a stock card has an EXP, so the answer is FEFO nearly across the board.
- Moving from Excel to a system — do we have to count everything again?
- You need one count, but it is not starting over. Count the physical stock with lot numbers and expiry dates, and load that as the opening balance. An old Excel sheet usually has no lot breakdown, so it cannot be carried across as-is anyway. Treat the count as setting a correct starting point, then keep the old file read-only. Do not run both in parallel — one of them will stop being updated.
- Do we need barcodes or a scanner?
- Not for most clinics. Barcodes buy speed and fewer typing errors, which pays off past a few hundred items or when goods arrive in large deliveries. What pays off before barcodes, always, is having the lot and expiry columns filled in and counting against the card on a cadence.