Clinic profile
This is the clinic's own details - name, owner, contact and location. It's what prints on receipts and shows in the header, separate from the Clinic On the Go app itself.
Branding - make it yours
Your own logo and background tint, just for this clinic - synced to every device signed into it. This is separate from clinic type, which stays with your platform administrator.
How staff join this clinic
There's no code to hand out - a staff member's own PIN is their identity. Add them under Staff below with their name, role, and a PIN, then tell them that PIN. They can type it into this same app on their own phone, anywhere, anytime - the app finds this clinic automatically and pulls everything in.
This desk
Only matters if there's more than one desk - reception and the pharmacy window, for example. This label is set per device, not synced, so each desk can be told apart in the header and on its receipts.
Clinic type
This sets what the billing screen looks like - categories, starter services and medicines, and whether items are tracked as stock or billed as a service. Changing it doesn't delete anything you've already added. What type(s) this clinic is set to is controlled by your platform administrator, not changed here.
Running more than one clinic type on this desk? Turn this on to pick several in one go.
This device - technical details
Useful when something looks wrong and you need to see exactly what this specific device currently thinks is true, instead of guessing.
A full re-sync from the server is available to your platform administrator - contact them if this device looks out of date and reloading doesn't fix it.
Feed stock
Log new stock received. Only shown and sold for the currently active clinic type - switch clinic type first if you're adding SKUs for a different one. Cost price is what it feeds Reports' profit numbers - worth filling in even if you skip it at first.
Inventory
| Product | Category | SKU | Stock on hand | Cost | Price | Margin |
|---|
Suppliers
Your registered suppliers - this list is what the Supplier dropdown in Feed Stock pulls from, and it's what auto-generated purchase orders group by.
Reorder needed
Anything below its reorder point, grouped by supplier. Products with no supplier set can't be turned into a PO until one is added above.
Purchase orders
Every PO created from Reorder needed. When the supplier delivers, open it, enter their invoice number, optionally attach a photo of the invoice, and mark it received - stock updates automatically.
Add a supplier invoice
Pick the payment terms agreed with this supplier - the due date sets itself from there, though you can still adjust it by hand.
Outstanding - you owe suppliers
Paid - history
Record a patient credit
For a patient treated now who pays later - write it down here so nothing gets forgotten.
If you know roughly what the medicines and supplies cost you, add it here - once this credit is paid, the difference counts toward that day's profit in Reports, same as a normal bill. Leave blank and the full amount counts as profit once paid.
Owing - patients who haven't paid yet
Paid - history
Insurance claims
Bills sent to SHA or a private insurer. Submit each claim, then mark it paid when the money arrives - it counts as income in Reports on the day it is paid. A rejected claim moves to Patient Credit, owed by the patient.
Dispensing record
Every medicine handed out at the desk: who it was for, the dose the doctor wrote, who prescribed it and who gave it out.
Awaiting review
When a nurse removes something, the bill keeps moving - this is where it lands afterward so an admin or doctor can see the reason and clear it, with a proper trail either way.
Reviewed - history
Sold above list price - today
Staff can raise an item's price at the desk - never lower it. The extra is part of the bill itself, so it is already inside Revenue and Profit in Reports. This page shows where it came from: who raised what, by how much, and whether an administrator has looked at it yet.
| Staff | Items raised | Extra collected |
|---|
Awaiting review
Every bill that included a raised price, newest first, from any device at this clinic. An Admin can clear any of them; a Doctor can clear other people's, not their own.
Reviewed - today
Balance owed by staff
Cash an employee took from the clinic (advance, float, own use) minus what they have repaid. Anyone can log a cash-out from the desk; it goes through with a reason and lands here for an admin or doctor to review.
Awaiting review
History
Add staff
Each person needs their own PIN - checked as unique across every clinic on the platform, not just this one. Give someone their PIN and they can sign in with it on their own phone, anywhere, and the app finds this clinic automatically.
Roles, in short
Nurse - registers patients, checks them in and takes payment; 4-digit PIN. Removing a line or clearing a bill is never blocked, but it's sent to Admin → Removals for an administrator or doctor to review afterward.
Doctor - everything a nurse can do, plus can remove items or clear a bill straight away (no review needed, still fully logged) and approve what nurses send for review.
Administrator - full access: Stock, Reports, Sync setup, staff and everyone's role. Administrator PINs are 6 digits - longer on purpose, so they are harder to pick up by watching the keypad.
Staff list
Role is a dropdown you can change any time without deleting the account. Revoke turns off someone's PIN without deleting their history. You can have as many nurses and doctors as you need.
| Name | Role | PIN | Email (for Forgot PIN) | Status |
|---|
Attendance - sign-in times
Every sign-in and sign-out, whether from the header logout or the desk's Lock button, most recent first.
| Name | Role | Signed in | Signed out | Duration |
|---|
Audit log
Every sign-in, staff change, patient file opened, void approval, and admin-access event, timestamped. This tab is visible only when you're actually signed in as an Admin - a manager-override PIN can't reach it.
| Time | Who | Role | Action | Details |
|---|
By clinic type
This desk bills for more than one clinic type - so the combined total above can hide a weak one behind a strong one. Here's each one on its own.
| Clinic | Revenue | Profit | Items sold | Stock purchased |
|---|
By payment method
Split out so you can see cash vs M-Pesa separately, but they always reconcile back to the same revenue total above.
| Method | Bills | Total |
|---|---|---|
| Cash | 0 | KSh 0 |
| M-Pesa | 0 | KSh 0 |
Profit & Loss - today
Built from the same bills, stock and credit records as the stats above - not a separate ledger, so it always matches.
Balance Sheet - as of now
A simplified snapshot, not full double-entry accounting: stock is valued at cost, and there's no separate cash-on-hand ledger, so "Cash & M-Pesa" below is everything collected since records began, not a real desk count. Good for a directional picture, not a statutory filing.
Bills by staff - today
Who billed what, by whoever was signed in at the desk - consultations, lab tests, procedures and medicines. Useful for commission or performance pay without needing a separate system.
| Staff | Bills | Items | Revenue | Avg. bill |
|---|
Cash-up & money check - today
Per staff member: cash, M-Pesa and credit taken; whether every M-Pesa bill carries its confirmation code (last 3 digits is enough); any code used on more than one bill; and what each person has borrowed from the clinic. Anything to look at is shown in red - you should see no short or excess.
| Waiter | Cash | M-Pesa | Credit | M-Pesa check | Borrowed |
|---|
Stock: this morning vs now
Only tracked for today - opening stock is captured once, the first time the desk is opened each day.
| Product | Opening (this morning) | Sold today | Received today | Now |
|---|
Bills - today
| Time | Staff | Items | Total | Synced |
|---|
Stock received - today
| Time | Product | Qty | Cost |
|---|
Clinic Code
Enter this once on any new phone or computer to connect it to this clinic. Staff then sign in with their own PIN. Share it only with your own staff.
Use this if the code has leaked. Phones already connected stay connected; only new phones need the new code.
License & devices
What this clinic's plan costs, the date it is paid up to, and the phones and computers linked to it. Paying before the date passes means the clinic never locks.
Devices linked to this clinic
Sign in as the Admin to see and manage linked devices.
Tax (VAT)
Prices at the desk are tax-inclusive - VAT is already inside the price shown on each tile, not added at checkout. Turning this on just splits it out on the receipt and in reports so it's visible, without changing what the patient pays. The toggle applies immediately - no separate save needed.
Fingerprint security (this device)
A one-time fingerprint enrollment, per administrator/doctor, per physical device. Once enrolled, an instant (unreviewed) item removal, a refund, and opening admin/settings with a PIN will all ask for this device's fingerprint as well - if someone else has learnt a PIN, they still can't use it for these without also having this device and this finger. This is stored only on this device (never synced online), so each administrator/doctor enrolls separately on every device they actually use. Until enrolled on a given device, those actions on that device go through on the PIN alone, and each one is noted in the Audit Log - enroll below to require the fingerprint as well.
When on, this person can tap their fingerprint on this device's login screen instead of typing their PIN. Needs enrolling above first.
Credit bills
Not every clinic extends credit - off by default. Turn this on to let nurses ring up a bill as "Credit" right at the desk, tied to a real cart (so stock still deducts correctly), with an agreed payment date. It's recorded under Patient Credit, and counts toward revenue and profit the day it's actually paid, not the day it was sold.
Receipts & printer
A web page can't tell whether a printer is physically plugged in - browsers don't allow that for privacy reasons. Instead, "Print" opens the normal print dialog: if a printer is set up on this device, it shows up there and prints for real; if not, the same dialog lets you choose "Save as PDF." One button covers both cases - that's genuinely how it needs to work from a browser.
Backend connection
This clinic's connection to the platform is managed centrally and isn't something a clinic admin can change - that's what keeps every clinic's data reliably syncing to the right place. Contact your platform administrator if this ever needs attention.
Personal backup - Google Drive
Backup connections are managed by your platform administrator. Contact them if you'd like this set up for your clinic.
Online / offline behavior
This isn't a toggle you manage day to day - it's automatic.
The app watches the device's real network state. Lose signal mid-bill and nothing changes for the
nurse - bills keep ringing up, stock keeps deducting, everything queues locally. The moment the
connection is back, queued bills and stock updates drain to the backend on their own. The button below
is only there to test that flow on demand, without physically switching off wifi.
One thing to set up once you host this for real: the page itself needs to survive a reload with zero
network too - that's what manifest.json
and sw.js (included alongside
this file) handle. Host all three together and open the app once while online - after that, it opens
offline, cold, with no connection at all.
Test how offline bills queue, then flush on reconnect.