POS software for pharmacies and medical stores

Batch numbers, expiry dates and rack locations built into the way you bill — not bolted on afterwards. Codipy POS sells the oldest stock first, warns you months before anything expires, and keeps working when the internet does not.

A pharmacy loses money in a way most shops do not: quietly, on the shelf, months before anybody notices. A box bought in good faith sits behind a newer one, reaches its expiry date, and becomes a write-off that no sales report ever explained. The second loss is the one that costs a customer — a strip handed over that expires next week, and a person who does not come back.

Both problems have the same root. Ordinary billing software treats a medicine as one number, so it cannot tell you which box is going out of the door. Codipy POS treats it as batches. Every purchase records the batch and its expiry, every sale takes from the batch that expires first, and the shelf drains in the order it should. You do not have to remember any of it while there is somebody waiting at the counter.

Built for the way a pharmacy actually trades

Choose this business type during setup and these are the modules Codipy switches on for you.

Batches and expiry on every line

Enter the batch number and expiry when the stock comes in, and Codipy carries it through the sale, the return and the report. The invoice shows which batch went out, so a recall means one query rather than an afternoon with a torch.

FEFO — first expired, first out

The till allocates from the batch that expires soonest without being asked. A newer box cannot jump the queue because it was nearer the front of the shelf, which is how expiry losses happen in the first place.

Expiry alerts, early enough to act

The dashboard lists what expires in the coming months while there is still time to return it to the supplier, move it to a busier branch, or push it. An alert on the day of expiry is a receipt for money already lost.

Rack locations

Each product carries its rack — A-3, B-1 — and it shows on screen as you bill. A new counter assistant finds the medicine at the speed of somebody who has worked there a year.

Salt names and alternates

Search by the trade name or by what the customer actually says. Products carry an alternate name field, so the box the doctor wrote and the box on your shelf find each other.

Credit accounts that behave

Regular customers and nearby clinics run on udhaar. Balances build per party, today's call list puts the oldest debts in front of whoever is chasing them, and a payment against an old bill lands where it belongs.

The Codipy POS business type picker, showing which modules each trade switches on
This is the one setting that makes it your kind of shop. The struck-through chips are the modules another trade needs and you do not.

A day at your counter

Stock arrives

Purchase → New Purchase. Supplier, their bill number, then each item with its batch and expiry. Whatever you have not paid is recorded as owed to that supplier, so the payables list is right without a second entry.

A customer at the counter

Scan or type the medicine. Codipy picks the batch that expires first and shows the rack while it does. Quantity, next item, F4 to take payment.

Somebody brings a strip back

Sales → Return by Invoice #. Tick the lines coming back. Stock returns to the batch it came from, and a line can only be returned once — the till will tell you if the rest already came back last week.

Mid-afternoon

Check the expiry list. Anything inside three months is still a conversation with your supplier; anything inside one month is a discount decision.

Closing

Day Close prints the Z-report. Cash counted, credit given, what each staff member billed — tallied against the drawer before anybody goes home.

What you get

  • Batch-wise stock with expiry dates on every purchase and sale
  • FEFO allocation, so the oldest stock always leaves first
  • Expiry and low-stock alerts on the dashboard
  • Rack / shelf location shown while billing
  • Customer credit (udhaar), instalments and a recovery call list
  • Home delivery with riders and the cash they are carrying

And everything underneath

  • Keyboard-first billing, split payments, holds and returns
  • Built-in double-entry accounting and party ledgers
  • HR, attendance, payroll and staff commissions
  • 50+ reports, all printable and exportable to CSV
  • WhatsApp invoices, reminders and campaigns
  • Works offline: one server PC, unlimited counters

Questions we get asked

Can it handle two batches of the same medicine at different prices?

Yes. Each batch keeps its own purchase price, expiry and quantity while remaining one product on the shelf and in search. The sale takes from the batch expiring first and records which batch went out, so your margin report is worked out against what you actually paid for that box.

Will it warn me before medicines expire?

Yes. The dashboard carries an expiry list and you set how far ahead it looks. The point is to see it while the stock can still be returned or moved, so the default window is months rather than days.

Does it work if my internet goes down?

It does not use the internet to sell. The database and the billing screen are on your own PC, so a dead connection is not felt at the counter at all. Internet is only used for WhatsApp messages, FBR invoicing, online backups and the phone app.

Can I run two counters in the same pharmacy?

Yes. Install the same setup file on the second PC and choose Client — it finds the main PC on your network automatically. Stock moves in real time between them, so two people cannot sell the same last box.

What about doctors and clinics who buy on account?

They become credit parties. Every credit sale posts to their balance, the recovery screen lists the oldest first, and you can send a reminder over WhatsApp from the same list rather than copying numbers into your phone.

Try it on your own counter

Download Codipy POS for Windows, choose Pharmacy during setup, and see how your shop feels on it. If it fits, we'll help you move your products, your customers and your balances across.