How GalenDesk Pro thinks
Six rules explain most of what the app does. Knowing them first makes every screen below read as obvious rather than surprising.
The six rules
- Your records live on your devices. The pharmacy is a database file on the machine in front of you, not an account on somebody else's server. The app works with the internet off, the power flickering, and the network down — because in the markets it is built for, that is a Tuesday.
- A product is not stock. A product is the thing you sell — a name, a strength, a form. A batch is a consignment of it, with its own cost, its own price and its own expiry date. You add a product once and receive batches against it for years. Selling takes from the batch that expires first.
- Nothing is deleted, things are hidden. A customer who stops coming, a payment method you no longer take, a product you have stopped stocking — all are deactivated, not removed, because last year's sales through them are still on the books and a report that quietly changes is worse than one that shows an old name.
- Roles are data, not code. Eight roles ship with the app, but what each one may do is a table you can edit. A pharmacy that wants its senior technician approving purchase orders changes a row; nobody has to ship a new version.
- Every change is recorded, with its before and after. Not just "the price changed" but "1,200 to 900", who did it and when. That is what makes History evidence rather than a list.
- Money is exact. Amounts are held as whole units of the smallest coin, never as decimals that drift. Currencies without a minor unit — the CFA franc, for one — are handled as themselves rather than being divided by a hundred that does not exist.
Getting in
The first screen a device ever shows asks one question: does this pharmacy already exist somewhere else? Answering it wrongly is the one mistake that is genuinely annoying to undo, so it is asked first and asked plainly.
Set up a brand new premises
Owner only- Open the app on the machine that will be the pharmacy's first device. Choose Set up a new premises.
- Enter the premises name and address. These print on every receipt and head every report, so spell them the way you want customers to see them.
- Create the owner account: full name, username, password. The username is how you sign in; it is not shown to customers.
- Choose a recovery question and answer it. This is not optional, and the reason is on the screen: there is no server behind your password. Nobody at Galen Africa can reset it, because there is nothing to reset it from.
- Finish. The pharmacy opens on the dashboard, empty and ready.
Bring this device into a pharmacy that already exists
Do this instead of setting up againIf a phone or another till already has this pharmacy, join it. Setting up again makes a second, separate pharmacy that shares nothing with the first — the commonest and most expensive mistake there is with software like this.
- On the first screen, choose Join a pharmacy already running.
- Enter the server address and the pharmacy key — the same ones already entered on the pharmacy's other device, under Settings → Synchronisation.
- Press Join this pharmacy. The records and the staff accounts are copied across. On a pharmacy with a year of trading this takes a minute or two.
- Sign in with an account that already exists in that pharmacy. You are not creating a new one.
Sign in, day to day
Anyone- Type your username and password and press Sign in.
- If you have set a PIN on this device, the screen offers Unlock instead — four digits, no username, because a PIN belongs to a device and a person rather than to a name somebody types. Asking for both would make it slower than the password it exists to skip.
- Forgotten it? I forgot my password asks your recovery question and lets you set a new one.
Dashboard
The first screen after signing in, and the one an owner should be able to read in thirty seconds.
Read the figures for a period
Anyone- Pick the period at the top — today, this week, this month, or a range you choose. Every tile, chart and list below reads the same period.
- The tiles cover what came in and what is left of it: takings, profit, sales made, what is owed, and what needs attention on the shelf.
- Under them sit the trend and the recent sales, so a figure that looks wrong can be traced to the sale behind it without leaving the page.
- Anything coloured is a link. Press a tile to land on the screen that explains it.
Choose what the dashboard shows
Changes recordsSettings → Dashboard decides which tiles appear and in what order. An accountant and a storekeeper want different first screens, and this is where that is arranged.
Sell
The counter. The whole screen is built around one measurement: how many actions a sale takes. Scan or type, Enter, tender, Enter. Everything else — a customer, a discount, splitting the payment — is there and out of the way until it is wanted.
Ring up a sale
Anyone who may sell- Scan a barcode, or type a product name into the box at the top. Only sellable stock is offered — anything out of stock, expired, or already spoken for by a prescription is not.
- Press a result to add one unit. Press again to add another, or set the quantity on the line in the cart.
- Add a discount on the whole sale if you are giving one.
- Enter a coupon code if the customer has one, and press Apply.
- Attach a customer if this is an account you invoice or a loyalty member. Most sales are walk-ins and need nobody.
- Choose how they are paying. Cash asks what you were handed and works out the change; less than the total is refused. Transfer, card and mobile money settle elsewhere and are recorded as taken. Customer credit posts to an account and needs a customer attached.
- Press Complete sale. Stock leaves the shelf, first-to-expire first, and a receipt number is issued.
- On Sale complete, the change due is shown large. Print or share the receipt, then press Next sale.
Park a sale and come back to it
Anyone who may sell- Press Hold this sale and give it a name — whose it is, so you can find it again.
- The counter is free for the next customer.
- Open Held sales and press Continue to pick it back up.
Sell something that is not on file yet
Changes recordsIf the search finds nothing, the screen offers Add it to the catalogue — but only when the cart is empty. Adding a product mid-sale would lose the sale, so it says so and asks you to finish first.
Sales
Every sale the pharmacy has ever made, newest first, and the place a receipt gets reprinted.
Find a sale and reprint its receipt
Anyone who may see sales- Search by receipt number or customer name, or narrow by period.
- Open the sale. It shows the lines as they were sold, the prices actually charged, how it was paid and who served it.
- Press Print receipt for another copy. The receipt is sized for a 72 mm till roll and prints the same on the counter machine and a phone.
Void a sale and put the stock back
Cannot be undone- Open the sale and press Void.
- Give a reason. It is required, and it is kept.
- The stock returns to the batches it came from, the takings drop, and the sale stays visible, marked as voided.
Prescriptions
A queue, oldest first, because the prescription that has waited longest is the one somebody is standing at the counter about. The status chip is the whole navigation.
Take in a prescription
Changes records- Press New prescription.
- Choose the patient. A patient is a customer record — if they are new, add them here without leaving the screen.
- Record the prescriber and the prescription's own details.
- Add each item: the product, the quantity, and the directions as written.
- Save. It joins the queue and the stock it needs is marked as spoken for, so the counter cannot sell it out from under the patient.
Check, dispense and hand over
Clinical work- Open the prescription from the queue.
- Work through the clinical check. Interactions, duplication and dose warnings are raised against what the patient is already on.
- Dispense the items. Stock moves at this point, from the batches reserved for it.
- Mark it ready. If the patient's device notifications are on, that is one of only two things the app will interrupt somebody about.
- Hand it over and mark it collected.
Inventory
What the pharmacy holds. The column that matters is Sellable, not "quantity" — expired packs and packs reserved for a prescription are left out, so the list answers "what can I sell" rather than "what is somewhere in the building".
Add a product
Changes records- Press New product.
- Start typing the generic name. The built-in catalogue offers matches with the strength, form and class already filled in — take one and the work is done.
- Nothing matching? Fill it in yourself: generic name, brand, strength, form, class, and whether it is prescription-only.
- Save. The product now exists, but there is no stock yet. That is the next step, and it is a separate one on purpose.
Receive stock
Changes records- Press Receive stock, on the product or from the top of the inventory.
- Enter the quantity, what it cost you, and what you will sell it for. Cost and price belong to the consignment, not to the product: the same item bought twice at different prices is two batches, and pretending otherwise is what makes profit figures untraceable.
- Enter the expiry date. It is required, and a date already in the past is refused — a batch received expired is always a typo or a supplier problem, and the counter is the right place to notice it.
- Record the supplier and the invoice number if you keep them.
- Save. The packs are on the shelf and sellable.
Import a stock list from a spreadsheet
Owner only- Go to Settings → Import data.
- Choose your file. Columns are matched by name, and you are shown what was understood before anything is written.
- Read the summary. Rows that could not be understood are listed with the reason rather than skipped silently.
- Confirm.
Retire a product, or remove it
Cannot be undone- Tick the products in the list and press Remove.
- The app sorts them into two piles and tells you which is which:
- Products nothing refers to are deleted completely.
- Products that appear in past sales, orders or prescriptions are kept but hidden, because deleting them would rewrite history.
- Hidden products come back with Show retired, and Restore puts one back on the shelf.
Needs attention
The state of the shelves right now — not a list of things you have not been told yet. Someone who dismissed a warning last week still needs to see the stock is still low.
Work the lists
Anyone who may see stock- Running out — at or below its reorder level. This is the order you should be placing.
- Expiring and expired — inside the warning window you set, or past the date. Expired packs are already excluded from what the counter can sell.
- Stock with no expiry date — usually imported. Record a date and they join the list above; until then they cannot warn anybody.
Purchases
Orders placed with suppliers. Opens on what is still owed rather than a year of closed paperwork.
Raise an order
Changes records- Press New order and choose the supplier.
- Add the products and quantities. What is running out is the obvious place to start — see Needs attention.
- Save it. The order is open, and the quantities show as on order in reports.
Receive against an order
Changes records- Open the order when the delivery arrives.
- Record what actually came, line by line — a short delivery is recorded as short, not quietly closed.
- Each line received becomes a batch, with its cost, price and expiry date, exactly as if you had received it by hand.
- The order closes when everything on it has arrived.
Suppliers
Who you buy from, and what you have bought from them.
Keep the supplier book
Changes records- Press New supplier and record the name, contact and terms.
- Open a supplier to see the orders placed with them and the batches that came in.
- A supplier you have stopped using is deactivated rather than deleted, because last year's orders still point at them.
Customers
Accounts, patients and anybody you want to see a history for. The same record is a customer at the till and a patient in the dispensary.
Add a customer
Changes records- Press New customer.
- Enter the name and choose the category — a walk-in retail customer, a wholesale buyer, or a hospital or institution. Business categories require a phone number; a retail customer does not.
- Set a credit limit if you will invoice them.
- Save.
Read an account
Anyone who may see customers- Open the customer. Their balance, what they have bought, and what is owed are all on one page.
- Their prescriptions and their loyalty points, if any, are here too.
- Record a payment against the account when they settle.
Campaigns
Messages to a group of customers — a refill reminder, a health day, a new service.
Send to a group
Changes records- Press New campaign.
- Choose who it goes to and write the message.
- Send. Messages queue in the outbox and go out through your own server once a messaging provider is connected to it.
Loyalty
Points and coupons — and, at the top of the page, what they are costing you.
Run a points scheme
Owner only- Set what a point is worth and what earns one.
- Points accrue when a sale is attached to a customer, and are spent at the counter.
- Issue coupon codes here; they are entered on the Sell screen and recorded as used.
Clinical
Two things a pharmacist arrives here to do: find a patient, or clear the interventions still open. Open work comes first, because an intervention nobody closed is a job outstanding rather than a historical note.
Open a patient record
Clinical work- Search for the patient — the same record as the customer at the till.
- Their medication history, allergies and conditions are on the page, with the prescriptions that produced them.
- Record an intervention when you act on something: what you found, what you did, and whether it is resolved.
Delivery
Orders going out to doorsteps, and — first on the page — the cash your drivers are holding.
Send an order out and close it off
Changes records- Press New delivery, attach the sale or prescription, and record the address.
- Assign a driver. The order moves to out-for-delivery.
- When the driver returns, mark it delivered and record the money collected.
Reports
Arranged around one question: can an owner understand the business in thirty seconds? So the order is what came in and what was left of it, then the trend, then the detail behind it.
See what the shop actually made
Owner and managers- Choose the period at the top.
- Gross and net profit sit side by side, not as one "profit" figure. Margins being fine while rent eats the difference is a completely different problem from selling too cheap, and one number hides which you have.
- Below: discounts given, what customers owe, stock on hand and stock on order.
- Then the detail — most profitable products, fastest moving, what has been running out, and stock that is not moving at all.
- How hard the stock is working shows stock turns and days of supply at this period's rate.
- How customers paid breaks the takings down by method.
- Export any of it to work on elsewhere.
Expenses
What the pharmacy spends that is not stock — rent, diesel, wages, licences. Deliberately kept off the reports page: reading a report and recording a diesel purchase are different jobs, done by different people, at different times.
Record what you spent
Changes records- Press New expense.
- Choose a category, enter the amount and the date, and say what it was for.
- Save. It comes straight off net profit in Reports.
Assistant
Three questions a pharmacist would otherwise answer by feel: what to order, what is going to expire on the shelf, and whether anything odd happened this week.
Read the three answers
Owner and managers- What to order — a suggested quantity per product, from how fast it has actually been selling.
- What will expire unsold — packs whose date will arrive before the shelf clears at the current rate.
- What looks unusual — a week that does not match the weeks before it.
Branches
The one screen that deliberately ignores the branch you are working in, and shows every branch at once.
Work in a branch, and compare them
Owner and managers- The switcher in the header sets the branch you are working in. Stock, sales, expenses and orders everywhere else follow it.
- This screen ignores it. Nothing scoped to one branch can answer which branch is performing, so the comparison is the whole point of the page.
- Add a branch here when you open one. Each device works as one branch, which is what keeps two tills from ever writing the same stock row.
Staff and roles
Who works here is one screen; what a role may do is another. Keeping them apart matters — putting a permission matrix in front of somebody adding a cashier is how the matrix gets changed by accident.
Add somebody, or take them off
Owner only- Press New staff member. Name, username, first password.
- Give them a role. Eight ship with the app: Owner, Administrator, Manager, Pharmacist, Pharmacy technician, Cashier, Storekeeper and Accountant.
- When somebody leaves, deactivate them. Their sales and their entries in History stay exactly where they are.
Change what a role may do
Cannot be undone lightly- Open Roles from the staff screen.
- Choose one role. It is deliberately one at a time, not a grid: eight roles across twenty-four subjects is over fifteen hundred checkboxes, and a grid that size is one nobody reads before clicking.
- Tick and untick. It saves as you go.
History
Everything anybody has done to the pharmacy's records, with the value before and the value after.
Check who did what
Owner and managers- Filter by person, by kind of change, or by date.
- Read the row. "Price changed" answers nothing; "1,200 to 900" answers the question you actually came with — so the before-and-after is on the row, not behind a detail page.
- It is paginated, because this is the one table that only ever grows.
Settings
Everything about how this pharmacy runs, in one place. Some of it changes what customers see; some of it changes what the app does.
What is in here
Mostly owner only- Premises — name, address and registration number. These appear on receipts and reports.
- Receipt footer — what prints under the totals on every receipt.
- Alert thresholds — how many days before an expiry counts as a warning, when it becomes urgent, and what counts as running out.
- Payment methods — a pharmacy in Lagos takes bank transfer and POS; one in Accra takes mobile money. Add what you take. A method is switched off rather than removed, because last year's payments through it are still on the books.
- Dashboard — which tiles appear, and in what order.
- Import data — bring a product or stock list in from a spreadsheet.
- Security — the devices this pharmacy has been opened on, and recent sign-ins.
- Synchronisation — see More than one device.
- Notifications — see Notifications.
- Subscription — see Subscription & payment.
- Sharing — partners you have allowed to read this pharmacy's data through the API. Nothing is readable until you enable it here.
Check the devices on your pharmacy
Owner only- Open Settings → Security.
- Every machine the pharmacy has been opened on is listed, with when it was first and last seen. A device you do not recognise is the signal worth acting on.
- Read the recent sign-ins, successful and failed.
- Mark a device as not trusted if you need the record.
Subscription & payment
What it costs to keep trading, and how long is paid for.
The free sales, and what happens after them
Everyone should know this- A new pharmacy gets five sales — one to test the till, and four more — with everything working.
- After that, a subscription is needed to sell, receive stock, take in a prescription or dispense one.
- Everything else keeps working: reading, reports, history and export are never switched off.
Pay for a year
Owner only- Open Settings → Subscription.
- The price is set for you: ₦150,000 a year for a pharmacy in Nigeria, $120 a year for one outside it. There is no monthly option.
- Enter an email for the receipt. Paystack sends it there and it is used for nothing else.
- Press the pay button. Paystack opens in the same tab — not a popup, because a popup is what a blocker eats, and a pharmacist who sees nothing happen presses the button again, which starts a second payment.
- Pay. You are brought back to the app and the year is applied automatically. There is nothing to copy.
How it works when the internet is down
Worth knowingThe licence is a signed file held on your device, not a check made over the network. The till works out for itself whether the pharmacy may trade, so a shop that cannot reach the internet on a Tuesday morning still opens and still sells. The only moment a connection is needed is the payment itself.
More than one device
One counter needs nothing here. A pharmacy with a phone at the counter and a machine in the office, or with two branches, needs this page.
Connect a pharmacy to its server
Owner only- Open Settings → Synchronisation.
- Enter the server address and the pharmacy key you were given when the pharmacy was registered.
- Save. The page then shows whether this device is up to date, and how many changes are still waiting to be sent.
- Do the same on every other device, with the same key.
How synchronising actually behaves
Worth knowing- It happens by itself. A few seconds after this device changes something — a sale, a delivery received, a price edited — it sends. It also does one round when the app opens, so what the other till did overnight is there before you look.
- Nothing polls the server while the counter is quiet, which matters on a phone paying for its own data.
- Synchronise now is still there for when you want to be sure. One press sends everything queued and brings down everything waiting, however much that is.
- No signal is not an error. Changes stay on the device, the page keeps showing how many are waiting, and the next attempt sends them.
Overwritten changes
Anyone who may see syncThe list at the bottom of the synchronisation page. Each row says what happened and keeps the version that lost, in full, so you can read it or put it back. Press Seen to clear one once you have looked.
One entry you may see is a renumbered receipt. If two tills both sold while neither could see the other, they can issue the same receipt number; when they meet, one sale keeps the number and the other has four characters added to it. Both sales are kept — the renumbering is recorded here so nobody is left wondering why a receipt looks unusual.
Notifications
The bell inside the app, and the two things worth interrupting somebody about when it is closed.
Be told when the app is closed
Per device- Open Settings → Notifications on this device.
- Press Turn on and allow it when the browser asks.
- Only two things are ever pushed: a product runs out of stock, and a prescription is ready to collect.
Choose what the bell shows
Yours aloneSettings → Notifications controls what appears in the bell on this device. It is yours — other staff keep their own. Security and subscription warnings cannot be switched off.
Theme, language, phone
Setting up your own till the way you like it.
Make it yours
Anyone- Light and dark follow the machine. A phone that goes dark at night takes the app with it.
- Language — English, French and Arabic, with Arabic laid out right-to-left throughout. Clinical and dispensing wording stays in English.
- On a phone, the sidebar is a drawer: the button at the top left opens it, tapping beside it or pressing Escape closes it.
- On a wide screen, the sidebar scrolls on its own and stays put while the page moves. Fold the groups you do not use; it remembers per device.
- Set a PIN for this device if you unlock it often. Four digits, and it is destroyed after five wrong tries.
When something looks wrong
The handful of things that actually come up, and what they mean.
Common messages
| What you see | What it means |
|---|---|
| The free sales are used up | Five sales have been made and no subscription is paid. Reading and reports still work. See Subscription. |
| Your role cannot … | Not a fault. Someone with the Owner or Administrator role can grant the permission under Staff and roles. |
| Changes waiting to be sent | This device has work the server has not taken yet — usually no connection. Nothing is lost. It sends itself when the connection returns. |
| Not connected to a server | No synchronisation is set up. Correct and expected for a single-counter pharmacy. |
| A product does not appear when selling | It has no sellable stock: none received, all expired, or all reserved for a prescription. Check it in Inventory. |
| Storage is not persistent | The app is running somewhere it cannot save — a private window, or a browser blocking site data. Use the installed app, or a normal window. |
| This browser is blocking notifications | Permission was refused for the site once. Only the browser can allow it again — the padlock beside the address. |
Habits worth keeping
- Receive stock as it arrives, not at the end of the week. Every figure in the app is downstream of this one.
- Put a real expiry date on every batch. A batch without one cannot warn anybody.
- Void rather than delete. A voided sale with a reason is a record; a deleted one is a hole.
- Give people their own account. History is only worth reading if the names in it are real.
- Open the app on the second device now and then, even if nobody sells on it, so it stays in step.
Getting help
If the table above does not cover it, there is a person at the other end of all of these.
When you write in, say what you were doing and what the screen said. A receipt number, a product name, or the exact wording of a message gets to an answer far quicker than “it is not working”.