Eight modules. One pharmacy.
From the rack number on a bottle of syrup to end-of-day sales reports — purpose-built for small to medium size pharmacies and medical stores.
8
Modules, one login
34
Tracked fields per product
5
Built-in report types
4+
Roles, plus unlimited custom
Built for what's actually on the label.
A generic product form was never going to fit a pharmacy. Medishelf's product record carries 34 fields a pharmacist actually needs — from schedule class to pregnancy category — so nothing gets tracked in a side notebook. This is the layer that makes Medishelf a genuine medicine inventory management system rather than a retail tool with medicine bolted on.
Identity & composition
Regulatory & clinical
Store operations
Every batch, tracked to the unit.
Products don't lose stock in one lump — they lose it in batches, at different costs, from different suppliers, expiring on different days. Medishelf's ledger records every one of those movements, and the POS terminal reads straight from it to sell the earliest-expiring batch first (FEFO), automatically.
- MOVEMENT TYPES
- Purchase · Sale · Damage · Return · Adjustment
- PER BATCH
- Cost price, selling price, supplier, expiry
- Low-stock alerts on the dashboard and a dedicated alerts page
- Inventory value report shows total stock valuation at cost or retail
- Manual stock adjustments always require a reason, logged against the batch
STOCK MOVEMENT LEDGER
Every row above is a real entry in a pharmacy stock management system, not a summary — so a stock discrepancy can always be traced back to the exact purchase, sale or adjustment that caused it.
Fast enough for a lunchtime queue.
A pharmacy point of sale and inventory system only earns its place at the counter if it's faster than the queue, not slower. Medishelf's terminal is built keyboard-first, searches as you type, and settles every sale against the server before it prints — so a busy till never oversells a batch or checks out at the wrong price.
Search
Discount
Checkout
Clear cart
Search by name, barcode, or composition
Results appear as you type, with arrow-key navigation to the right item.
Automatic FEFO batch selection
A "best expiry" badge shows exactly which batch a sale will draw from.
Item and cart-level discounts
Apply a percentage to one line, or to the whole transaction.
Customer lookup at checkout
Link a sale to a customer to update loyalty points and lifetime spend.
Cash, card, UPI & split payments
Take part-cash, part-card on the same invoice without a workaround.
Server-verified pricing
Every price is checked against the server before checkout, not just the screen.
Oversell protection
Two tills open on the same batch can never both check out the last unit.
Auto-numbered invoices
Every sale gets a sequential invoice number, searchable in invoice history.
Lifetime spend
$1,240
Loyalty points
312
Store credit
$15.00
Last visit
2 days ago
Every regular customer, remembered automatically.
A customer record updates itself at every sale — no separate loyalty spreadsheet, no manual point-counting at the register. Link a sale to a customer once, and lifetime spend, loyalty points, and last-visit date all stay current on their own.
- Contact details, date of birth and free-text notes per customer
- Outstanding balance and store credit tracked per account
- Loyalty points accumulate automatically on every purchase
The cashier shouldn't see the P&L.
Four built-in roles cover most stores on day one, and the Owner role always keeps full access so nobody can lock themselves out. When the defaults don't fit, build a custom role from module-level permissions — view, create, edit, delete — across every part of the system.
Permission modules
Actions per module
Owner
Full access, always
Manager
Store operations & reports
Pharmacist
Products & dispensing
Cashier
POS terminal only
Five reports, one habit: check them daily.
The dashboard opens on the five numbers a pharmacy owner actually checks each morning, then lets you drill into a full report for any of them, filtered by date range — today, yesterday, the last 7 or 30 days, or a full month.
Turn on a daily PDF summary — revenue, profit, top products and low-stock alerts — delivered by email at a time you set, in your store's own timezone.
DASHBOARD · TODAY
Today's sales
$2,180
Monthly profit
$9,640
Inventory value
$41,200
Low stock items
14
Expiring within 30 days
7 batches
The same five figures anchor the dashboard whether you check it once a day or once an hour — no separate export needed to see where things stand.
If it changed, it's logged.
Every edit records a before-and-after state, the IP address and browser it came from, and a correlation ID for tracing a problem back to the exact request that caused it. Passwords, tokens and emails are redacted automatically before anything touches a log file, so the audit trail stays useful without exposing sensitive data.
action: PRODUCT_UPDATED
field: selling_price
before: $96.00
after: $102.00
ip: 10.0.4.18
correlation_id: c7f1-9a2e
Your data, isolated from every other pharmacy on Medishelf.
Medishelf is multi-tenant software: every product, batch, sale and customer record is scoped to your store at the database layer, so no other account can query or view it. Getting set up is a guided three-step flow, not a support ticket.
Guided onboarding
Create your store, set country/currency/timezone, then choose a plan — three steps, no setup call required.
Rate-limited logins
Login attempts are capped per minute, per account, to slow down anyone guessing a password.
Encrypted passwords
Passwords are hashed before storage — nobody at Medishelf can read a staff member's actual password.
Self-service password reset
A reset link expires after one hour, so a forgotten password never becomes a standing risk.
Validated input, every request
Every form and API call is checked against a strict schema before it touches your data.
Localized per store
Country, currency and timezone are set once at onboarding, so reports and taxes line up from day one.
See it running on your own product list.
Or read how five small pharmacies put these modules to work in real case studies.