User manual
Everything the POS does, organised by task. Nothing here needs an account. Bookmark it, or print it for the counter.
Shop User Manual
The step-by-step guide for the people who run a shop on this POS: owners, managers and cashiers.
This manual is task-oriented: find what you want to do, follow the numbered steps. It uses the real screen and button names, so you can follow along on-screen. It does not cover installing or building the software, or running the vendor's licensing panel. Those live in the developer and operations docs (see the documentation map).
> A note on money and dates. Every amount you see is in your shop's currency, and every date and total is counted in your shop's timezone, and both are chosen once in Settings. Change the currency later and past bills keep the currency they were rung up in.
Contents
- Before you start
- Getting your shop running (Owner)
- Signing in & recovering a password
- Ringing up a sale (Checkout) (Cashier & up)
- Returns & refunds (Manager & up)
- Customers & credit
6b. Loyalty points
- Products & inventory (Manager & up)
- Categories (Manager & up)
- Suppliers & purchasing (Manager & up)
9b. Expenses (petty cash) (Cashier & up) 9c. Closing the day (shifts & the Z-report) (Cashier & up)
- Dashboard & reports (Manager & Owner)
- Running more than one till (LAN) (Owner)
- Printing & barcode scanners (Owner)
- Settings reference (Owner)
- Backups, export & restore (Owner)
- Licence & staying up to date
- Getting help
- Keyboard shortcuts
- Quick troubleshooting
1. Before you start
Who can do what
Every person who works in the shop signs in with their own email and password. What they can see and do depends on their role. The shop starts with three built-in roles, and the owner can change what each one is allowed to do, or create new roles (see §13).
The table below is the standard starting point. If you bought through a supplier they may have set your shop up with a different list, or with extra roles. Either way they are yours from day one, and Settings → Roles can change every one of them. The Owner role always has full access and cannot be limited, so a shop can never lock itself out.
| Task area | Cashier | Manager | Owner |
|---|---|---|---|
| Checkout, Bill History, Help & Feedback | |||
| Customers: view, search, create, receive a payment | |||
| Expenses: record money paid out of the till | |||
| Shifts: open, close and count this till, record cash in / out | |||
| Dashboard | |||
| Customers: edit, delete, cancel a payment | |||
| Expenses: edit or cancel an entry | |||
| Shifts: see every till's shifts, not just this computer's | |||
| Products, Categories, Suppliers, Purchases, Returns, Reports | |||
| Change a price at the till · Cancel a bill | |||
| Settings, Staff & roles, Devices, License, Activity log, Backup |
> A cashier's home screen is Checkout, not the dashboard, because a till is for selling. The owner can grant the dashboard (or anything else) to any role.
> A manager can also sign off one action at a cashier's till. When the app refuses something a cashier isn't allowed to do (changing a price, cancelling a bill, discounting past your maximum), it offers a Manager approval box instead of a dead end. The manager types their own email and password, the app checks them, and that one action goes through. It does not sign them in: the cashier stays signed in, the bill keeps the cashier's name, and the manager's name is recorded beside the action in the Activity log. The approval expires after two minutes, so it can't be saved up for later. > > A discount above your maximum always needs one, because that limit applies to everybody. Price changes and cancellations don't by default, since anyone whose role allows them can do them alone, but you can require an approval for those too, in Settings → Sales → Manager approval, if you'd rather every one of them was witnessed.
Throughout this manual, each section header notes the role needed. "Cashier & up" means a cashier, manager or owner can do it. Hiding a menu item is never the only control. The app also checks your permission on the server, so you can only ever do what your role allows.
Signing in and finding your way around
- After you sign in, you land on the Dashboard if your role can see it, otherwise straight on Checkout.
- The left sidebar lists only the screens your role can open. At the bottom it shows your email and role, an Online / Offline indicator, and Sign out.
- Press Ctrl + K (⌘ + K on a Mac) at any time to open the command palette, one search box that jumps to any screen or action you're allowed to open. Full keyboard shortcuts are in §17.
Sorting a list
Every list screen (products, customers, suppliers, bills, purchases, orders, expenses, promotions, card offers, returns, shifts, the stock ledger) has a sort box in the grey strip above the table, beside the filters.
- Lists start with the newest thing first, so what you added, bought or rang up today is at the top.
- Each choice says which way round it goes: Newest first, Oldest first, Name A-Z, Price high to low, Biggest bill, Stock low to high, Worst variance first, and so on. There is no separate up/down switch to get wrong.
- Clearing your filters does not change the order. The sort box is yours until you change it.
- Two screens deliberately have no sort box: Categories, because shelves are shown as a tree and any other order would break it, and Count & Adjust Stock, which stays in name order because that is how you walk a shelf.
If you prefer the old alphabetical order on products, customers or suppliers, choose Name A-Z. The app remembers your choice for as long as you stay on the screen.
Sounds and pop-up alerts
The app makes a noise at the counter, so you don't have to watch the screen to know what happened.
- A short beep means an item went on the bill, however you added it: scanned, picked with the arrow keys, or tapped as a tile.
- A lower, falling two-note tone means the opposite: the app found nothing for what you scanned. Listen for this one. Your scanner beeps when it reads a code, which is not the same as the app finding it. Without this tone it is possible to scan an item, hear the scanner, and put it in the customer's bag without it ever reaching the bill.
- A different two-note buzz means the app refused something (a save, a charge). The message on screen says why.
- A save that worked makes no sound at all. That is deliberate: an app that beeps at everything is one you stop listening to.
Important alerts also pop up outside the app. Things that need someone (stock has run out, a till is waiting to be approved, a licence or version deadline) appear as a pop-up from the computer itself, so you see them even when the app is minimised and you are working in something else. Click the pop-up and the app comes up on the right screen.
Turning them off (on this computer). Click your name at the bottom of the sidebar → Sounds & alerts. There are two switches: Play sounds and Pop-up alerts. Use Test to hear the chime.
Three things worth knowing:
- These settings apply to that computer only. Turning sound off at the back-office PC leaves the counter beeping, which is usually what you want.
- Pop-ups outside the app need the installed app. A phone or tablet used as a till through its browser still makes the sounds and still shows everything inside the app; it just can't pop up over other windows.
- If pop-ups stop appearing, check the computer first. Windows Focus Assist and Mac Focus / Do Not Disturb hide notifications from every app, and the app has no way of knowing they did.
Online vs Offline
This POS is built to keep working with no internet: sales, printing, stock, customers, reports and backups all work offline. Only four things need a connection: activating your licence, the background licence re-check, sending a support ticket, and password-reset emails. When you're offline these simply wait quietly; you'll never see an error screen for them. The sidebar indicator tells you which state you're in.
2. Getting your shop running
(Owner: this is the very first person to set up the computer)
First-run setup
The first time the app opens on a new computer it walks you through a three-step wizard. You need an internet connection once for this step.
- Store: enter your shop's name and type (Pharmacy, Grocery, Retail, …). The app detects your country, timezone and currency from the computer and fills them in, so check they're right and correct them if not. The timezone decides which day a sale is counted on, so it matters.
- Owner account: your full name, email and a password. This becomes the shop's Owner account.
- Security: choose a 4-digit recovery PIN (you'll use it to reset a forgotten password when there's no internet, so keep it safe), and accept the Terms of Service and Privacy Policy.
Finish the wizard and the app registers your shop with the vendor and takes you to licence activation. (If you can't reach the internet, the wizard tells you and you can try again. This is the one step that needs a connection.)
Activating your licence
You'll have received a licence key from the vendor that looks like AB3F9K2M-7XQP4RTZ-….
- On the Activate screen, paste the key.
- Click to activate. The app checks the key with the vendor and locks it to this computer.
That's it: the shop is ready. The licence is tied to this one PC; copying the app folder to another machine will not work (see §15 for moving to new hardware).
What to do next
Your shop starts with no products in it. There are three ways to fill it, and most shops use more than one:
- Import a spreadsheet. If your list is already in Excel, in Google Sheets, or in an export from the till you are leaving, Products → Import takes it. See §7. This is the quickest route for anything more than a handful of items.
- Start from a ready-made catalogue. If your list is not written down anywhere, the same Import screen offers product lists we have prepared for your kind of shop. Download one, tick what you stock, and it is added. See §7.
- Add them as you go. At the till, scanning or searching for something you don't have yet offers Add new product (name, price, stock, done) and the sale carries on. Over a week or two the catalogue builds itself out of what you actually sell.
- Add them one at a time. Products → Add product, for the full detail.
Then set your tax rates (Settings → Tax), add your suppliers (§9) and, if you want the drawer counted at close, turn on shifts (Settings → Sales, §9c).
You don't have to remember any of that. The Dashboard shows a short "Finish setting up your shop" card listing exactly what is still outstanding, with a button beside each one. Items tick themselves off as you do them and the card disappears once nothing is left, so there is no list to maintain and nothing to mark as done. It shows each person only what they can actually do, so a cashier sees far less of it than the owner. If you would rather get on without it, the ✕ on the card hides it on that computer.
If you would rather we did the setup for you, that card is also where any current offer from us appears, with a WhatsApp button to start the conversation. You can find it again later under Settings → License.
Restoring or moving your shop to a new computer
If you already have a shop and a backup file, because you're replacing the PC or reinstalling after wiping it, use Restore instead of starting fresh.
- On the welcome screen choose "Already have a shop? Restore it here."
- Enter your licence key and pick your backup file (the
.jsonfile from §14). - The app verifies the licence, restores everything in the backup, including staff logins and settings, and reconnects you to the same shop record. You need internet for this step.
- Sign in with your existing email and password.
If the licence is still tied to your old computer, the app offers a self-serve move: it emails a one-time code to your shop's registered email address, you type it in, and the licence releases from the old PC and binds to the new one, with no call to the vendor needed.
3. Signing in & recovering a password
Signing in
Enter your email and password on the Login screen. Two safeguards run in the background: after 5 wrong passwords an account is locked for 15 minutes, and the same message shows for a wrong email or a wrong password (so nobody can fish for which emails exist).
> Your computer's clock must be roughly right. If the clock is more than about 10 minutes off, sign-in is refused with a plain "your date & time is off" message. Fix the clock in Windows and try again. (See the wrong-clock entry in §18.)
If you forget your password
Open Forgot password. There are three tabs:
- Email link (needs internet): enter your email; if it's registered, a reset link is emailed to you. Open it and set a new password.
- Recovery PIN (works offline): enter your email, the 4-digit PIN you chose at setup, and a new password. After 5 wrong PIN tries this is locked for 15 minutes (and staying locked survives an app restart).
- Support code (needs internet): the last resort when you've lost both your password and your PIN. Phone the vendor; they'll read you a one-time code. Enter your email, the code, and a new password. The code works once and then expires.
4. Ringing up a sale (Checkout)
(Cashier & up)
Checkout is the till screen, built for speed. The search box is focused automatically and re-focuses after every action, so you can keep both hands on the scanner or keyboard.
Add items to the cart
- Scan a barcode: the scanner types the code and presses Enter; the exact item is added. Scanning the same item again just adds one to its quantity. (An exact barcode match always wins, so a scan can never ring up the wrong product.) A product can answer to several codes (the case EAN as well as the inner-pack one, say), and any of them works. If your shop has a counter scale that prints its own labels, scanning one adds the item with the weight already filled in (set up once in Settings → Sales → Weighing scale, see §7).
- Search by name: start typing; use the arrow keys to move through the results and Enter to add the highlighted one.
- Tap a quick-pick tile: for anything you sell all day and can't scan. Tap the beside a search result to pin a product, and it appears as a one-tap tile whenever the search box is empty. Your tiles are yours (another cashier signing in on the same computer sees their own), and you can pin up to 24. Tap the on a tile to unpin it.
- Narrow by category: use the category filter if the list is long. With the search box empty, choosing a category shows that whole category as tiles instead of your pinned ones, so you can browse it by touch.
- Item not in the catalogue yet? If you have the products permission, a search with no match shows Add new product. Fill in the name, its category, how it's sold, its prices and the opening stock, and it drops straight into the cart. A missing item never stops a sale. It's the same short form the purchase screens use (§9), so an item first met at the counter is filed and priced properly rather than landing as an uncategorised loose end.
Listen as well as look. A short beep means the line went on the bill. A lower, falling tone means the code matched nothing, so the item is not on the bill, whatever your scanner beeped. See §1 for the full list of sounds and how to turn them off on a particular computer.
In the cart, each line shows the item, quantity (with − / + buttons and an editable box), unit price and line total. Set a quantity to 0 to remove the line.
> Discount one line. Tap a line's total to take a fixed amount or a percentage off just that item, for a dented tin or a box with a torn label, with a short reason. The line shows its old total struck through beside the new one, and the receipt prints Less … against it. It's a discount like any other, so it counts towards your shop's maximum and needs the same manager's sign-off to go past it. Tap it again and enter 0 to take the discount off.
> Promotions apply themselves. If the shop is running an offer that covers an item, the till charges it without anyone doing anything: the line shows the offer's name in green with the ordinary price struck through, and the receipt shows both. Where two offers overlap, the customer gets the better one. See §7 for setting them up.
> Selling by weight. For a product set up to sell by weight or measure (see §7), type the amount straight into the quantity box, such as 1.5 for a kilo and a half. The unit shows beside the box and the price column reads "per kg", so there's no doubt what you're charging. The − and + buttons still move by a whole unit. A product that isn't set up that way only takes whole numbers, and tells you if you try a fraction.
> Batches and expiry dates. An Expires soon or Expired badge appears beside a line when its stock is going out of date, so you see it before the customer is standing there. If your shop has chosen to block expired stock, the till refuses it at Charge and names the product. You never pick a batch, because the app takes the one expiring soonest, and if a quantity spans two batches the finished bill shows them as separate lines, each with its own batch number, which is what the receipt prints.
Attach a customer (optional)
Only needed for a credit sale or to keep a customer's history. Open the customer picker, search by name, phone or customer code, and select. No match? Type the name and press Enter to create a new walk-in customer on the spot.
Take payment
The subtotal, tax, discount and total update live as you work.
- Choose the payment method: Cash, Card, Wallet, or Credit (unpaid). The method sets the tax: your shop can charge a different tax rate per method (set in Settings → Tax), and switching the method re-figures the tax instantly, shown beside the tax label.
- Apply a discount (if your shop allows it): type a fixed amount or a percentage; a small toggle switches between the two and shows the live equivalent. This one comes off the whole bill; to reduce a single item, tap that line's total instead. If any lines were discounted, a Line discounts row appears above the box so you can see the two apart. If the owner has capped discounts, anything over the cap is blocked, and the cap counts everything taken off the bill, lines included. How a discount off the whole bill affects your tax is a setting the owner chooses. See §13.
- For cash, up to four quick-cash buttons appear (the total rounded up to the nearest 10, 50, 100, …), so you can tap one instead of typing. Change appears in green the moment the cash tendered beats the total.
- For credit, the amount due shows in amber. A credit sale must have a customer attached, because the app won't let you extend credit to nobody.
Split a payment across two methods
A customer wants Rs 2,000 on their card and will hand over Rs 500 in cash, or wants to pay part today and put the rest on their account. Tap Split payment above the payment box.
- Each line is a method and an amount. The first is filled in from what you had already chosen, so you are adding a second payment rather than starting again.
- + Add payment adds another line; the ✕ beside a line removes it.
- Remaining shows what is still to be covered. Tap it to drop that amount straight into the next empty line, with no mental arithmetic.
- Press Charge when nothing is remaining.
A few rules the app will tell you about rather than quietly working around:
- Each method once per bill. Two cash lines are just one cash line.
- Only the cash line may be over the amount due, because you cannot get change back off a card. Over-tender the cash and the Change figure appears as usual.
- A bill can't be part unpaid and overpaid at the same time.
- Anything left on account still needs a customer, and only that part is added to what they owe.
> If your shop charges a different tax rate per payment method, a split bill is taxed at the rate of whichever payment covers the most. The tax has always applied to the whole bill, and splitting how it's paid doesn't split the bill. The line under the payments tells you which rate is being used, and it updates as you type, so the total never changes at the last second. If your shop charges one rate for everything, none of this applies.
The receipt lists each payment separately, so the customer's copy shows exactly what went on the card. At cash-up, only the cash part of a split bill is counted into the drawer, and if you later refund such a bill, the cash comes back in the same proportion it was paid.
> Nothing changes if you don't use this. Leave Split payment alone and the payment box works exactly as it always has.
Complete the sale
Press Charge. In one step the app checks stock, assigns the next bill number, records the sale, reduces stock, and (for credit) adds the balance to the customer. If anything fails, the whole sale rolls back, including the bill number, so there are never gaps. Overselling is impossible: if the last unit was taken by a double-click or another till in the meantime, the sale is refused with a clear message rather than driving stock negative.
The cart clears and the receipt opens in a small window and prints itself. If your printer fails, you get a warning and a visible receipt window, so a jammed printer never loses a sale that's already rung up.
The receipt shows each line's unit price as well as the quantity and the amount, so a customer can check a line without doing the sum, and it names who served them, which is useful when someone comes back a week later with a question.
Hold a bill and serve the next customer
A customer forgets their wallet, or goes back for one more thing. Press Hold (or F4) and the whole bill (items, quantities, the customer, the discount and the payment method) is set aside under a number, with an optional label you'll recognise ("blue jacket", a name). The till clears and you serve the next person immediately.
Press Held bills (or F2) to see everything on hold: its number, label, customer, item count, total, and who set it aside on which counter. Recall puts it straight back on the till; Discard throws it away.
Three things worth knowing:
- Holding does not reserve the items. They stay on sale, so a held bill never costs you a sale to the customer actually in front of you. If the last one goes in the meantime, the recalled bill is refused at Charge with the usual "not enough stock" message rather than selling something you don't have.
- The bill is priced when you charge it, not when you hold it. If a price changes in between, the new price applies. If a product has been deleted or deactivated, that line is left off and you're told which.
- Recalling takes the bill off the list. On a shop with several counters that means two cashiers can never both ring up the same held bill: whoever gets there second is told it's already been taken. Any counter can recall any held bill, so a customer coming back to a different till is never sent away.
Bills nobody comes back for are cleared automatically after 30 days.
Start the bill again
If the customer changes their mind about the whole lot, Clear bill (or F8) drops the items, the customer and the discount together. It asks first, because unlike holding there is nothing to recall it from afterwards.
Reprint a receipt, without leaving the till
The receipt printed badly, or the customer is back at the door with a query, or the card slip needs filing. Press Recent bills (or F3) on the checkout screen and the last bills are right there: bill number and time, customer, item count, how it was paid and the total, ten to a page. Reprint gives the customer's copy, Merchant copy the shop's copy with a signature line. A bill that has been cancelled shows struck through.
If your role can open Bill History, a link at the bottom of the panel takes you to the full screen for date filters, the running total and cancelling a bill. The panel keeps to the one job.
*If your role does not have Bill History, the panel still works: it shows the bills you rang up yourself, and says so. Reprinting the receipt you just handed over should never depend on being allowed to read the whole shop's takings. (The same is true of the Bill History screen itself if you reach it by link: it is headed Your Bills* and shows only yours.)
Bill History (Cashier & up)
Bill History lists every past sale, filterable by date range and paged 50 at a time. Each row shows the bill number, date, customer (or "Walk-in"), cashier, item count, payment method and total, with a Reprint link. The header shows the total across the whole filtered set, not just the visible page.
Beside Reprint is Merchant copy, the same bill headed MERCHANT COPY with a customer signature line instead of your footer message, which is the copy you keep for a card payment. It prints exactly the way a reprint does.
Cancelling a bill rung up wrong (Manager & up)
If a bill was rung up by mistake, Cancel bill on its row undoes it properly, so you no longer have to fake a return.
- Press Cancel bill on the bill.
- Pick a reason (wrong item, wrong price, wrong customer, test bill, customer cancelled, other) and add a note if it helps.
- The dialog lists exactly what will be reversed. Confirm.
Every item goes back into stock, in the batch it was sold from. Anything that went on the customer's account comes back off. The bill stops counting towards your day's takings, your reports and your dashboard.
The bill is not deleted. It stays in the list, struck through, showing who cancelled it and why. A gap in your bill numbering with nothing to explain it would be worse than the mistake. A reprint of a cancelled bill prints CANCELLED across the top.
> You can only cancel a bill while the till's shift is still open. Once you have closed and counted a shift, its end-of-day report is a signed record of what was in the drawer, and changing a bill inside it would contradict a figure you wrote down. After that, record a return instead, which is what a return is for.
5. Returns & refunds
(Manager & up)
Returning items from a sale
- Open Returns → New return.
- Type the bill number and press Find. The bill's lines appear, each with a "return qty" box capped at what was originally sold.
- Enter the quantities to return.
- Choose why it is coming back (faulty, wrong item, changed mind, expired, other) and how the refund is paid. Leave it on "Same as the bill" whenever the money goes back the way it arrived, and the app works it out from the original bill. Choose one deliberately when it does not: put a cash sale back on a card and the till will not expect that money out of the drawer at cash-up. Add a note if the reason doesn't cover it.
- Process return.
The app refunds a fair, tax-inclusive share of each line (the customer gets their tax back too), puts the items back into stock, and, if the original sale put anything on account, reduces the customer's balance by what that bill actually left owing, never by more. On a bill paid half in cash and half on account, the return first cancels what is still owed and only the rest is money back; the drawer expects exactly that rest, and no more. It also stops you returning more than was sold across several partial returns. The History tab lists past returns, including who processed each one and how it was paid back.
> Picking the reason from the list rather than typing it is what lets you ask, later, how much did we lose to faulty goods this year. The note is still there for anything the list can't say.
Returning stock to a supplier (purchase returns)
- Open Purchase Returns.
- Search by invoice number or supplier name and pick the purchase. Each line shows how much has already been returned, so the boxes cap at what's genuinely left.
- Enter quantities, add a reason, and Process return.
The app credits a fair share of what was actually paid for each line, takes the goods off stock, and, for a credit purchase, reduces what you owe that supplier. One rule matters: you can't return stock you've already sold on: if the goods have left the shelf, the return is refused rather than driving stock negative. The History tab lists past purchase returns.
6. Customers & credit
(View & receive payment: Cashier & up · Edit, delete & cancel: Manager & up)
Every customer gets a unique code (CUST-000001). Phone and email are optional. The balance due (shown in amber when they owe money) is your shop's accounts receivable: it goes up when a sale is rung up as Credit, and down when goods are returned or the customer pays.
Add a customer
From the Customers list, add a customer (or create one on the spot at the till, see §4). A cashier can create a customer but only a manager can edit or delete one.
Sell on credit
Attach the customer at the till, choose Credit (unpaid) as the payment method, and Charge. The unpaid amount is added to their balance.
Receive a payment (Cashier & up)
- Open the customer's page (click their name) and press Receive payment, at the top of the page beside their name.
- The amount is pre-filled with their full balance (paying it all off is the common case), so adjust if it's a part payment.
- Choose Cash, Card, Wallet or Bank transfer, add a cheque number or reference if any, and record it.
Each payment gets a receipt number and records who took the money. Paying more than is owed is refused.
Set a credit limit (Manager & up)
On the customer form, Credit limit is the most this customer may owe at once. Leave it blank for no limit, which is how every customer starts, so nothing changes until you set one.
Once set, a credit sale that would take them past it is refused at the till, saying what the limit is and what they already owe. The till warns you as soon as you attach the customer, and their account page shows how much credit they have left, so you find out before you have scanned the basket.
Read a customer's account
The customer's page has two tabs, or three once loyalty points are switched on.
- Ledger: every entry that moved what they owe: credit sales, returns against them, and payments, newest first, as debit and credit columns. Cash sales are deliberately left out (they never went on account).
- Purchases: everything they have ever bought, cash included, with a Reprint on each. Cancelled bills appear struck through rather than disappearing.
- Points: their loyalty balance, what it is worth, what is about to expire, and every movement with a running total. See §6b.
Above all of them are four cards: what they owe, their credit limit and how much of it is left, their last payment (how much, when, and how they paid it, or "None yet"), and their loyalty points if you run a scheme. Receive payment and Send reminder sit at the top of the page, opposite their name.
Points also show as a column on the customer list, so you can see who has a balance worth spending without opening each one.
Remind a customer what they owe
When a customer owes money, Send reminder on their page hands the message to your own phone or PC (WhatsApp, SMS, email, whatever you have), or opens a WhatsApp chat with it already typed. You press send. Nothing goes out automatically, there is nothing to sign up for and nothing is stored. The same Send button sits on every bill in Bill History, for sending a customer their bill.
If your device blocks the window, the link appears on screen so you can open it yourself.
Fix or reverse a payment (Manager & up)
On a past payment, Edit corrects a wrong amount (the balance is re-adjusted by the difference) and Cancel payment reverses it (the balance goes back up).
Remove a customer's personal details (Manager & up)
Two buttons on the Customers page, and which one you want depends on whether you need to keep their history.
Anonymise removes the person and keeps the account. Their name, phone number, email, address and any notes you have written are permanently erased; their customer code, their balance and every sale, payment and loyalty record stay exactly as they are. Use this when a customer asks you to remove their details. It is the one that works for someone you have traded with, and it cannot leave a hole in your books. The row stays in the list as Deleted customer with its code.
Delete removes the customer altogether, and with them their payment history, so it is only for a row you never meant to create. It is refused while there is an unsettled balance, whether they owe you or you owe them: settle it first, or use Anonymise.
Neither can be undone, and both ask you to confirm first. What you did is recorded in the activity log by customer code, so the log never keeps the details you asked to have removed.
> A cashier sees less than you do. Managers and owners see a customer's address and your notes about them; a till only sees the name, phone, email and balance it needs to serve someone at the counter.
6b. Loyalty points
Points are off until you turn them on, and while they are off nothing changes anywhere: no points, no records, no difference to any bill.
Set the scheme up (Owner)
Settings → Sales → Loyalty points. Turn the switch in that card's heading on, then set the numbers it reveals:
| Points earned · For every … spent | Read as one sentence: "1 point for every 100 spent". Set the second box to 1 if you want to give points for every single unit. The screen shows you what a real bill would earn as you type. |
| What one point is worth | What comes off a bill when it is spent. |
| Fewest points spendable at once | 0 means any number they have. |
| Points expire after (months) | 0 means they never expire. |
How points are earned
Only a customer attached to the bill earns, and a walk-in earns nothing. Points are counted on the bill before tax and after any discount, and always rounded down. Part of the amount still counts: on a "1 point per 100" scheme, a bill of 150 earns 1 point and a bill of 250 earns 2. Changing the rate later never rewrites what a past bill gave.
How points are spent
Attach the customer at the till and a Points to spend box appears, with Use max. The bill still totals and taxes in full; the points come off what is owed. That is on purpose: points are a way of paying, not a discount, so your tax stays right.
Points never turn into change: a customer with more points than the bill is worth spends only what fits. The receipt shows what the points settled and what the bill earned.
Returns, cancellations and expiry
- Hand goods back and the points go back with them both ways: what the bill earned is taken off (in proportion to what came back) and what was spent on it is returned. A customer who has already spent those points is never refused a refund over it.
- Unspent points expire oldest first, once they reach the age you set. Their Points tab shows what is about to go and when.
- An owner or manager can add or take away points by hand on that tab, with a reason, and it is recorded in the activity log.
Points are not credit: what a customer owes and what they have earned are two separate things and neither can be spent as the other.
7. Products & inventory
(Manager & up)
Open Products. Above the list is a filter strip: a search box (with a ✕ to clear it), a category filter (choosing a parent category includes everything filed under it), a variant group filter once you keep any, an expiry picker (Expiring soon / Expired), a Low stock only toggle, and Clear filters, which stays greyed out until something is set. The barcode-scan box sits on its own line beneath, because it adds or receives stock rather than filtering the list. Columns include name, SKU/barcode, category, price, expiry (amber when it is coming up, red once passed) and stock (bold red at or below the item's low-stock threshold). A product that is one of a set shows its option as a small chip beside the name, with the group underneath. The row's buttons (Stock, UPC / Label, Edit, Delete) stay pinned to the right edge if the table is wide enough to scroll.
Add or edit a product
Use Add product (or click a row to edit). Fields: name, barcode/UPC, category (type a new name to create it on the spot), variant group and option (see below), sale price, cost price, expiry date, sold in (unit) and decimal places, low-stock alert threshold, and, when creating only, the opening stock.
> Selling something by weight or measure. Set Sold in to kg (or g, L, mL, m, box, pkt) and Decimal places to how finely you sell it: 3 lets you sell to the gram. Picking a unit suggests a sensible number of places, but you have the last word: rice sold only in whole kilos is a real choice, so set 0. > > Decimal places is the rule, not the unit. With 0 (the default for every product) the till refuses 1.5 and says so. With 3, a cashier can type 1.5 at checkout, and stock, purchases, returns and stock-takes all work in the same decimals. > > Changing this later rewrites nothing: your stock figure stays exactly what it was, and bills already rung up keep the unit they were sold in.
> The cost price normally looks after itself. When you book in a stock purchase (§9), each product's cost price is set to what you just paid for it, including any discount on that line, so your profit figures stay right without anyone re-typing costs. Sending goods back to a supplier doesn't change it: a return doesn't alter what you paid. If you prefer to keep cost prices by hand, because you add carriage or handling on top of the supplier's rate, turn it off in Settings → Sales → Cost price and profit. Either way, changing a cost price only affects future sales, and bills already rung up keep the cost they were sold at.
> You set stock only once, when you create the item. After that the count on the row is a live figure you never type over. You move stock through the Stock action below. This is why the edit form has no stock box: letting a form that loaded "12" a minute ago save "12" back would quietly undo a sale rung up in between. If two people edit the same product at once, the second save is rejected with a "this product was changed by someone else, please reload" message rather than overwriting the first.
Add photos
The Photos section sits right below the basics on the product form, whether you're filling in a brand-new product or editing one you've already saved.
- Upload a photo: click anywhere in the box, or drag a file onto it (JPEG, PNG or WEBP, up to 15 MB).
- Take a photo: click Take a photo to open your camera, take the shot, then Use this photo (or Retake if it didn't come out right).
Add as many as you like. Every photo is automatically shrunk and compressed the moment you add it, so a full gallery barely uses any extra space. See Settings → Advanced → Storage to check. The photo marked Cover is the one that shows up in your product list and anywhere else the app shows a small picture of the item; hover over any other photo and click Set as cover to swap it. To remove one, hover over it and click the bin icon.
Import your products from a spreadsheet
If your products are already in Excel, or in an export from the till you are leaving, you do not have to type them in again. Press Import at the top of the Products page.
Save your file as an Excel workbook (`.xlsx`). In Excel it already is one, so just use it as it is. In Google Sheets: File → Download → Microsoft Excel (.xlsx). The import takes a file up to 5 MB and up to 2,000 rows at a time; split a longer list into two files.
Then there are four steps.
- Choose your file. Drag it onto the box or click to pick it. Two links here save time: Download a blank template gives you a file with the right headings and two example rows, and Download my current catalogue gives you everything already in the shop, which you can edit and import back.
- Match your columns. The app reads your headings and guesses:
Item Name,MRP,Rate,Qty,GST %,EAN,UOMand many more are all understood. Check the list and correct anything wrong with the dropdown beside it, or set a column to Ignore this column. Only the product name must be matched; everything else is optional. Here you also choose whether to only add new products (leaving what you already have untouched) and whether to create categories your file mentions that the shop doesn't have yet. - Check what will happen. Every row is listed with what it will do (Add, Update, Skip or Error) and the row number to find it by in your spreadsheet. Filter to just the errors, and download them as their own file to fix and re-import. Rows with an error are simply left out; the rest still import.
- Import. You are asked to confirm if the file will change products you already have, since that includes their prices.
> Opening stock is only set when a product is ADDED, never when one is updated. This is the most important rule here, and it is there to protect you. A spreadsheet you exported this morning is hours out of date, so if importing it could write its stock figures back, every sale you rang up in between would silently disappear. To correct counts, use Count & Adjust Stock (§7), which is built for exactly that job. The check step tells you on any row where this applies.
A few things are refused rather than guessed at, and each has a reason:
- A price that isn't a number. A column with "N/A" or a dash in it would otherwise come in as free.
- A price with more decimal places than your currency uses. You are told, rather than having it rounded behind your back.
- A row whose barcode belongs to one product and whose name belongs to another. Moving a barcode between two products by accident is expensive and invisible, so neither is touched.
- The same barcode twice in one file. The first row still imports; the second is flagged with the row number of the first.
Writing a category with a › or a > files it as a sub-category: Grocery › Rice. Extra barcodes go in one cell separated by a |, like 5012345678900|RICE5. Yes/no columns accept yes, no, true, false, 1 or 0. Dates must be written as YYYY-MM-DD (2027-01-31), because a date like 03/04/2026 means April in one country and March in another, so the app asks you to be unambiguous rather than guessing.
A blank cell means "leave this alone", never "set it to nothing". So a file with only a name and a price column updates just the prices and touches nothing else.
Start from a ready-made catalogue
If your product list is not in a spreadsheet at all, because it is in your head or in a pile of supplier invoices, there is a second way in. On the Import screen, switch to From a ready-made catalogue.
We prepare product lists for common kinds of shop: a drug index for a pharmacy, a staples list for a grocery. The ones that suit your shop are marked Suits your shop and are listed first, but you can use any of them.
- Preview any of them, before you download anything. It shows you fifty of its products and the categories it would create, so you can tell whether it is worth having.
- Download the one you want. It is saved on this computer, so searching it afterwards needs no internet.
- Search it by product name, generic name, brand or barcode, and tick what you actually stock. Your ticks are kept as you search and page through, so you can work through a long list a bit at a time.
- Check your prices and counts. Your picks are listed with a box for the price you charge and a box for how many you have on the shelf. Fill in what you know and leave the rest: an empty price box uses the suggested price, and an empty count starts that product at zero. You can also drop a row here if you ticked it by mistake.
- Continue, and you land on the same check step a spreadsheet gets, with every row listed and what it will do, before anything is saved.
> A count you type here is an OPENING count, and it only applies to a product being added for the first time. If a product is already in your shop, the import updates its details and leaves its stock exactly as it is, so your shelf figure is never overwritten by a file. Use Count & Adjust Stock (§7) to correct a count.
The price that comes with a product is a starting point. From the moment it is added it is your price, and changing it later has nothing to do with the catalogue.
Categories shows you what a catalogue would add to your categories before it adds anything, with every one listed and the ones you already have marked as such. Those are left exactly where they are; nothing is moved or renamed. It is all of them or none: the categories fit together, so picking a few would leave some of them with nowhere to sit.
Removing a downloaded catalogue never removes a product. The download is just a list held to one side; the products you created from it are yours and have no link back to it. You can remove it to tidy up, or download it again later when we have updated it. You are told when a newer version is available.
The same list helps you while you type. Anywhere you can add a product on the spot (the quick add at the till, or a line on a stock purchase or purchase order), typing two letters of a name offers matches from your downloaded catalogue. Pick one and the name, generic name, barcode, unit and suggested price fill themselves in. For a pharmacy entering supplier invoices, that is the difference between typing a drug name and choosing it.
Variants: the same thing in several strengths or sizes
A pharmacy sells the same drug in 500 mg and 650 mg; a karyana sells the same rice in a 1 kg bag and a 5 kg one. Each of those stays a separate product, with its own stock, its own barcode and its own price, because that is the only way to count them honestly. What a variant group adds is the name they share.
- Open Variant Groups in the sidebar and add one (say, Paracetamol), or just type a new name into the Variant group box on the product form and pick Add ….
- On each product in the set, choose that group and fill in its Option: "500 mg", "5 kg", "Red".
Two things then change at the till. Typing the group's name finds every one of them, even where each row carries its own brand name, and the results show the group above the option, so two lines reading "500 mg" and "650 mg" are visibly the same medicine. The option also becomes part of what the product is called: it prints on the shelf label, on the receipt and on the bill, so a receipt reprinted after you add a second strength still says which one the customer bought.
A group holds no stock and no price of its own. Deleting one simply ungroups its products. Nothing in your stock moves, and nothing is lost.
Batches and expiry dates
Most shops never need this, which is why it starts switched off. Turn it on for anything you receive at more than one expiry date at a time, medicines above all.
Tick Track this product by batch on the product form. From then on that product's stock is held as separate batches, each with its own batch number, expiry date and cost:
- Booking in a delivery asks which batch arrived. On a stock purchase (§9), the tracked lines get a batch number and expiry box under the product name. Receiving a purchase order asks the same when you click Receive, because an order is written before the goods exist, so nobody could know the batch when it was placed. Book in the same batch again and it simply adds to that batch.
- The till sells the oldest first, on its own. Your cashier scans exactly as before and never chooses a batch. If a customer buys more than the oldest batch holds, the bill shows one line per batch, each with its batch number and expiry, and the receipt prints them, so there is a record of exactly what was handed over. A refund goes back into the batch it came from.
- The Stock action lists the batches, in the order they will be sold, and a stock-take counts one batch at a time.
- Turning it on for a product that already has stock moves that stock into an opening batch. Your total doesn't change, and you'll see both entries in the stock history so nothing looks unexplained.
Expiry warnings work either way. A product you haven't tracked still has its own single expiry date, and the app watches both kinds. In Settings → Sales → Expiry dates and batches set how much notice you want: 30 days by default, or 0 for "only tell me what has already expired". Products inside that window are flagged in the list, the Expiring soon / Expired filters bring them together, and the owner gets one notification a day saying how many there are.
> Should the till refuse expired stock? By default it only warns: the item is badged in the cart, and the cashier decides. Tick Do not allow expired stock to be sold in the same place to make it a refusal. It is off to begin with on purpose: switching it on turns every expiry date you have ever typed into a rule, and some of them were typed before anyone was reading them. Check the Expired filter first, then turn it on.
Move stock (the stock ledger)
Every change to a product's quantity is recorded as one entry in an append-only ledger, and the count you see is the running total of those entries. Click Stock on a product row to open it:
- The current count, and a small form to Add, Remove, or Set the exact count, with a Reason picked from a list (damaged, expired, theft/shrinkage, count correction, other) and an optional note beside it for anything the list can't say. Picking from the list is what lets you ask later how much did we lose to damage this year; a blank box could never answer that.
- For a product tracked by batch, the batches it is holding, plus a Batch picker on the form. Counting is always against one batch, and Set the exact count means that batch. Choose + New batch… when adding to bring in a lot that isn't on the shelf yet.
- The full history below: every movement, its type, the change, the resulting balance, who made it and when. This is your answer to "why does this say 12?".
Because each change is a separate guarded entry, two people can adjust the same product at once and both changes land. Nothing is silently overwritten, and the count can never go negative.
Receive stock by scanning
The Scan barcode box at the top of the Products page turns a scanner into an inventory tool: scan a barcode you already stock and its stock ledger opens on "add" to receive the delivery; scan a code you've never seen and the new-product form opens with that barcode already filled in.
Barcodes and labels
Each row has a UPC / Label action:
- Generate UPC: gives a product with no barcode a valid, unique in-store barcode. (A product that already has a real manufacturer's barcode can simply have it typed or scanned into the product form.)
- Other barcodes: the box on the product form takes as many extra codes as the product really answers to, one per line: the EAN on the outer case beside the one on the inner pack, an old supplier code you still have stock under, or the item number programmed into a counter scale. Any of them finds the product when scanned. A code that already belongs to another product is refused and tells you which one; the main barcode above stays the one that prints on the label.
- Print label: prints a single shelf/price label with the shop name, price and scannable barcode.
Printing many labels at once: tick the products you want in the list (there's a select-all box in the header) and a Print labels bar appears. Set a copy count per product, choose the layout (an A4 sticker sheet, 2, 3 or 4 across for Avery-style sheets, or a thermal roll), toggle whether each label shows the name, price and shop name, and Print / Save as PDF to open your browser's print dialog.
Delete or reactivate
Deleting is safe: a product that's ever been sold is deactivated and dimmed (so old bills keep their lines), not truly removed. Only a product with no sales history is fully deleted. A deactivated product can be reactivated with one click.
Promotions: a price for a limited time
Promotions in the sidebar is where you set a price that runs for a window rather than until somebody edits the product.
New promotion asks for five things:
- Name: what you call it ("Eid week, 10% off rice"). It shows on the till and on the list.
- Applies to: one product, a whole category, or every product in the shop.
- Offer: a percentage off, or a fixed price.
- First day / last day: leave the first blank to start straight away, and the last blank to run until you switch it off. The last day runs in full, right up to closing time.
- Only on these days: tick weekdays for a weekend or midweek offer; leave them all unticked for every day.
Once it's running the till charges it by itself: the cart shows the offer's name and the ordinary price struck through, and so does the receipt, so the customer can see what they saved. If two offers cover the same item, the customer gets the better price.
The Status column tells you why a promotion is or isn't charging anything right now: Running, From 12 Aug, Ended 7 Aug, Not today, or Off. Switching one Off keeps it for next time; Delete removes it, and cannot change any bill it already priced.
> A promotion is your shelf price for that window, so it isn't blocked by a product's lowest/highest price limits. Those exist to bound what a cashier may charge, and this is a price you set yourself.
Card offers: a discount for paying with a card
Banks run tie-ups: "10% off with an HBL card this month." The Card offers tab on the same Promotions screen is where you set one up, so nobody has to remember to type a discount by hand on every card sale.
Manage cards first: add the cards you take, by the name the bank uses: "HBL Credit", "Meezan Debit". That is all that is stored. Never a card number: the app only ever records which kind of card was used.
New card offer asks for:
- Name: what you call it ("HBL weekend, 10% off"). It shows at the till, on the total, and on the receipt.
- Card: one of your cards, or Any card for a blanket offer.
- Percent off: how much comes off the bill.
- Smallest bill: leave blank for no minimum, or set the figure the bank's offer names ("on bills over Rs 2,000").
- First day / last day and Only on these days: exactly as a promotion above.
At the till, choose Card as the payment method and a Card used box appears. Pick the card, and the offer comes off with its name on the total. The receipt shows it on its own line, so the customer can see the advertised offer was actually honoured.
Two reasons an offer won't apply, and the till tells you which:
- The bill wasn't paid entirely by card. Split a bill between card and cash and it takes no card offer at all. That is the bank's own rule, and it is what stops somebody putting Rs 100 on the card and claiming 10% off Rs 10,000. On a split bill the Card used box simply isn't there.
- The bill is under the minimum. The till says so, and names the figure: "HBL weekend applies on bills over Rs 2,000."
If an offer names a particular card and nobody has said which card was used, the till prompts: "Choose the card to apply the shop's offer."
> A card offer is not a cashier's discount, and the app doesn't treat it as one. Turning discounts off doesn't block it, it doesn't count towards your maximum discount, and it never shows against a cashier's name on the staff report, because you advertised it, not them. Like the discount box at the foot of a bill it reduces the total but not the tax you declare.
Delete removes an offer and cannot change a bill it already discounted. Deleting a card also removes the offers aimed at it. The bills that used it are untouched, and still say which card it was.
Weighing scale labels
If you weigh goods on a counter scale that prints its own barcode labels, the app can read the weight straight off the scan.
- In Settings → Sales → Weighing scale, type the two digits your scale starts every label with (it's in the scale's own settings, usually between 20 and 29) and say whether the label carries a weight or a price.
- On each weighed product, add the item number you programmed into the scale to Other barcodes.
That's it: a scan now adds the line with the quantity already filled in. Leave the prefix blank if you have no scale and nothing changes. A code that's already in your catalogue is always looked up first, so this can never affect an ordinary scan, and a label the scanner misread is refused rather than charged.
8. Categories
(Manager & up)
Open Categories to see each category with its product count, how many sub-categories sit under it, and buttons to add, rename, merge or delete.
A category can sit inside another, such as Grocery → Rice or Dairy → Yoghurt, two levels deep. Set it with the Inside box when you add or edit one; leave it blank for a top-level category. The list shows the tree, and so does every category picker in the app. Choosing a parent anywhere includes everything beneath it: filter the products list on Grocery and you get the rice too, and the same is true on stock-take, write-off, the stock ledger, the stock valuation, and on a promotion, so putting a whole aisle on sale really does mean the aisle.
- Merge moves one category's products and its sub-categories into another and removes the empty one, which is the way to tidy up duplicates.
- Delete is safe in both directions: the products are kept and simply become uncategorised, and any sub-categories move up to the top level. Nothing is deleted with it.
You rarely need this screen first, though. In the product form's Category field, typing a name that doesn't exist reveals an "Add …" action that creates the category and selects it on the spot. The same shortcut is on the Supplier field of a purchase.
9. Suppliers & purchasing
(Manager & up)
Suppliers
Open Suppliers for a directory with auto-generated codes (SUP-000001) and a balance owed, which is the money you owe them. Click a supplier's name for their account page: the balance, a Pay supplier button, and a ledger of credit purchases, purchase returns and payments.
Pay a supplier: press Pay supplier, confirm the amount (pre-filled with the full balance), choose the method and add a reference, and record it. Each payment gets a receipt number and records who paid. You can Edit or Cancel a past payment.
Stock purchases (goods received)
Open Stock Purchases to record goods that have arrived.
- Pick a supplier and enter an invoice number.
- Choose a payment term: Cash (already paid) or Credit (pay later, and must name a supplier).
- Add product lines with quantity and rate (pre-filled from the product's cost price), plus per-line and total discounts. A product sold by weight takes a decimal quantity here too: receive
10.5kg, and the rate is what you paid per kg. A product tracked by batch (§7) shows a batch number and expiry box under its name; fill them in from the delivery note. - Save. This adds the quantities to stock (into the batch you named, where there is one), on credit terms increases the supplier's balance, and updates each product's cost price to the rate you just paid (see §7, and turn it off in Settings → Sales if you keep costs by hand).
Something on the invoice you don't stock yet? Search for it, and where nothing matches you get Create product (if you have the products permission). Fill in the name, category, how it's sold, and its prices, and it's created and added to the invoice as a line, so you never have to leave the invoice and go to Products first. The new product starts with no stock: the delivery you're entering is what puts it on the shelf, so saving the purchase is what gives it a quantity. This is the easiest way to build a catalogue if your only record of what you sell is your supplier invoices: enter a few weeks of them and the catalogue builds itself.
Purchase orders (before goods arrive)
Open Purchase Orders to draft an order before the goods turn up. It gets a number (PO-000001) and sits as a Draft or Sent, touching nothing, until the delivery comes.
- Ordering something you've never carried? The product search offers Create product where nothing matches, exactly as a stock purchase does. The product is created with no stock, and receiving the order is what gives it a quantity.
- When the goods arrive, click Receive, which turns the order into a stock purchase, adding the quantities to stock (and the payable on credit terms). Receiving is guarded so a double-click can't receive it twice. If any line is a product tracked by batch (§7), Receive first asks for the batch number and expiry that actually turned up, which could not have been known when the order was written.
- Any order can be Printed, saved as a PDF, or shared on WhatsApp (the PDF is saved and a chat opens with the supplier for you to attach).
9b. Expenses (petty cash)
(Cashier & up to record; Manager & up to edit or cancel)
Money that leaves the shop but isn't a payment to a supplier: tea, transport, a repair, a bulb for the sign. Open Expenses in the sidebar.
Record an expense
Click + Record Expense (or press Alt+N) and fill in:
- Amount and Paid by (cash, card, wallet or bank transfer).
- Category: type your own. Anything you've used before appears as you type, so pick from the list to keep the spelling consistent. You don't have to set categories up first, and you can leave it blank.
- Date: the day the money actually went out, which doesn't have to be today. Found a receipt on Friday for something paid on Tuesday? Put Tuesday, and it counts on Tuesday.
- Paid to, Reference (a bill or cheque number) and Notes are all optional.
Each entry gets a voucher number and records who entered it.
> Double-clicking Save won't record it twice. If the button doesn't seem to respond, wait a moment rather than clicking again, but if you do, only one voucher is created.
Find and total expenses
Filter by date range and category. The three tiles at the top show the total for whatever you're looking at, how many entries there are, and your biggest category. Change the filter and the total follows it.
Fix a mistake (Manager & up)
- Edit corrects any detail, including the amount.
- Cancel reverses an entry. It stays on the list, struck through and marked with who cancelled it, and stops counting towards the total. That's on purpose: a voucher number that simply disappeared would raise more questions than it answered. A cancelled entry can't be edited afterwards.
Both are recorded in Settings → Activity log.
9c. Closing the day (shifts & the Z-report)
(Cashier & up to run a till; Manager & up to see other tills)
At the end of the day you want to know one thing: does the money in the drawer match what we sold? That's what Shifts is for.
A shift is one open-to-close cycle of one cash drawer. It belongs to the computer, not the person, so if two of you share a till across a handover, you both ring into the same shift, and the report shows who took what inside it. Two counters trading side by side each run their own shift.
Start of day: open the shift
Open Shifts in the sidebar and click + Open shift. Enter the opening float (the change money already sitting in the drawer before you sell anything) and an optional note. Leave it blank if the drawer is empty.
Once a shift is open, a green Shift #14 open chip appears at the top of Checkout so you can always see which drawer you're ringing into.
> Only one shift can be open per computer. If you're told one is already open, someone else on this machine hasn't closed it, so open it from the Shifts screen and close it first.
During the day: cash in and out
Most things need no action at all: sales, refunds, customer payments, supplier payments and expenses are all counted against the shift automatically, just by being recorded normally.
Use Cash in / out (on the shift's page) only for money that is none of those:
- Cash in: the owner topping up the change fund.
- Cash out: cash taken from the drawer with no receipt yet.
- Drop to safe: takings moved to the safe or the bank mid-shift, so the drawer isn't holding the whole day.
> Anything paid out for a reason, such as tea, a repair or transport, belongs in [Expenses](#9b-expenses-petty-cash), not here. That way it lands in your spending record as well as the drawer count.
End of day: close and count
Click Close shift, count everything physically in the drawer including the opening float, and enter the total.
Or count it note by note. Click Count notes & coins and you get a grid (5000s, 1000s, 500s and down, plus a box to add any denomination the list misses) with a running total as you type. What you tallied is stored with the count and prints on the Z-report, so the slip you file shows how the drawer was made up. The total is worked out from the tally, so the two can never disagree.
The app compares your count against what it worked out should be there:
> opening float + cash sales + any down-payment taken on a credit bill + customer payments in cash + cash in > − cash refunds − supplier payments in cash − expenses in cash − cash out − drops to the safe
and shows the difference: short in red, over in amber, balanced in green. It is shown exactly as it is: nothing is rounded away or quietly hidden, because that number is the whole reason for counting.
Card and wallet takings are shown but never counted against the drawer, because that money never went into it. Neither does the unpaid part of a credit bill. A refund only comes out of the drawer if the money really left it. Three things decide that: if you named a refund method, it is used as given (choose Card and the drawer is untouched); otherwise the money goes back the way the bill was paid, in the same proportion; and any part of a return that comes off what the customer owes is not cash at all, so it is taken out of the figure before the drawer is asked.
The Z-report
Every shift has a report you can open from the list, and print on your receipt printer. It shows sales split by payment method, tax and discounts, returns, the full drawer reconciliation line by line, the denomination tally if you counted that way, the breakdown by cashier, any note you wrote when closing, and a line to sign. Tear it off and file it.
Printing a shift that is still open gives you the same thing headed X-report, with no count and no difference, because nothing has been counted yet. You don't have to come here for it: the green shift chip at the top of the Checkout screen has an X-report button beside it, so a mid-shift read is one tap from the till.
> A closed report never changes. If someone cancels an expense next week, last Tuesday's Z-report still reads exactly as it did when you counted, printed and signed it, denomination tally included.
Counting blind (Owner)
Settings → Sales → Shifts and cash counting → Count the drawer blind hides what the drawer should hold while the shift is still open, on screen and on the X-report alike. Whoever counts then does it without knowing the answer first, which is what makes the difference mean something in a shop with hired staff. Everything reappears the moment the shift is closed, together with the difference. It is off unless you turn it on.
Make a shift compulsory (Owner)
By default the app doesn't insist on a shift, so you can sell without one, and nothing changes for a shop that doesn't cash up this way. If you want the discipline, turn on Settings → Sales → Shifts and cash counting → Require an open shift to sell. After that, ringing up a bill or a return on a till with no shift open is refused and points you here.
10. Dashboard & reports
(Manager & Owner)
Dashboard
The home screen for anyone with the dashboard permission. A Today / 7 days / 30 days toggle re-scopes everything. Across the top: KPI cards for today's revenue (with change vs yesterday), revenue and bill count for the range (with the average sale), and gross profit for the range with its margin percentage. Below: charts for the revenue trend, top products (hover a bar for the units sold and the margin that product earned), sales by category and payment-method mix; the last 8 bills; and low-stock alerts (any active product at or below its threshold, worst first). A Checkout button sits in the header.
Reports
Open Reports. There are five reports listed down the left; pick one, then choose the period across the top: a Daily / Weekly / Monthly preset (1 / 7 / 30 days) or a custom from/to date range. Switching report keeps the period you chose, so everything you look at covers the same window.
*Every report has a Download Excel button that opens in Excel, Google Sheets or LibreOffice. It always gives you the whole* report, not just the page on screen. Anyone who can see a report can download it.
A downloaded report starts with a few lines telling you what it is (its title, your shop's name, the dates it covers, the currency, and when it was made), then a blank line, then the table. The blank line is what separates the headings from the figures, so a report you saved months ago still explains itself. The total sits below the last row with a gap above it, so it cannot be mistaken for another product. Under the table you will usually find a line or two about how to read the figures, the same notes the screen shows.
Summary
Five tiles (sales revenue, transaction count, purchases, purchase returns, and net sales minus returns), then five more: cost of goods sold, gross profit, margin %, expenses and net profit. Below them, expenses grouped by category, and a daily revenue bar chart; hover a bar for that day's bill count and profit.
> What "gross profit" means here. It is what you sold, less what those goods cost you, using the cost recorded on each bill at the time it was sold, so putting a supplier's price up next month never changes what last month says it earned. It is counted before tax (the tax you collect is the government's, not your margin) and after returns, so goods handed back come off the cost as well as the takings. > > Net profit then subtracts the expenses you recorded in §9b, so it answers "did the shop make money", not just "what was the margin on the goods". Expenses count on the day the money left (the date on the voucher), not the day you typed it in, and anything you cancelled is ignored. It is not a full profit & loss statement: there is no depreciation in it, and no wages unless you record them as an expense. > > If your margin looks too good, at 100%, it usually means the products have no cost price. See §7: cost prices normally look after themselves from your stock purchases.
By cashier
Bills, gross takings, discount given, returns and net for each member of staff, plus their average bill.
> A refund is taken off whoever rang the original sale, not off whoever handed the money back. That is what makes the column mean something: it is what that person's own selling actually netted out to. Without it, a cashier with a lot of returns would look like your best performer. > > Staff who have left the shop still appear, as one unattributed row, so the figures keep adding up to the period's real total.
Tax
What you charged, grouped by the tax rate on the bill, not by payment method. If you changed your rate part-way through the month you get two lines, one for each rate, because that is what actually happened; blending them would give a figure that appears on none of your bills. Each rate shows taxable sales, tax charged, tax refunded and the net you owe.
> Underneath the table, the report tells you whether it reconciles with the tax recorded on the bills themselves, and shows that figure. If it ever says otherwise, contact support before filing.
A second table breaks the same period down by payment method, for checking against the till. A bill paid more than one way appears under each method for the money, and its tax under whichever payment covered the most, because the tax has always applied to the whole bill.
Stock value
What is on your shelves right now, so it ignores the period picker, which hides for this report. Cost value, retail value, the potential profit between them, and the margin that implies; then a product-by-product table you can filter by category, or widen to include products with no stock.
> A product that tracks batches is valued lot by lot, at what each lot actually cost, so a medicine you bought twice at two different prices is worth what you really paid, not what the last delivery happened to cost. > > Retail value is the shelf price before tax: what the stock would sell for, not what you would bank.
Owed to you
Who owes the shop money right now, largest first, with a total. This is deliberately not filtered by the date range, because what a customer owes is a fact about today, not about a period. Download it as a chase list.
> Every day boundary is your shop's own: a shop in New York rolls over at New York midnight. A sale rung up at 9pm belongs to that evening's takings.
11. Running more than one till (LAN)
(Owner)
By default the POS is a single-machine app: one PC holds the data and the staff sign in on that PC. A shop that needs a second counter can run several tills over its local network.
Choose how each PC runs
On first launch (or later in Settings → Devices → Network → "Change how this PC runs", no reinstall needed), pick:
- Single PC: the default.
- Main PC (server): this machine holds the data and serves it to the network. Its address (e.g.
http://192.168.1.10:37650) is shown in Settings → Network. - Extra till (client): a terminal that shows and saves everything on the Main PC. It just needs the Main PC's address.
> The lightest way to add a till is a web browser. Any PC, tablet or phone on the same network can open the Main PC's address in Chrome or Edge and use the same screens with nothing to install, and receipts still print on the Main PC's printer. Installing the app as an Extra till is only worth it when that till needs its own printer.
Approve each device
In Main-PC mode, every device must be approved by the owner before it can be used:
- A new device that opens the shop's address lands on a Connect this device screen, names itself ("Counter 2 till") and asks to join.
- The request appears in Settings → Devices (the list refreshes itself). Approve it (optionally with an "allow access until" date, after which it disconnects on its own) or reject it. Quickest way there: press Ctrl + K (⌘ + K on a Mac), type device, and pick Connect a device.
- You can remove any device's access at any time; it stops working on its very next action (signed out and returned to the pairing screen within a minute).
The number of machines you may approve is capped by your seat count (Settings → Devices shows "N of M in use" and refuses to approve past the limit). The Main computer can never be revoked, because it holds the data. Lowering your seats never disconnects a till already in use; it only blocks the next new one.
Step-by-step wiring instructions (fixed IP, opening the port, wired vs Wi-Fi) live on the vendor's public setup guides, linked from Settings, the pairing screen and Help & Feedback: Connect terminals, tablets and phones for the wiring, and Devices & how many can connect for approving a till, giving it an access end date, and what your plan's device limit means.
12. Printing & barcode scanners
(Owner)
Open Settings → Printing.
- Where receipts print:
- On this device: each till uses its own printer (the original behaviour). - On the shop printer: every till relays its receipts to the Main PC's printer (the LAN setup). The desktop app must be open on the Main PC for this.
- Pick the printer, with a live status dot showing whether it's currently connected, and a Refresh.
- Silent printing: turn it on so the desktop app prints straight to the printer with no OS dialog (what a busy till wants). It's off by default; turn it on after picking a printer and printing a test.
- Paper width: 58 mm or 80 mm, and copies (1–5).
- Print a test receipt to confirm everything works.
Barcode scanners need no setup: they type the code like a keyboard, so there's nothing to connect. Test one by scanning into any search or scan box.
13. Settings reference
(Owner)
Settings has a left-hand sidebar of sections; the chosen one opens beside it.
- Shop: name, owner, phone, contact email, address, government registration number, tax label, and the receipt footer message. The tax label and footer are what print on bills.
- Currency & Time: pick a country (which fills in the currency and locale), a currency (its symbol and decimal places move together), timezone and locale. Changing this reformats amounts and dates everywhere instantly; past bills keep their original currency. If the computer's timezone disagrees with the shop's, a hint appears. It changes nothing, and the decision stays with you.
- Sales: everything about how the till may sell, on one page with a Save button that stays in view as you scroll. It is in two tabs: Selling rules, which apply to every shop, and Features you can switch on, where each card has its own switch in its heading and only shows its settings once it is on. One Save covers both tabs, so you can change something in each and save once. Under Selling rules: Discounts: whether cashiers may discount a bill, and the maximum discount %. Shifts and cash counting: whether a till must have a shift open before it can sell or refund, and whether the drawer is counted blind (both off by default, see §9c). Manager approval: which actions need a manager's own email and password typed in at the counter, namely price changes and cancelled bills (both off by default). A discount over your cap always needs one. Cost price and profit: whether receiving stock updates a product's cost price to what you just paid (on by default, because it is what keeps the profit figures in §10 honest; turn it off only if you maintain cost prices by hand). Under Features: Expiry dates and batches: how many days' notice you want before stock goes out of date (30 by default;
0= only tell me what has already expired), and whether the till may sell expired stock at all (off by default, see §7). Controlled products: your schedule names, and whether a prescriber and patient must be entered before a controlled item can be sold. Weighing scale: the prefix your counter scale prints, and whether its labels carry a weight or a price. Loyalty points: the whole scheme, off by default; see §6b. - Tax: the tax label and a tax rate per payment method (cash, card, credit, wallet). The rate for the method the customer pays with is applied to the whole bill and printed on the receipt (set 0% for anything untaxed); if one bill is paid in more than one way, the method that paid the largest share sets the rate for all of it. There is also one choice about discounts and tax, below.
> Take discounts off the amount before tax. This is off for every shop unless somebody turns it on, and off is how the app has always worked. A discount on a single item already comes off the amount you are taxed on either way; this setting is about a discount off the whole bill, and about a card offer. Off, the discount comes off the total and the tax stays as it was charged on the full amount: a 1,000 bill at 10% tax with 100 off takes 990 and declares 100 of tax. On, the discount comes off the amount you are taxed on, so the same bill declares 90 instead. Most tax offices expect the second when the discount is given at the counter, because you never collected tax on money you never took, and if you run a card offer the difference applies to every card sale, so it adds up. Ask your accountant which is right where you trade: this is the one setting in the app whose correct answer depends on your tax law rather than on how you like to work. > > Two things to know before turning it on. Typing a fixed amount off then takes that amount off before tax, so the bill falls by a little more than you typed. Typing a percentage gets better: 10% off finally takes 10% off what the customer actually pays. And it only affects bills rung up from then on: every bill already on your books keeps the tax it was charged, so nothing you have filed moves.
- Printing: see §12.
- Team: list, add, edit and remove staff. Adding needs an email, name, password and a role. Editing changes a person's role, activates/deactivates them (a deactivated login stops working immediately), renames them, or resets their password. The app won't let you remove, demote or deactivate the last owner, or lock yourself out. *Giving an owner account a new password also asks for that owner's current password*, because an owner's login is the shop, so it can only be changed by someone who already knows it, and a machine left unlocked for five minutes can't be used to take it over. Every other account is unchanged: a cashier who has forgotten their password just gets a new one. If an owner has genuinely lost theirs, use the recovery PIN, the emailed link, or a vendor support code instead (§3).
- Devices: the machines your team works on, right next to Team because adding a person and approving their till is one job.
- Network: LAN mode, the address other tills use, and the "Change how this PC runs" switch (see §11). - Devices: approve/revoke tills (see §11).
- Roles: create custom roles and tick exactly what each may do; changes apply to everyone with that role instantly. Built-in roles can be adjusted but not deleted; Owner is always full access.
- Password & updates: change your own password (current password required), and see the installed app version with a Check for updates button (see §15). To change somebody else's password, use Team.
- License: read-only shop name, key (last 4 digits only, since the full key is never shown), expiry, status, days remaining, and a Sync now / re-activate link (see §15).
- Backup: see §14.
- Activity log: a record of sensitive actions (staff changes, payment edits/cancellations, category merges, product re-activation), each with who did it and when. Stock and money have their own detailed histories elsewhere; this is the trail for everything else.
- Advanced: a Storage card showing how much space your product photos, and your shop's data as a whole, are using on this computer; and an error log of anything the app has run into, for support to look at if you ever need to raise a ticket.
14. Backups, export & restore
(Owner)
Open Settings → Backup.
- Full backup (JSON): a complete, re-importable snapshot of the whole shop (settings, staff logins as password hashes only, catalogue, customers, suppliers, sales, payments, the stock ledger and the internal counters). Downloading one asks for your password first, so nobody at an unlocked machine can quietly grab the whole shop. Take one regularly and keep it somewhere safe, because it's how you move to a new PC or recover after a wipe. Tick Include product photos if you want your photos to come along too. It's off by default because it makes the backup, and restoring it, noticeably slower; leave it off for a routine backup and turn it on when you're actually moving to new hardware.
- Excel exports: sales, products or customers.
- Restore: replaces all business data on this machine. The file picker stays disabled until you retype your password, then a red warning confirms. This everyday restore deliberately leaves your current staff logins, settings and licence alone, so it can never overwrite your own password or transplant a licence. To move to a new computer, use the first-run Restore flow instead (see §2).
> The recovery PIN and the licence are never in a backup. A backup file alone can't hijack an account or move a licence to another machine.
> Backup files carry a version. A file taken on an older version restores fine here, and if it predates weight-selling, its quantities are converted for you as it restores. A file taken on a newer version is refused with a clear message rather than half-restored, so if you're restoring onto a second machine, update that machine first.
15. Licence & staying up to date
Licence status
Your licence is checked instantly on every screen (this works offline). You may see:
| What you see | What it means | What to do |
|---|---|---|
| Nothing | Valid, plenty of time left | Nothing |
| Amber chip "expires in N days" | Getting close to expiry | Contact the vendor to renew soon |
| Red banner + "Renew now" | Expired, but in the grace window and still fully usable | Renew now; you can keep trading meanwhile |
| Full "License expired" panel | Grace used up, so the app is locked (you stay signed in) | Renew with the vendor; it unlocks the moment they do |
| "License is invalid, Re-activate" | Signature mismatch or the key was revoked | Contact the vendor / re-activate |
If you bought the software outright, the licence screen reads Lifetime instead of an expiry date and there is no countdown, and none of the warnings above will ever appear. If you are paying in instalments, the screen shows the date your next payment is due, and the ordinary warnings above are how the app reminds you: pay, and it carries on as normal within half an hour.
The app quietly re-checks with the vendor when it's online (and within the hour on an always-open till), so a renewal lands on its own and you don't have to do anything. If you want to force it, use Sync now in Settings → License, which also shows when the last check happened.
App updates
When a new version is available and you're online, a closable banner offers Download & install. It downloads in the background and installs the next time you restart the app, and your data is never touched. Nothing installs without your click, so a busy till is never interrupted.
Seeing what changed. Every update banner carries a What's in this update link, which opens the vendor's What's new page at the notes for that exact version: what was added, what got better, what was fixed, and anything you need to do after installing it. You can open it any time from Settings → Password & updates → What's new in each version, which also shows the version you are running now. The same notes appear on the vendor's download page above each build.
Updates and your licence. Some licences cover a particular version of the app, usually when the software was bought outright rather than on a subscription. If yours does, your computer is simply never offered a newer version, so there is nothing to be careful about; small fixes and improvements to your own version still arrive as usual. If a newer version does somehow get installed by hand, the app tells you before it opens anything, leaves your shop's data completely untouched, and offers you the version your licence covers, the vendor's contact details, and a copy of your data. Ask the vendor about moving up and it unlocks on its own, with nothing to reinstall.
Occasionally the vendor sets a support deadline for an old version. As it nears, you'll see a gentle "please update" message naming the version to move to, then a banner, then (in the last hour) a live countdown, and past the date the app locks until you update. Keeping updates installed avoids all of this. Brand-new machines download the installer from the vendor's website.
If your licence covers a particular version and there is nothing newer for you to install, none of that applies: the app keeps working and you are not asked to do something you cannot do. In the rare case where your vendor has arranged otherwise, the app tells you to contact them and shows you how, rather than offering an update button that could not work.
16. Getting help
Open Help & Feedback (available to everyone signed in).
- Choose a type (issue, feedback or feature request), add a subject and message, and send. This goes to the vendor (it needs internet to submit).
- Your past reports appear under My reports with a status pill: open, in progress or resolved.
- When the vendor replies, the reply appears right here in the app and also arrives by email.
Each staff member sees only the reports they filed; the owner sees every report for the shop. If you're offline, the list just shows a soft notice instead of an error.
Before writing, it is worth checking the vendor's Common questions page. The links at the top of Help & Feedback open it, along with this manual and the setup guides. Most of what people open a ticket about is already answered there, including printing, forgotten passwords, a till waiting for approval, and getting your data out when you cannot sign in.
17. Keyboard shortcuts
Frequent actions have keys, so you can work without reaching for the mouse. A keyboard icon at the bottom of the sidebar (next to the online indicator), or the `?` key, opens the full list any time.
| Key | Does |
|---|---|
| Ctrl / ⌘ + K | Open the command palette to jump to any screen or action (including Connect a device, which opens Settings → Devices in one go) |
| / | Jump to the current screen's search box |
| n | Start a new bill |
| g then a letter | Go to a section: d Dashboard, p Products, c Categories, u Customers, r Reports |
| Ctrl / ⌘ + Enter | Save the open form |
| Esc | Close a dialog |
| ? | Show the full shortcut list |
At the checkout, the arrow keys move through search results and Enter adds the highlighted item (or rings up a scanned barcode). Everything else there is a function key, because those work while you are typing in the search box, which is where a cashier's hands live all day:
| Key | Does |
|---|---|
| F2 | Show the bills on hold |
| F3 | Show the recent bills (reprint a receipt) |
| F4 | Hold the current bill |
| F7 | Jump to the discount box |
| F8 | Clear the bill (asks first) |
| F9 | Charge |
Shortcuts stay out of the way while you're typing: pressing / inside a text box types a slash as normal. A shortcut can never reach anything your role couldn't already open.
Making everything bigger or smaller (desktop app). On a small screen, or one across the room from the counter, Ctrl + `+` makes the whole app bigger and Ctrl + `-` makes it smaller again; hold Shift or use the number pad, whichever you find easier. Ctrl + `0` puts it straight back to normal size, which is the one to remember if you have zoomed in further than you meant to. The size you choose is remembered the next time you open the app.
18. Quick troubleshooting
| Symptom | What it means | What to do |
|---|---|---|
| Sidebar says "Offline" | No internet right now | Nothing. Sales, stock, printing and everything day-to-day keep working. Only licence checks, support tickets and reset emails wait for a connection. |
| "Your date & time is off" on login | The computer's clock is more than ~10 minutes wrong | Fix the Windows date & time (ideally set it to update automatically), then sign in again. |
| A "Your date & time is not correct" panel covers the app mid-shift | The clock drifted while you were working | Correct the clock, and the panel clears by itself the moment the time is right. You stay signed in; no work is lost. |
| A till is stuck on "Connect this device" | The device hasn't been approved yet, or its access was removed | On the Main PC, open Settings → Devices and approve it (see §11). |
| Receipt didn't print | The printer is off, jammed, or disconnected | The sale is already saved, so check the printer, then reprint from Bill History. In Settings → Printing, the status dot shows if the printer is connected. |
| "License expired" panel | The grace window is used up | Renew with the vendor; the app unlocks the moment they renew and you're online (or press Sync now). You stay signed in meanwhile. |
| App says it must be updated | You're past a version's support deadline | Click Update now — it names the version to install — and your data is kept. If the screen instead says your licence covers an older version, there is nothing to install: contact the vendor using the details shown. |
| "This product was changed by someone else, please reload" | Someone else edited the same product while you had the form open | Reload the product and re-enter your change. |
Looking for how the software is built, packaged, or licensed as a business? See the [documentation map](../README.md#documentation-map).
Looking for something specific?
Try the common questions, the setup guides, or send us a message.