AT-TOHFAUser Manual বাংলা

AT-TOHFA User Manual

Everything the system does, screen by screen — written for the people behind the counter, not for programmers.

The application interface is in English. A Bangla edition of this manual is available and explains everything in Bangla while keeping the on-screen button names in English.

Which chapter do I need?

Something went wrong? Go straight to the troubleshooting chapter and the glossary. Troubleshooting & Glossary

First-day checklist

Set the shop up in this order — each step depends on the one before it.

  1. 1 Shop DetailsShop name, phone, address. They print on every receipt.
  2. 2 UsersAn account for each staff member, with the right role.
  3. 3 Categories & BrandsYou cannot add a product without a category.
  4. 4 ProductsAdd your catalog.
  5. 5 PurchasesRecord the stock you hold, so cost and profit are correct.
  6. 6 SellOpen POS and make your first sale.

1Getting Started

How to sign in, find your way around, and understand why you can see some menus and not others.

Who can use this: everyone.

Contents


Signing in

  1. Open the shop's web address in a browser. The public home page appears.
  2. Click Login, or go to the address ending in /login.
  3. Enter your Email and Password.
  4. Click the sign-in button.

Your login is created for you by the owner or an administrator — see Chapter 11 — Users. If you have never been given an email and password, you cannot sign in; ask the shop owner to create your account.

Note

Your session stays alive for about 30 days as long as you keep using the system. If you are signed out unexpectedly, just sign in again — nothing is lost.


Where you land after login

The system sends you to the most useful screen for your role:

Your roleYou land on
Staff (cashier)POS — the selling screen
Everyone elseDashboard

If you clicked a link that required signing in first, you are returned to that page instead.


The sidebar

The dark menu strip on the left is how you move around. On a laptop or desktop it is always visible. On a phone or tablet it is hidden — tap the ☰ menu button in the top-left corner of the header to slide it open.

The menu, in order:

Menu itemWhat it is forChapter
DashboardToday's numbers at a glancebelow
POSThe selling register02
SalesEvery sale you have made03
ReturnsProducts customers brought back04
DuesCustomers who owe you money05
ProductsYour product catalog06
PurchasesStock you received from suppliers07
Product RemovalsDamaged, expired or lost stock08
ExpensesRent, salaries, bills09
UsersStaff accounts11
Reports ▾Sales Report · Inventory Report · Profit & Loss10
Setup ▾Categories · Brands12
ProfileYour own name, photo and passwordbelow
SettingsShop details, permissions, backup13
Sign outEnds your sessionbelow

Reports and Setup have a ▾ arrow. Click the row to open or close the list underneath it.

Collapsing the sidebar. On a desktop there is a small round arrow button on the right edge of the sidebar, near the top. Click it to shrink the sidebar down to icons only, which gives the main screen more room. Click it again to expand. Hover over an icon to see its name.

Note

You will only see the menu items your role is allowed to open. A short list is normal — see Roles below.


The header

The bar across the top of every screen contains:

  • ☰ — opens the sidebar drawer (phones and tablets only).
  • The page title.
  • Your avatar on the right. Click it for a small menu: Profile, Settings, Logout.

Roles and what each one can open

Every user account has exactly one role. There are six:

RoleMeant for
SuperAdminThe system administrator. Sees and can do everything, always.
OwnerThe shop owner.
AdminA trusted manager who also handles money and staff.
ManagerRuns the shop floor and stock, but not finances or staff.
StaffCashier. Sells, handles returns and takes payments.
CustomerReserved; not used for shop staff.

Default page access

This is what each role can open when the system is first set up. ✓ means allowed.

PageOwnerAdminManagerStaffCustomer
Dashboard✓✓✓
POS✓✓✓✓
Sales✓✓✓✓
Returns✓✓✓✓
Dues✓✓✓✓
Products✓✓✓
Purchases✓✓✓
Product Removals✓✓✓
Expenses✓✓
Users✓✓
Reports✓✓
Setup✓✓✓
Settings

SuperAdmin is not shown in the table because SuperAdmin can always open every page. Settings is empty by default, meaning only the SuperAdmin can open it until someone changes that.

This table is not fixed. The SuperAdmin can change any tick in it from Sidebar → Settings → Permissions — see Chapter 13. So your shop's actual access may differ from the defaults above.

Profile is not in the table because everyone can always open their own profile.


Why can't I see a menu item?

Because your role is not allowed to open that page. This is normal and intentional — a cashier does not need to see profit figures or staff salaries.

If you open a page address directly that you are not allowed to use, you will see an Access denied message with a link to a page you are allowed to use.

If you genuinely need access, ask the SuperAdmin to either change your role (Chapter 11) or grant your role that page (Chapter 13).


Your profile

Sidebar → Profile, or click your avatar in the header and choose Profile.

Two tabs:

Profile tab

FieldWhat it is
NameYour display name. Shown on receipts and records you create.
PhoneYour contact number.
EmailYour login email.

There is also a photo area. Click it to upload an avatar image, or use the remove option to delete the one you have. Your avatar appears in the header and on records you create.

Password tab

Change your own password. You will be asked for your current password and then the new one twice. Use at least 8 characters with both letters and numbers.

Note

Change the password you were given on your first day. Do not share it — every action in the system is recorded against the account that performed it (see Audit Log).


The Dashboard

Sidebar → Dashboard. A single screen answering "how is the shop doing right now?"

At the top is a period filter — today, this week, this month, and so on. Everything on the page recalculates for the period you pick.

What you will find, roughly top to bottom:

  • KPI tiles — the headline numbers for the period: revenue, profit, number of sales, and similar. Each tile shows the figure and how it compares with the previous period.
  • Alert strip — urgent things needing attention, such as products that have run low.
  • Revenue trend chart — a line showing sales day by day, so you can see whether business is rising or falling.
  • Profit chain — walks you from sales down to net profit, showing what each cost takes out along the way. The same logic as the Profit & Loss report (Chapter 10).
  • Top products — your best sellers for the period.
  • Recent sales — the latest transactions, so you can spot a mistake quickly.
  • Stock watch — products running low or already out of stock.
  • Category mix and Expense mix — where your revenue comes from and where your money goes.

Click through from any card to the full screen behind it when you want detail.


Signing out

Either:

  • Sidebar → Sign out (the red item at the bottom of the menu), or
  • Click your avatar in the header → Logout.

Always sign out at the end of a shift on a shared till computer. The next person will otherwise be recorded as making your sales.


Next: Chapter 2 — POS Terminal

2POS Terminal

The selling screen. This is where cashiers spend the whole day.

Who can use this: Owner, Admin, Manager, Staff (by default).

Contents


The layout

Sidebar → POS. The POS screen takes over the whole window — there is no sidebar here.

On a laptop or desktop:

┌──────────────────────────────────────────┬──────────────────┐
│ Header: search · fullscreen              │                  │
├──────────────────────────────────────────┤   CART           │
│  [Category filter] [Brand filter]        │                  │
│                                          │   line items     │
│  ┌────┐ ┌────┐ ┌────┐ ┌────┐             │   quantity + / - │
│  │prod│ │prod│ │prod│ │prod│             │                  │
│  └────┘ └────┘ └────┘ └────┘             │   Subtotal       │
│  ┌────┐ ┌────┐ ┌────┐ ┌────┐             │   Total          │
│  │prod│ │prod│ │prod│ │prod│             │                  │
│  └────┘ └────┘ └────┘ └────┘             │   [ Checkout ]   │
└──────────────────────────────────────────┴──────────────────┘

On a phone or tablet: the cart is not shown beside the products. Instead there is a wide Cart (n) bar along the bottom showing the running total. Tap it to slide the cart up from the bottom of the screen.

Fullscreen. There is a fullscreen button in the header. Turning it on hides the browser's own toolbars and gives you the largest possible product grid — worth doing on a dedicated till machine. Press it again, or press Esc, to come back.


Finding a product

Three tools, and they work together:

Search box (in the header). Type any part of the:

  • product name, or
  • SKU (the product's short code), or
  • barcode.

The grid narrows as you type. If you have a barcode scanner, click into the search box first, then scan — the scanner types the barcode for you and the product appears immediately.

Category filter and Brand filter (above the grid). Pick one to show only products in that category or of that brand. Set them back to all to see everything again.

Important

Products with zero stock are not shown in the POS grid at all. If a product is missing, the most likely reason is that it has sold out. Check Sidebar → Products to confirm, then receive more stock through Purchases.


Adding to the cart

  1. Tap or click the product card.
  2. The quantity dialog opens. It shows the product and a quantity box, already filled in with 1 for you.
  3. Change the number if the customer wants more than one.
  4. Confirm. The item drops into the cart.

Whole numbers vs decimals

It depends on the product's unit:

Unit typeExamplesCan you type 1.5?
Counted thingsPiece, Box, Pack, Dozen, Bottle, Can, Pair, Set, CartonNo — whole numbers only
Weighed thingsKilogram, GramYes
LiquidsLiter, MilliliterYes
LengthsMeter, Feet, InchYes

For a decimal-capable unit the box starts at 1.00 instead of 1. So you can sell 2.5 kg of rice, but not 2.5 bottles of oil. If you type a decimal for a counted unit you will be told "Quantity must be a whole number for this unit".

Selling the same product twice

Add it again and the quantity on the existing cart line goes up — you do not get a second line for the same product.


Working with the cart

To do thisDo that
Increase a quantityPress + on the cart line
Decrease a quantityPress − on the cart line
Remove one product entirelyPress the remove/trash icon on that line
Start overPress Clear at the top of the cart
Go to paymentPress Checkout at the bottom

The cart keeps a running Subtotal and Total as you go.

Note

The cart lives only in the browser window. If you refresh the page or the machine restarts, the cart is empty again. Finish a customer before doing anything else.


Checkout

Press Checkout and the Complete Sale dialog opens. Fill it in from the top down.

FieldWhat to enterRequired?
Partial Payment (switch)Turn on only if the customer is not paying in full todayNo
Customer NameThe customer's name. Left blank it is recorded as Walk-in CustomerOnly for partial payment
Customer Phonee.g. 01712345678Only for partial payment
Discount TypeSpecial Offer — the only optionYes (already selected)
Special Offer Price (৳)The amount to take off the total, in takaNo — leave 0 for no discount
Payment MethodCash · Card · Mobile Banking · Bank Transfer · Digital WalletYes
Received Amount (৳)How much cash/money the customer handed overYes
NotesAnything worth remembering about this saleNo

Below the fields is an order summary showing Subtotal, the discount if any, and the Total in large type. Check this against what you told the customer before you finish.

About the discount

The Special Offer Price box is the amount subtracted from the bill — it is not the new price of the sale, despite the name. Enter 50 and the customer pays ৳50 less. The line under the box shows the arithmetic so you can confirm before finishing.

Note

Percentage and fixed-amount discount types are not currently available in the dropdown. Special Offer is the only discount you can apply at the till. To give 10% off, work the taka amount out yourself and type that.

Note

There is no tax box on this screen. Sales made through POS carry no tax line. The tax rate in Settings → Shop Details does not add tax to a POS sale.


Full payment

This is the normal case — the customer pays the whole bill now.

  1. Leave Partial Payment switched off.
  2. Choose the Payment Method.
  3. Type the money received into Received Amount.
  4. If they gave you more than the total, Change: ৳… appears under the box. That is what you hand back.
  5. Press Complete Sale.

The Received Amount must be at least the Total. If it is less, you get "Received amount is less than total amount!" and the sale will not go through. Either collect more money, or switch on Partial Payment and record it as credit.


Partial payment — selling on credit

Use this when a regular customer takes goods now and pays the rest later. The unpaid part becomes a due tracked against that customer.

  1. Switch Partial Payment on. An amber warning box appears reminding you that customer details are required.
  2. Type the Customer Name and Customer Phone. Both are now compulsory — this is how the system knows whose account to charge.
  3. Choose the Payment Method for the part they are paying.
  4. Type what they are paying today into Received Amount.
  5. Due Amount: ৳… appears, along with a note that the balance goes to the customer's account.
  6. Press Complete Sale.

The rules for partial payment:

  • Customer name and phone must both be filled in.
  • Received Amount must be greater than 0 — you cannot record a fully unpaid sale here.
  • Received Amount must be less than or equal to the Total.

Use the phone number consistently for the same person. It is what links their sales together, so one customer with two different phone numbers becomes two separate accounts.

Collecting that money later is covered in Chapter 5 — Dues & Payments.


The receipt

When the sale succeeds, the receipt prints automatically — the print dialog opens on its own. Choose your printer and print, or cancel it if the customer does not want a receipt.

The receipt carries your shop name, phone and address from Settings → Shop Details (Chapter 13).

Each sale gets an invoice number in the form INV-YYYYMMDD-#### — for example INV-20260828-0042, the 42nd sale on 28 August 2026. Quote this number when looking a sale up later or processing a return.

Straight after a successful sale the screen resets itself: the cart empties and the customer, discount, received amount and notes all clear, ready for the next customer.

Printing a receipt again

The POS screen cannot reprint. Go to Sidebar → Sales, find the sale, and print from there — see Chapter 3.


Error messages you will see

MessageWhat happenedWhat to do
Cart is empty!You pressed Checkout with nothing in the cartAdd products first
Please enter a valid quantityThe quantity box was empty, zero or not a numberType a number above 0
Quantity must be a whole number for this unitYou typed a decimal for a counted unitUse a whole number
Insufficient stock!You asked for more than the shop hasReduce the quantity, or receive more stock
Customer name and phone are required for partial payments!Partial payment with blank customer detailsFill both in
Received amount must be greater than 0 for partial payments!Partial payment with nothing receivedCollect at least something, or do not sell on credit
Received amount cannot be greater than total for partial payments!Partial payment above the billThis is a full payment — switch Partial Payment off
Received amount is less than total amount!Full payment but not enough moneyCollect the rest, or use partial payment

Quick reference

A normal cash sale, start to finish:

  1. Search or tap the product → set quantity → confirm.
  2. Repeat for every item.
  3. Checkout.
  4. Payment Method: Cash.
  5. Received Amount = the notes handed over.
  6. Read the Change figure and give it back.
  7. Complete Sale → print.

A credit sale:

  1. Build the cart as normal.
  2. Checkout → Partial Payment on.
  3. Name + phone.
  4. Received Amount = what they pay today.
  5. Check the Due Amount.
  6. Complete Sale → print.

Next: Chapter 3 — Sales

3Sales

The record of every sale the shop has made. Look up an invoice, check what a customer bought, export the day's takings, or start a return.

Who can use this: Owner, Admin, Manager, Staff (by default).

Contents


The screen

Sidebar → Sales.

From the top down: a row of summary tiles, then the export buttons, then the filters, then the list of sales. On a wide screen the sales appear as a table; on a phone they become stacked cards, each showing the same information.


The statistics strip

The tiles at the top recalculate for whichever period you have selected in the filters below. They typically show:

  • Total sales — how much money the sales came to.
  • Number of transactions — how many separate sales.
  • Items sold — total units across all of them.
  • Returns — how many returns happened in the period.

These are a quick health check, not an accounting statement. For proper figures use Chapter 10 — Reports.


Finding a sale

Three controls sit above the list:

Period. A dropdown of ready-made ranges — Today, Yesterday, Last 7 Days, Last 30 Days, This Month, Last Month, This Quarter, This Year, and a Custom Range where you pick your own start and end dates.

Search. Type an invoice number or a customer name. Partial matches work — typing 0042 finds INV-20260828-0042.

Rows per page. Choose 5, 10, 20 or 50 rows. Use the page arrows at the bottom of the list to move between pages.

Tip

The fastest way to find one specific sale is to type its invoice number into search. The customer's receipt has it printed at the top.


Viewing a sale

Click View (the eye icon) on any row. The Sale Details dialog opens showing:

  • The invoice number and the date and time of the sale.
  • The customer's name and phone, or Walk-in Customer.
  • Every line item: product name, SKU, quantity, unit price and line total.
  • Subtotal, discount, and the final total.
  • The payment method and the payment status.
  • How much was received, and any change given.
  • If part of the bill is unpaid, the due amount.
  • Returned quantities if any of this sale has been brought back.
  • Any notes the cashier typed at checkout.

Close the dialog with the ✕ or by clicking outside it.


Starting a return

Every row has a Return button (the circular-arrows icon). Click it and the return wizard opens with this sale already loaded.

This is the only way to start a return — you cannot create one from the Returns screen without a sale to attach it to. The full process is in Chapter 4 — Returns & Exchange.


Exporting

Two buttons near the top:

Export CSV — downloads a spreadsheet file of the sales currently shown, matching your period and search. Open it in Excel or Google Sheets to do your own sums.

Export PDF — opens your browser's print dialog with a formatted, branded version of the list. Choose your printer to print it, or choose "Save as PDF" as the destination to keep a file. The shop name and address come from Settings → Shop Details.

Both exports respect the filters you have set. Set the period to Today before exporting if you want a day-end sheet.


Understanding the figures

What is not on this screen

Some things you might expect are handled elsewhere:

You want toGo to
Reprint a customer's receiptThe receipt prints automatically at the moment of sale in POS. This screen does not reprint; use Export PDF of the sale list, or process the paperwork from the Sale Details dialog.
Cancel a sale entered by mistakeProcess it as a Return — see Chapter 4.
See profit per saleReports → Sales Report
Collect money still owed on a saleChapter 5 — Dues & Payments

Why a sale total might change

If a customer returns part of a sale, the sale's net total goes down but the original total is kept as well. The Sale Details dialog shows both, and the Sales Report separates Original Total, Returns and Net Total into their own columns. This is deliberate: you keep an honest record of what was sold and what came back, rather than pretending the sale was always smaller.

Payment status on a sale

StatusMeans
COMPLETEDPaid in full
PARTIALSome money taken, the rest is a due
PENDINGNothing received yet
REFUNDEDMoney given back through a return
VOIDED / CANCELLEDThe sale no longer counts
OVERDUEA due that has passed its date

Next: Chapter 4 — Returns & Exchange

4Returns & Exchange

When a customer brings something back. Record what came back, refund the right amount, and put the goods back on the shelf.

Who can use this: Owner, Admin, Manager, Staff (by default).

Contents


How a return works

A return always belongs to a sale. You cannot create a floating return — you must start from the original sale, so the system knows what was bought, at what price, and how much is still returnable.

The life of a return has three steps:

   PENDING  ──approve──▶  APPROVED  ──complete──▶  COMPLETED
      │                                                │
      └────────────reject────────▶ REJECTED     stock goes back on the shelf

Stock is only put back at the Complete step. Creating a return does not change your stock figures. This is deliberate — it gives someone senior a chance to look at the goods before they go back into sellable inventory.


Creating a return

  1. Go to Sidebar → Sales.
  2. Find the sale. Search by invoice number if the customer has their receipt.
  3. Click the Return button (circular-arrows icon) on that row.
  4. The return dialog opens with the sale's details already loaded at the top: invoice number, date, total, subtotal and discount.
  5. Fill in the form (next section).
  6. Press the submit button at the bottom.

The return is created with status PENDING and gets a return number in the form RTN-YYYYMMDD-####.


The return form field by field

Return Reason

A single dropdown covering the whole return. Pick the closest match — see Return reasons for the list. This is what shows up in reporting when you want to know why goods come back.

Select Items to Return

The heart of the form. Every line from the original sale is listed with:

ShownMeaning
BoughtHow many the customer originally bought
ReturnedHow many have already come back on earlier returns
AvailableHow many can still be returned — this is the limit
Price eachThe unit price actually paid on that sale

Tick the checkbox next to each product being returned. A line with Available 0 cannot be ticked — it has already been fully returned.

When you tick a line, three boxes appear for it:

FieldWhat to enter
Return qtyHow many of that product are coming back. Minimum 1, maximum the Available number.
ConditionNew · Used · Damaged · Defective — the state the goods are in
ReasonThe reason for this particular item, which can differ from the overall reason

A counter beside the heading shows how many items you have selected.

Tip

Condition matters. Marking goods as New means they can go straight back on the shelf. Damaged or Defective tells whoever completes the return that the goods should not be resold — they should be recorded as a Product Removal instead.

Restocking Fee (৳)

An amount deducted from the refund — your handling charge. Leave it at 0 for a normal goodwill return.

Two things to know: it is entered in whole taka (decimals are rounded down), and it cannot be larger than the refund itself. If you type too much you will get an error and the submit button will stay disabled until you fix it.

Customer Name (if different) / Customer Phone (if different)

Leave both blank in the normal case — the original customer's details carry over automatically (you can see them as the greyed-out placeholder text). Fill them in only when someone other than the original buyer is bringing the goods back.

Additional Notes

Free text. Useful for anything that does not fit the fields: "Customer says it stopped working after two days, kept the box".


How the refund is calculated

   refund for each item  =  return qty  ×  price actually paid per unit
   total refund          =  sum of all item refunds
   amount given back     =  total refund  −  restocking fee

The unit price used is the price on the original sale, not today's selling price. If the product's price has gone up since, the customer still gets back exactly what they paid.

A summary panel at the bottom of the form shows the figures as you build the return, including the restocking fee shown in red as a deduction. Check it before submitting.


The Returns screen

Sidebar → Returns. Every return in the shop, newest first.

Filters:

FilterOptions
StatusAll Status, or one of PENDING / APPROVED / COMPLETED / REJECTED / CANCELLED
TypeAll Types, or Full Return / Partial Return / Exchange
SearchReturn number, customer name, or invoice number
Date rangeStart and end dates

Use Clear to reset the filters. Each row shows the return number, the invoice it came from, the customer, type, refund amount, status badge and date. The status badges are colour coded: yellow for pending, blue for approved, green for completed, red for rejected, grey for cancelled.

Click View on any row to open the return.

Note

This screen is for looking at and managing returns. To create one, start from Sales.


Approving and completing a return

Open the return from Sidebar → Returns → View. The action buttons appear at the top of the details view, and which ones you see depends on the current status.

When the return is PENDING

Approve — you accept the return. Status becomes APPROVED. Nothing has moved yet: no stock, no money.

Reject — you refuse it. A small box asks you to type a rejection reason before it goes through. Status becomes REJECTED and the return is closed. Type a real reason; it stays on the record.

When the return is APPROVED

Complete — the final step. This is the one that matters:

  • The returned quantities are added back to stock.
  • The return is marked COMPLETED and stamped with the time and who did it.
  • The refund is recorded against the sale.

Warning

Complete cannot be undone. Check the goods physically before pressing it. If the goods are not fit to sell, complete the return and then record a Product Removal so your stock count stays honest.

Practical routine

For a small shop where the same person handles the whole thing, the routine is: create the return → Approve → Complete, all in one go. The three steps exist so that larger shops can put a manager between the counter and the stock.


Status meanings

StatusMeaningStock returned?Next step
PENDINGRecorded, waiting for a decisionNoApprove or Reject
APPROVEDAccepted, goods not yet back in stockNoComplete
COMPLETEDFinished. Stock is back, refund recordedYesNone — final
REJECTEDRefused, with a stated reasonNoNone — final
CANCELLEDCalled off before finishingNoNone — final

Return reasons

ReasonUse when
DEFECTIVE PRODUCTIt does not work
WRONG ITEMThe wrong thing was sold or picked up
DAMAGEDIt arrived or was sold broken
NOT AS DESCRIBEDIt is not what the customer was told it was
SIZE ISSUEWrong size
COLOR ISSUEWrong colour
QUALITY ISSUEWorks, but the quality is poor
CUSTOMER CHANGE MINDSimply changed their mind
LATE DELIVERYArrived too late to be useful
OTHERNothing above fits — explain in the notes

Be consistent. These reasons are the only way to later answer "which supplier keeps sending us faulty goods?"


Rules and limits

  • You can never return more than was bought. The Available figure on each line enforces it, and it accounts for earlier returns against the same sale.
  • Several returns per sale are fine. A customer can bring back one item today and another next week; each is its own return record.
  • The restocking fee cannot exceed the refund. You cannot end up owing the customer nothing while claiming a fee.
  • Stock moves only on Complete. A pending or approved return has not changed your inventory.
  • A completed return cannot be reversed. If you complete one in error, correct it by recording a fresh sale or a product removal, whichever matches what actually happened.

On the Type field

Returns are recorded as Partial Return by default and the type selector is not currently exposed on the return form — so in practice every return you create will be of that type, whether the customer brings back one item or all of them. The Type filter on the Returns screen still works, and older records may carry other types. This does not affect the refund amount, the stock that goes back, or any report: those are all driven by the items and quantities you tick, not by the type label.

Likewise, the exchange flow (swapping goods for a different product rather than refunding) exists in the system but is not reachable from the return form as it currently stands. To handle an exchange today: complete the return for the goods coming back, then ring the replacement through POS as a new sale.


Next: Chapter 5 — Dues & Payments

5Dues & Payments

Money customers still owe you, and recording it when they pay.

Who can use this: Owner, Admin, Manager, Staff (by default).

Contents


Where dues come from

A due is created when a sale is rung up with Partial Payment switched on at the POS — the customer takes the goods, pays part of the bill, and the rest is charged to their account. See Chapter 2 — Partial payment.

That is the only way a due appears. The customer record itself is created automatically the first time you sell to that phone number on credit; there is no separate "add customer" screen.

Important

The phone number is the customer's identity. Type it the same way every time. 01712345678 and +8801712345678 will be treated as two different people, and their dues will not add up together.


The screen

Sidebar → Dues. The page is titled Dues & Payments Management.

At the top right is a New Payment button — available from every tab. Below that, four tabs:

TabAnswers the question
All PaymentsWhat money have we collected?
Customer DuesWho owes us, and how much?
Overdue SalesWhich unpaid bills are late?
SummaryWhat is the overall picture?

All Payments tab

Every payment you have recorded, newest first, with the payment number, customer, amount, method, status and date.

Each payment gets a number in the form PAY-YYYYMMDD-#### — quote it if a customer questions whether a payment was recorded.

Click a row to open the payment's details: the full amount, method, any transaction reference, which invoices it was applied to, who received it, and the notes.


Customer Dues tab

Your list of debtors. For each customer you see their name, phone, and current balance — the total they owe across every unpaid sale.

Open a customer to see the individual invoices making up the balance: invoice number, date, total, how much has been paid, and how much is still due.

Each customer row has an option to take a payment, which opens the payment form with that customer already filled in. This is the quickest route when someone walks in to settle up.


Overdue Sales tab

The subset of unpaid bills that have passed their due date. This is your chase list — work through it before it grows.

Same information as Customer Dues, filtered down to what is late.


Summary tab

The overall credit position of the shop:

  • Total customers with dues — how many people owe you money.
  • Total outstanding amount — the whole sum owed to the shop.
  • Average due per customer.
  • Customers over credit limit — anyone who has been allowed to owe more than their agreed limit.
  • Recent payments and total pending invoices.

Watch the total outstanding figure. Rising steadily means you are selling on credit faster than you are collecting.


Recording a payment

Press New Payment (top right), or take a payment from a customer's row in Customer Dues. The Create New Payment dialog opens.

The form handles one customer paying off one or more invoices at once, which is how it usually happens in practice — a customer hands over ৳5,000 to clear three old bills.

Step by step:

  1. Customer * — pick from the dropdown. Each entry shows the name with the phone number beside it, so you can tell two same-named customers apart. If you came in from a customer's row, this is already selected and locked.
  2. A Customer Due Summary card appears showing their Total Due and how many Overdue Sales they have. Use this to tell the customer where they stand.
  3. Payments * — build the list of what this money is paying off. Use the add button to add a row, and for each row:

    • Invoice Number * — pick the unpaid invoice from the dropdown.
    • Amount (৳) * — how much of this payment goes against that invoice.

    Add another row for each additional invoice. The rows must add up to the money you actually received.

  4. Payment Method * — how they paid (see the next section).
  5. Fill in whichever extra reference fields appear for that method.
  6. Notes — anything worth recording.
  7. Submit.

Validation you may hit:

MessageFix
Please add at least one paymentYou submitted with no invoice rows. Add one.
Please select an invoice for payment #nRow n has no invoice chosen.
Please enter a valid amount for payment #nRow n has 0 or a blank amount.

Payment methods and their extra fields

Choosing the method changes which reference boxes appear. Fill them in — they are what lets you match your books against a bank or bKash statement later.

MethodExtra fields shown
CashNone
CardCard/Cheque Number
Mobile BankingMobile Operator (e.g. bKash, Nagad) · Transaction ID
Bank TransferBank Name · Account Number
OtherReference/Transaction ID

Tip

Always record the Transaction ID for mobile banking. When a customer insists they sent money, that number is the only thing that settles the question.


How balances update

When a payment is saved:

  1. Each invoice's paid amount goes up and its due amount goes down by what you allocated.
  2. An invoice paid off completely changes status from PARTIAL to COMPLETED.
  3. The customer's current balance falls by the total payment.
  4. A line is written to the customer's balance history, showing the balance before, the change, and the balance after.

The balance history is a permanent trail. It is what you show a customer who disputes their account — every sale that added to their balance and every payment that reduced it, in order.


Voiding a payment

A payment recorded in error can be voided. Voiding reverses everything it did: the invoice goes back to unpaid, the customer's balance goes back up, and the reversal is written into the balance history.

Warning

The voided payment stays visible in the list, marked VOIDED. This is intentional — the record is never erased, only cancelled, so the history stays auditable. Never void a payment simply to tidy the list.


Good habits for credit customers

  • Take the phone number every time. Without it the sale cannot be tied to an account.
  • Type phone numbers identically. Pick one format for the whole shop and stick to it.
  • Record payments the moment you receive them. A payment sitting in your pocket unrecorded is a customer who will be chased for money they already paid.
  • Check Overdue Sales weekly. Small debts chased early are collected; large ones chased late usually are not.
  • Watch the Summary total. If total outstanding grows month after month, tighten who you sell to on credit.
  • Never delete — void. If something is wrong, void it, then record the correct entry.

Next: Chapter 6 — Products

6Products

Your catalog. Everything you sell has to exist here first.

Who can use this: Owner, Admin, Manager (by default).

Contents


Before you start

You need at least one category before you can add a product — the Category field is compulsory and its dropdown will be empty otherwise. Brands are optional but useful. Set both up first in Chapter 12 — Setup.


The screen

Sidebar → Products. Two tabs:

  • List — everything in your catalog, with search, filters and summary tiles.
  • Add — the new product form. (When you are editing something, this tab becomes Edit.)

Adding a product

Sidebar → Products → Add. The form is titled Add New Product.

FieldWhat to enterRequired
Product SKUYour short code for the product — leave it on auto✓
Product NameThe full name, e.g. iPhone 15 Pro Max 256GB✓
CategoryWhich group it belongs to✓
BrandWho makes it — optional
UnitHow it is counted or measured✓
Storage LocationWhere it physically sits, e.g. Aisle 3, Shelf B
Purchase PriceWhat you pay per unit✓
Selling PriceWhat the customer pays per unit✓
Stock QuantityHow many you have right now✓
Low Stock ThresholdThe level at which you want warning✓
DescriptionAny extra detail

Fields marked * on screen must be filled in. Save when done.

Note

There is no barcode, tax rate or reorder point box on this form. Barcodes are generated for you (see below); tax rate and reorder point are stored by the system but are not set from this screen.


The SKU

The SKU (Stock Keeping Unit) is your internal code for a product. It appears on receipts, reports and exports, and it is the fastest way to search.

Two small badges under the box control how it is produced:

Auto-generate (the default, and what you should use). The system creates the code for you and the box is greyed out. Beside it is a refresh button that produces the next code, useful if you want to skip one.

Manual. Click this badge to unlock the box and type your own. Whatever you type is converted to CAPITALS automatically. Use this if your shop already has an established coding system.

The copy button beside the box copies the SKU to your clipboard.

Tip

Stay with auto-generation unless you have a real reason not to. Hand-typed codes drift into duplicates and typos, and every SKU must be unique.


Barcodes

A barcode is created automatically when you save a new product. There is nothing to type.

You can then:

  • Scan it at the till. Click into the POS search box, scan, and the product appears — see Chapter 2.
  • Print labels for your shelves — see below.

If a product already carries a manufacturer's barcode, you can put that number onto the product by editing it, so scanning the printed pack works. Barcodes must be unique — trying to give two products the same one is refused with "Product with this barcode already exists".


Choosing the right unit

The unit decides whether you can sell fractions of the product. Get it right at creation; it governs behaviour at the till every day afterwards.

Whole numbers only — you cannot sell 1.5 of these:

Piece · Box · Pack · Dozen · Set · Bag · Bottle · Can · Jar · Sachet · Bundle · Unit · Pair · Roll · Sheet · Carton · Case · Packet · Lot

Decimals allowed — you can sell 1.5 of these:

Kilogram · Gram · Liter · Milliliter · Meter · Feet · Inch

How to choose:

You sellUse
Rice, dal, sugar loose by weightKilogram
Spices in small weightsGram
Cooking oil from a drumLiter
Bottled drinksBottle or Piece
Cloth, wire, pipe by lengthMeter or Feet
Eggs by the dozenDozen
Anything counted one at a timePiece

Warning

Changing a product's unit later does not convert your existing stock number. Switch from Kilogram to Gram and a stock of 5 still reads 5 — now meaning 5 grams instead of 5 kilograms. Fix the stock figure yourself immediately if you ever change a unit.


Pricing

Purchase Price is your cost per unit. Selling Price is the customer's price per unit. The difference is your margin, and it drives every profit figure in the system — the Dashboard profit tiles, the Sales Report, and the Profit & Loss statement.

   profit per unit  =  Selling Price  −  Purchase Price
   margin %         =  profit ÷ Selling Price × 100

Important

The purchase price on the product record is a default. The cost actually used in profit calculations comes from the purchase batch the goods were received in — see Chapter 7. If you buy the same product at different prices over time, receiving stock through Purchases is what keeps your profit honest.

Enter both prices with paisa where relevant, e.g. 10.50.


Low stock threshold

The point at which the product should be treated as running out. Set it to roughly the amount you sell during the time it takes your supplier to deliver.

Once stock falls to or below this number the product:

  • appears in the Stock Watch card on the Dashboard,
  • appears in the Low Stock Alert section of the Inventory Report,
  • is flagged as Low Stock in the product list.

A fast-selling item with a slow supplier deserves a high threshold. A rarely-sold item can sit at 1 or 2.


The product list

Sidebar → Products → List.

Summary tiles across the top: how many products you have, how many are low on stock, your total inventory value, and similar.

Search by name, SKU or barcode. On a wide screen the products form a table; on a phone they become cards. Set the rows per page and use the arrows at the bottom to page through.

Stock status is shown against each product:

BadgeMeaning
In StockAbove the low stock threshold
Low StockAt or below the threshold — reorder soon
Out of StockZero. Will not appear in POS at all.

Row actions: View · Barcode · Edit · delete.

The Barcode button is greyed out for any product with no barcode.


Product details

Click View on any product. Four tabs:

Overview — the full record: name, SKU, barcode, category, brand, unit, both prices, current stock, threshold, storage location, description and status.

Inventory — the purchase batches this product has been received in, each with its quantity, what remains, the unit cost paid and when it arrived. This is where you see that you bought 20 units at ৳100 and 30 more at ৳110, and how much of each is left.

Sales — the sales this product has appeared in. Good for checking whether something is actually moving.

Activity — a dated log of everything that has happened to this product record:

ActionMeans
CREATEDThe product was added
UPDATEDDetails were edited
RESTOCKEDStock was received
ADJUSTEDThe stock figure was changed directly
PRICE_CHANGEDA price was edited
STATUS_CHANGEDActivated or deactivated
DELETEDThe product was removed

Each entry names who did it and when. This is your first stop when a stock figure looks wrong.


Editing a product

Click Edit on a product row. The form opens pre-filled and the Add tab is relabelled Edit.

The edit form has the same fields as the add form except Stock Quantity — you cannot change stock by editing the product. That is deliberate: stock has to move for a reason, and the reason must be recorded. See Adding stock.

Everything else can be changed. Price changes take effect on the next sale; sales already made keep the price they were sold at.


Deleting a product

The delete button (trash icon) removes a product from your catalog.

Warning

Think before deleting. A product tied up in past sales, purchase batches or returns should not be removed — its history is part of your records. If you have simply stopped selling something, deactivate it instead. It then disappears from POS while its history stays intact.

Delete is for genuine mistakes: a product created twice, or one created with the wrong details before it was ever sold.


Printing barcode labels

  1. Sidebar → Products → List.
  2. Find the product.
  3. Click Barcode (the printer icon).
  4. A print preview opens showing the label with the barcode, product name and price.
  5. Choose how many copies you need and print.

Print onto label stock and stick them on shelves or products. After that, scanning at the till replaces typing entirely — faster and with no risk of ringing up the wrong item.

If you see "No barcode available for this product", that product has no barcode stored. Edit it and add one.


Adding stock

Two different situations, two different tools. Choosing correctly is what keeps your profit figures true.

You bought stock — use Purchases

Sidebar → Purchases and record what you received, including what you paid. This creates a batch, and the cost from that batch is what the system uses to work out profit when the goods sell.

This is the normal, correct way to add stock. See Chapter 7.

You are correcting a count — adjust the stock

When a stock-take shows 48 on the shelf but the system says 50, the two missing units are not a purchase. Record what actually happened:

  • Damaged, expired, stolen or lost → Product Removal, which records the loss against your profit.
  • A genuine counting error → adjust the stock figure, and the change is written to the product's Activity log with your name on it.

Warning

Never use a stock adjustment to record goods you bought. Stock added that way has no cost attached, so it looks like it cost you nothing — and every sale of it will show a wildly inflated profit.


Next: Chapter 7 — Purchases

7Purchases

Recording stock you have received from suppliers, with what you paid for it. This is what makes every profit figure in the system trustworthy.

Who can use this: Owner, Admin, Manager (by default).

Contents


Why this screen matters

Profit is selling price minus what the goods cost you. The second half of that sum has to come from somewhere, and it comes from here.

When you record a purchase you tell the system two things: how many units arrived, and what you paid per unit. When those units sell, that cost is subtracted from the sale to give the profit. Skip this step and the system has no cost to work with, so it will report profit that you have not actually made.

The rule

goods you bought come in through Purchases. Nothing else.


What a batch is

Each purchase you record creates a batch — one delivery of one product at one price.

Buy 20 units of the same product at ৳100 in January and 30 more at ৳110 in March, and you have two batches. The system tracks them separately because they cost different amounts.

Each batch holds:

The productWhich item this is
Total quantityHow many arrived
Quantity remainingHow many are still unsold
Unit costWhat you paid per unit
Expiry dateIf it has one
Received dateWhen it arrived
Who recorded itYour name

The product's overall stock figure is simply the remaining quantities of all its batches added together.


FIFO — how cost is worked out

FIFO stands for First In, First Out: the oldest stock is treated as sold first.

Using the example above:

   Batch A (January):  20 units @ ৳100     ← sells first
   Batch B (March):    30 units @ ৳110     ← sells once A runs out

Sell 25 units at ৳150 each and the system works out:

   20 units come from Batch A:  20 × ৳100 = ৳2,000
    5 units come from Batch B:   5 × ৳110 =   ৳550
                                  cost   = ৳2,550

   revenue = 25 × ৳150 = ৳3,750
   profit  = ৳3,750 − ৳2,550 = ৳1,200

Batch A is now empty; Batch B has 25 units left.

This is the same method accountants use, and it matches how a shop actually works — you sell the older stock off the front of the shelf. It means:

  • Your profit figures are real, not estimates.
  • When your supplier raises prices, your reported profit narrows honestly instead of staying flattering.
  • Your inventory value reflects what the goods really cost you.

None of it needs any thought from you at the till. Record purchases properly and the arithmetic happens by itself.


Recording a purchase

Sidebar → Purchases → Add.

FieldWhat to enterRequired
ProductWhich product arrived✓
QuantityHow many units, e.g. 100✓
Unit Cost (৳)What you paid per unit, e.g. 15.50✓
Batch ValueCalculated for you — quantity × unit cost—
ReasonWhy, e.g. Initial stock, Restock
NotesAnything else about this delivery

Choosing the product. The product box is a searchable list. Click it and type part of the name or the SKU; matches narrow as you type. Pick one and it shows as Product Name (SKU: ABC123).

Unit Cost is per unit, not per delivery. If you paid ৳1,550 for 100 pieces, enter 15.50, not 1550. Batch Value fills in as you type — check it against your supplier's invoice before saving. If it does not match, you have the wrong number in one of the boxes.

Save, and the quantity is added to the product's stock immediately.

Note

The purchase form does not currently include an expiry date box. Expiry dates are stored on batches and shown throughout the screen for batches that have one, but they are not captured at this point in the flow.


The purchase list

Sidebar → Purchases → List. Titled Purchase Batches. Every batch, newest first, showing the product, quantity received, quantity remaining, unit cost, batch value and received date.

Search and paging work as on the other list screens.

Reading the list, the numbers to compare are quantity received against quantity remaining:

  • Remaining close to received → barely selling. Money sitting still on a shelf.
  • Remaining near zero → selling well. Reorder before it hits zero.

The statistics cards

Above the list is a row of cards summarising your stock position:

CardWhat it tells you
Total BatchesHow many batches you hold, and how many have an expiry date
Total ValueThe money tied up in stock, and the average batch value
Stock StatusThe overall in-stock position
UtilizationHow much of what you bought has actually sold
Quantity OverviewTotal units received against units remaining
Expiry AlertsBatches expiring soon (amber) and already expired (red)
PerformanceAverage batch quantity, average utilisation, and how many batches carry no expiry date
EfficiencyHow well stock is turning over

Utilization is the one to watch. A low percentage means you bought more than you can sell — cash locked in stock instead of working for you.


Batch details

Click a batch to open it. You see everything recorded about that delivery, plus how much of it remains and what it is worth today.

You can also reach a product's batches the other way round: Sidebar → Products → View on a product → the Inventory tab lists every batch for that one product. That view answers "what did I actually pay for the stock I am holding?"


Expiry tracking

For batches that carry an expiry date, the system watches it for you:

MarkerMeaning
Amber badgeExpiring soon — sell it, discount it, or move it to the front
Red badgeAlready expired — it must not be sold

Check Expiry Alerts at the start of every week if you handle food, medicine or cosmetics.

When something does expire, take it off the shelf and record it as a Product Removal with the reason EXPIRED. That removes it from stock and books the loss properly.

The Performance card shows how many batches carry no expiry date at all, which tells you how much of your stock you are not monitoring this way.


Common mistakes

Entering the total invoice price as the unit cost. ৳1,550 typed in place of ৳15.50 makes the system think every unit cost you ৳1,550, so every sale of that product will report a huge loss. Always check Batch Value before saving.

Adding stock by editing the product instead. Stock added that way has no cost attached. The system treats it as free, and every sale of it shows an inflated profit. Always come here.

Recording one batch for goods bought at two prices. If the supplier gave you 50 at ৳100 and 50 more at ৳90, record two batches. Averaging them by hand throws away the accuracy the system is built to give you.

Not recording purchases at all. The stock number will be wrong, the POS will refuse sales as out of stock, and every report will be worthless. Record deliveries the day they arrive.


Next: Chapter 8 — Product Removals

8Product Removals

Recording stock that leaves without being sold — damaged, expired, stolen, given away or used in-house.

Who can use this: Owner, Admin, Manager (by default).

Contents


Why bother recording losses

Two reasons, and both matter.

Your stock count stays true. Ten broken bottles that are never recorded stay in the system as sellable stock forever. The POS offers them, the reorder figures are wrong, and every stock-take turns into a hunt for goods that no longer exist.

Your profit figures stay honest. Breakage and theft are real costs of running a shop. Record them and the Profit & Loss statement shows what the shop actually earned. Ignore them and it reports a profit you never had.

It is uncomfortable to write down losses. Do it anyway — the shop that measures its wastage is the one that can reduce it.


The screen

Sidebar → Product Removals. Three tabs:

  • List — every removal recorded.
  • Add — the removal form. (Becomes Edit when you are editing one.)
  • Statistics — where your losses are actually coming from.

Recording a removal

Sidebar → Product Removals → Add.

FieldWhat to enterRequired
ProductWhich product is being removed✓
Reason for RemovalWhy — see the list below✓
Quantity to RemoveHow many units✓
Batch IDThe specific batch, if you know it
Expiry DateThe expiry date of the affected goods
Damage DescriptionWhat happened, in your own words
Estimated LossWhat it cost you, in taka
Additional NotesAnything else

When you save, the quantity is taken out of stock immediately. There is no approval step — unlike returns, a removal takes effect at once.

Damage Description is worth filling in properly. "Carton dropped during unloading, 6 of 12 bottles broken" tells you something six months later; "damaged" does not.


Removal reasons

Pick the one that genuinely fits. These are the only way to answer "where is our stock going?"

ReasonUse when
EXPIREDPast its date and unsellable
DAMAGEDDamaged in general handling
BROKENPhysically broken
DEFECTIVEFaulty out of the box
STOLENKnown theft
LOSTMissing with no explanation
SAMPLEGiven to a customer to try
QUALITY_ISSUEBelow the standard you will sell
RECALLWithdrawn by the manufacturer
WASTESpoiled or wasted
DONATIONGiven away
EMPLOYEE_USETaken for shop or staff use
TESTINGUsed to test something
DEMONSTRATIONUsed to demonstrate a product
SHOWROOM_DISPLAYPut on display and no longer sellable
PROMOTIONALGiven away as promotion
MANUFACTURER_DEFECTFaulty from the factory
SHIPPING_DAMAGEDamaged in transit to you
STORAGE_DAMAGEDamaged in your own storeroom
NATURAL_DISASTERFlood, fire, storm
OTHERNothing above fits — explain in the notes

Some of these carry a lesson if you use them consistently:

  • Lots of SHIPPING_DAMAGE → take it up with your supplier or courier.
  • Lots of STORAGE_DAMAGE → your storeroom needs attention.
  • Lots of EXPIRED → you are over-ordering, or not rotating stock to the front.
  • Lots of LOST → look carefully; unexplained disappearance is often theft.

Estimated loss

What the removed goods cost you. As a rule use the purchase price, not the selling price — you lost what you paid, not what you hoped to earn.

   estimated loss  =  quantity removed  ×  purchase price per unit

Six bottles that cost you ৳80 each is a ৳480 loss, even if you were going to sell them at ৳120.

Leaving this blank still removes the stock, but the loss will not appear in your financial figures. Fill it in — it is the number that makes the Statistics tab and the Profit & Loss statement meaningful.


The removal list

Sidebar → Product Removals → List. Every removal, newest first, showing the product, quantity, reason, estimated loss, who recorded it and when.

Click a row to see the full record including the damage description, batch details and notes.


Filtering removals

There is a filter dialog offering:

FilterUse
Start / End dateA particular period
ReasonOne reason at a time — e.g. only expiries
ProductOne product's whole loss history
Min / Max lossOnly losses within a value range — useful for finding the big ones

You can also list a single product's removals directly, or list everything with one particular reason.


The Statistics tab

Sidebar → Product Removals → Statistics. This is the tab that pays for the effort of recording removals.

SectionWhat it shows
Total removalsHow many removal records exist
Total quantityHow many units have left this way
Total lossThe money lost, added up
Monthly removalsCount, quantity and loss month by month — is it getting better or worse?
Reason breakdownLosses grouped by reason — where the problem actually is
Product breakdownWhich products you lose most of
Recent removalsThe latest few

How to read it: find your biggest number in the reason breakdown and deal with that one cause. Most shops discover their losses are concentrated in one or two reasons and one or two products, and both are usually fixable.


Editing and deleting

Edit lets you correct a removal — the reason, quantity, estimated loss, description or notes. Correcting the quantity adjusts stock to match.

Delete removes the record and puts the stock back. Use it only when the removal should never have been recorded — you found the "lost" carton behind the shelf, or you recorded the wrong product.

Warning

Deleting a removal silently increases your stock. Never delete one to tidy up the list. If goods really did leave the shop, the record belongs there, however unpleasant it looks in the statistics.


Where losses show up

A recorded removal reaches:

  • Product stock — reduced immediately.
  • Profit & Loss statement — as Removals Loss, subtracted right at the end:

       Operating Profit  −  Removals Loss  =  Net Profit

    See Chapter 10.

  • The Statistics tab — the analysis above.
  • The product's Activity log.

This is why a shop can look profitable on sales and still end the month thin: the losses come off at the bottom. If Net Profit is far below Operating Profit, your removals are the reason, and the Statistics tab will tell you which ones.


Next: Chapter 9 — Expenses

9Expenses

Every taka the shop spends that is not buying stock — rent, salaries, electricity, transport.

Who can use this: Owner, Admin (by default).

Contents


What belongs here

Yes — record it here: rent · staff salaries · electricity, water, gas, internet · shop supplies (bags, receipt rolls, cleaning) · advertising and signage · transport and delivery costs · repairs and maintenance · insurance · trade licence and taxes · bank charges

No — these go elsewhere:

SpendingWhere it belongs
Buying stock to sellPurchases — that is cost of goods, not an expense
Goods damaged or expiredProduct Removals
Refunding a customerReturns

The distinction between an expense and stock is the whole point of the Profit & Loss statement. Stock cost is subtracted to give Gross Profit; expenses are subtracted after that to give Operating Profit. Put stock purchases in here and both figures become meaningless.


The screen

Sidebar → Expenses. Two tabs: List and Add (which becomes Edit when editing).


Recording an expense

Sidebar → Expenses → Add.

FieldWhat to enterRequired
DateWhen the money was spent — not when you typed it in✓
Amount (৳)How much, e.g. 12000.00✓
CategoryWhich kind of expense✓
Payment MethodHow you paid✓
Reference NumberBill or invoice number, e.g. Invoice #12345
Receipt UploadA photo or scan of the bill
DescriptionWhat it was for

Important

Set the Date to the day the expense actually happened. Type July's electricity bill in August with August's date and your monthly reports will both be wrong — July looks too cheap, August too expensive.


Expense categories

CategoryCovers
RENTShop rent, godown rent
UTILITIESElectricity, water, gas, internet, phone
SALARIESStaff wages, bonuses
SUPPLIESBags, receipt rolls, stationery, cleaning materials
MARKETINGAdvertising, signboards, promotions
TRANSPORTATIONDelivery charges, fuel, rickshaw and van fares
MAINTENANCERepairs, servicing, painting
INSURANCEShop and stock insurance
TAXESTrade licence, VAT payments, government fees
OTHERAnything genuinely not covered above

Use OTHER sparingly. An expense breakdown where the largest slice is "Other" tells you nothing. If you keep using it for the same kind of spending, pick the nearest real category and stay consistent.


Payment methods

MethodUse for
CASHPaid from the till or your pocket
BANK_TRANSFERSent from a bank account
CREDIT_CARDPaid by credit card
DEBIT_CARDPaid by debit card
MOBILE_PAYMENTbKash, Nagad, Rocket and similar

Receipts

Receipt Upload attaches an image or scan of the bill to the expense record.

Worth doing for anything substantial. Paper receipts fade, get lost, or go missing exactly when your accountant asks for them; the attached copy stays with the record permanently. Photograph the bill with your phone and upload it while you are entering the expense.


The expense list

Sidebar → Expenses → List. Every expense with its date, category, amount, payment method, reference and who recorded it.

Filter by date range and category, and search by description or reference number. Click a row to see the full record including the description and the attached receipt.


Statistics

The summary figures above the list cover the period you have selected:

  • Total expenses — everything spent in the period.
  • Number of expenses — how many separate entries.
  • Average expense.
  • Highest expense — the single biggest item.
  • Category breakdown — the total for each category, so you can see where the money goes.

Check the category breakdown monthly. In most shops two or three categories account for nearly everything, and those are the only ones where cost-cutting is worth your effort.


Exporting

Export CSV downloads the filtered list as a spreadsheet. Useful for handing your accountant a month's expenses, or for doing your own analysis in Excel.

Set the date filter to the period you want before exporting — the export follows your filters.


Editing and deleting

Edit corrects any field of an expense — a wrong amount, a wrong category, a wrong date.

Delete removes the record entirely.

Warning

Deleting an expense changes past profit figures. A month you already reported on will quietly show a different net profit afterwards. Prefer editing a wrong entry to deleting it, and delete only genuine duplicates or entries that were never real spending.


How expenses affect profit

Expenses sit in the middle of the Profit & Loss statement:

   Gross Sales
   −  Returns
   =  Net Revenue
   −  Cost of Goods Sold        ← what your stock cost (from Purchases)
   =  Gross Profit
   −  Operating Expenses        ← this chapter
   =  Operating Profit
   −  Removals Loss             ← damaged and expired stock
   =  Net Profit

Gross Profit is what your trading earns. Operating Profit is what is left after the cost of keeping the doors open. The gap between them is this screen.

A shop with healthy gross profit and thin net profit does not have a pricing problem — it has an expense problem, and the category breakdown will show you exactly where.

The full statement is in Chapter 10 — Reports.


Next: Chapter 10 — Reports

10Reports

Three reports that answer the questions an owner actually asks: what did we sell, what are we holding, and did we make money?

Who can use this: Owner, Admin (by default).

Contents


Finding the reports

Sidebar → Reports. Click the row to expand it:

  • Sales Report
  • Inventory Report
  • Profit & Loss

Each opens as its own page with a Summary view (charts and headline figures) and a Detailed view (the full tables).


The period filter

Sales and Profit & Loss both start with a period selector: Today, Yesterday, Last 7 Days, Last 30 Days, This Month, Last Month, This Quarter, This Year, or a Custom Range with your own dates.

The Inventory Report has no period — it always shows stock as it is right now.

Days run on Bangladesh time (Asia/Dhaka), so "Today" starts at midnight local time whatever timezone the computer is set to.


Sales Report

What it answers: what did we sell, to whom, and how were we paid?

Headline figures

FigureMeaning
Gross SalesEverything sold before returns are taken off
ReturnsThe value customers brought back
Net RevenueGross Sales − Returns. What you actually sold.
Net ProfitWhat you earned after costs
Items SoldUnits sold, net of returns
TransactionsHow many separate sales
Avg Order ValueNet Revenue ÷ Transactions — the average basket
Return RateWhat proportion of sales came back

Tables

Sales Details — every sale in the period:

Column
InvoiceThe invoice number
CustomerName, or Walk-in
ItemsNet units on the sale
Original TotalThe bill as first rung up
ReturnsValue returned from this sale
Net TotalWhat the sale is finally worth
PaymentMethod used
DateWhen

Top Selling Products — product, net quantity, net revenue, returns and return rate.

Payment Methods — method, number of transactions, amount and share of the total.

Category Breakdown — revenue and share per category.

What to look at

Avg Order Value is the number most shops ignore and most easily improve. Raising it means each customer already through the door spends more.

Return Rate per product is a quality warning. One product with a return rate far above the rest has a real problem — cross-check it in Returns to see the reasons.

Payment Methods tells you how your customers want to pay. If mobile banking is climbing year on year, make it easy at the counter.


Inventory Report

What it answers: what am I holding, what is it worth, and what am I about to run out of?

Always current — no period to choose.

Headline figures

FigureMeaning
Total ProductsProducts in the catalog
Active ProductsThose currently being sold
Inventory ValueWhat your stock cost you
Potential RevenueWhat it would fetch at selling prices
Stock QuantityTotal units held
Low StockProducts at or below their threshold
Out of StockProducts at zero
TurnoverHow many times your stock sells through and is replaced

Tables

Inventory Details — SKU, product, category, stock, threshold, purchase price, selling price, margin, value and status for every product.

Category Breakdown — number of products and stock value per category.

Low Stock Alert — products at or below threshold, with stock and threshold side by side. This is your reorder list.

Out of Stock — products at zero, with their prices. Every one is a sale you cannot make today.

What to look at

Inventory Value is cash you have already spent, sitting on shelves. Watch the trend: if it grows while sales stay flat, you are over-ordering.

Turnover is the efficiency of that cash. Higher means the same money is being recycled into sales more often. A low figure with a high inventory value means dead stock.

Out of Stock deserves attention every single day. Each entry is money walking out of the door, and it is worse than it looks — a customer who cannot get what they came for often buys nothing at all.


Profit & Loss Report

What it answers: did the shop actually make money?

This is the report to read if you only read one.

The statement

      Gross Sales                        everything sold
   −  Returns                            what came back
   ─────────────────────────
   =  Net Revenue                        what you really sold
   −  Cost of Goods Sold                 what that stock cost you (FIFO)
   ─────────────────────────
   =  Gross Profit                       what trading earns
   −  Operating Expenses                 rent, salaries, bills
   ─────────────────────────
   =  Operating Profit                   what running the shop earns
   −  Removals Loss                      damaged, expired, stolen stock
   ─────────────────────────
   =  NET PROFIT                         what you actually made

Every line comes from somewhere you can check:

LineComes from
Gross SalesPOS and Sales
ReturnsReturns
Cost of Goods SoldPurchases — the FIFO batch costs
Operating ExpensesExpenses
Removals LossProduct Removals

Headline figures

Net Revenue · Gross Profit · Total Expenses · Net Profit · Gross Margin · Net Margin · Returns · Removals Loss.

Gross Margin is gross profit as a percentage of revenue — how much your pricing earns before overheads. Net Margin is net profit as a percentage — what actually reaches you. The gap between the two is everything it costs to run the shop.

Tables

Category Performance — revenue, cost, profit and margin per category. This shows which parts of your shop are worth the shelf space. A category with high revenue and thin margin is busy but not lucrative.

Expense Breakdown — each expense category with its amount and share.

Monthly Trend — revenue, cost, profit and margin month by month. The most useful table in the system. One month tells you little; twelve tell you whether the business is growing, whether margins are being squeezed, and which months you should plan for.

Top Profitable Products — ranked by profit, not revenue. Your bestseller and your most profitable product are frequently not the same thing, and this table is where you find out.


Exporting

Every report has export buttons:

CSV — a spreadsheet of the report data, for your own analysis or your accountant.

PDF — a branded, printable document carrying your shop name and details from Settings → Shop Details. It opens your browser's print dialog: choose a printer, or choose "Save as PDF" as the destination to keep the file.

The PDF contains the same headline figures and tables described above, laid out for paper. Use it for bank meetings, investor conversations, or your own monthly file.

Exports follow the period you have selected. Set the period first.


How to read the reports together

Monthly routine, in order:

  1. Profit & Loss — set the period to Last Month. Read Net Profit. That is the answer.
  2. If profit is thin, look at Gross Margin. Low means your pricing or your buying is the problem. Healthy means look at Expense Breakdown instead.
  3. Check Removals Loss. If the gap between Operating Profit and Net Profit is large, your losses are eating the business — go to Removals → Statistics.
  4. Sales Report — check Return Rate and the top products.
  5. Inventory Report — work through Low Stock Alert and Out of Stock, and reorder.
  6. Look at Monthly Trend and compare against the months before.

Half an hour, once a month, and you know your business.


Why the numbers might surprise you

"My sales look lower than I expected." Returns are subtracted. The report shows Net Revenue — what you kept, not what you rang up.

"My profit is much lower than sales minus purchase price." Three more things come out: operating expenses, removals losses, and the fact that cost of goods uses the actual FIFO batch cost, not the default purchase price on the product record.

"The profit on one product looks wrong." Check its purchase batches (Products → View → Inventory). Stock added without a purchase batch has no cost attached, so it appears to have been free and shows inflated profit. See Chapter 7.

"Two reports disagree." Check they cover the same period. The Inventory Report is always now; the other two follow the period filter.

"Last month's figures changed since I looked." Something was backdated — an expense entered late with the correct date, or a return completed against an older sale. This is correct behaviour: the reports always reflect the truth as it is now known.


Next: Chapter 11 — Users

11Users

Accounts for the people who work in the shop, and what each of them is allowed to do.

Who can use this: Owner, Admin (by default). Changing the permission table itself is SuperAdmin only.

Contents


Why everyone needs their own account

Every sale, return, payment, stock change and removal is stamped with the account that did it. Share one login between four staff and that record becomes worthless — you can never tell who rang up the mistaken sale or removed the missing stock.

Individual accounts also mean you can give each person exactly the access they need and nothing more, and you can shut off one person's access the day they leave without disturbing anyone else.

It takes two minutes per person. Do it.


The screen

Sidebar → Users. Two tabs: List and Add (which becomes Edit when editing).

The list shows each user's name, email, phone, role, status and avatar, with search and paging.


Creating a user

Sidebar → Users → Add.

FieldWhat to enterRequired
Full NameThe person's name, e.g. John Doe✓
EmailTheir login email, e.g. john.doe@example.com✓
PhoneFormat +880XXXXXXXXXX or (+880) X XXXXXXXXX✓
RoleWhat they are allowed to do✓
PasswordAt least 8 characters✓

The eye icon beside the password box shows what you have typed — useful when you are reading a password out to someone.

Save, then give the person their email and password. Ask them to change it on first sign-in from Sidebar → Profile → Password (Chapter 1).

Email and phone must both be unique. If someone already has that email, you will be told.


Choosing a role

Each account gets exactly one role. Pick the smallest one that lets the person do their job.

RoleGive it to
SuperAdminThe one person who administers the system. Full access to everything, always, including permissions, backup and the audit log.
OwnerThe shop owner. Everything except the SuperAdmin-only areas.
AdminA senior manager you trust with money and staff — expenses, users and reports as well as the shop floor.
ManagerRuns the floor and the stock: products, purchases, removals, setup, plus selling. No expenses, users or reports.
StaffCashier. Sells, handles returns, takes payments. Cannot see the catalog, costs or profit.
CustomerNot used for shop staff.

Rules of thumb:

  • A cashier gets Staff. That is the whole point of the role — they can do the job without seeing your purchase prices, margins or expenses.
  • Someone who orders stock and manages the shelves gets Manager.
  • Only make someone Admin if they genuinely need to see money and manage other staff.
  • There should be very few Owner accounts and normally exactly one SuperAdmin.

Warning

Do not hand out Admin because it is easier than thinking about it. An Admin can see every cost, margin and expense in your business, and can create and change other users' accounts.


What each role can open

These are the defaults:

PageOwnerAdminManagerStaff
Dashboard✓✓✓
POS✓✓✓✓
Sales✓✓✓✓
Returns✓✓✓✓
Dues✓✓✓✓
Products✓✓✓
Purchases✓✓✓
Product Removals✓✓✓
Expenses✓✓
Users✓✓
Reports✓✓
Setup✓✓✓
Settings

SuperAdmin can open everything and is not listed. Settings is SuperAdmin-only until someone changes it.

The table is not fixed — the SuperAdmin can change it from Settings → Permissions (Chapter 13). If your shop needs Managers to see reports, that is one tick, not a role change.


Editing a user

Click Edit on any user row. The form opens pre-filled, with two differences from the add form:

  • A Status dropdown appears (see below).
  • The password field is labelled Password (leave blank to keep current). Leave it empty and the existing password is untouched. Type a new one to reset it.

Changing someone's Role takes effect the next time they load a page.


Deactivating an account

The Status dropdown on the edit form:

StatusEffect
ActiveCan sign in and work normally
InactiveCannot sign in. All their past records stay intact.

Set a leaver's account to Inactive on their last day. Do not delete it — their name is attached to every sale, payment and stock movement they ever made, and that history should stay readable.

Also use Inactive for someone on long leave, and for any account you are unsure about while you investigate.


Passwords

  • Minimum 8 characters, and they should contain both letters and numbers.
  • Set an initial password when creating the account and have the person change it immediately.
  • To reset a forgotten password: Edit the user and type a new one. There is no self-service password reset — a manager has to do it.
  • Users change their own password at Sidebar → Profile → Password.

Note

Never write passwords on a note beside the till. If people are sharing passwords, the audit trail becomes fiction and you lose the main reason for having accounts at all.


Viewing a user

Click View on a user row to see their full record: name, email, phone, role, status, avatar and when the account was created.

To see what someone has actually been doing, the SuperAdmin can filter the Audit Log by that user — see Chapter 13.


Good practice

  • One account per person. No shared logins, ever.
  • Smallest role that works. You can always raise it later.
  • Deactivate leavers the same day, before they leave the building.
  • Review the user list every few months. Old accounts that nobody has closed are the most common security hole in a small business.
  • Keep the SuperAdmin credentials safe and known to the owner. Losing them means losing access to permissions, backup and the audit log.

Next: Chapter 12 — Setup

12Setup

Categories and brands — the groundwork you lay before adding a single product.

Who can use this: Owner, Admin, Manager (by default).

Contents


Do this first

A product cannot be created without a category. The Category field on the product form is compulsory, and its dropdown will simply be empty until you have created some.

Brands are optional, but a shop selling branded goods should set them up now rather than retrofitting them across hundreds of products later.

Sidebar → Setup and click to expand:

  • Categories
  • Brands

Both screens work identically: an All tab listing what exists, and an Add tab for creating (which becomes Edit when you are editing one).


Categories

A category is a group of similar products: Rice & Grains, Beverages, Stationery, Mobile Accessories.

Categories do real work in the system:

  • Filtering at the AT-TOHFA Cashiers narrow the product grid by category, which is much faster than scrolling — see Chapter 2.
  • Category Breakdown in the Sales Report — which parts of the shop earn your revenue.
  • Category Performance in the Profit & Loss report — revenue, cost, profit and margin per category. This is where you learn that one section earns half your profit and another earns almost none.
  • Category Breakdown in the Inventory Report — how much stock value sits in each group.

Categories chosen carelessly make all four useless.


Adding a category

Sidebar → Setup → Categories → Add Category.

FieldWhat to enterRequired
NameThe category name✓
DescriptionWhat belongs in it

Names must be unique. Save, and it is immediately available on the product form.


Choosing your categories well

Aim for 5 to 15. Fewer and every report says "most of our money comes from General", which tells you nothing. Many more and nobody can find the right one, so products end up scattered inconsistently.

Group by what you would reorder together, not by supplier or by shelf. Beverages is a good category; Things from Karim Traders is not, because your supplier may change while the products stay.

Make each product's home obvious. If a member of staff has to think about where a new product belongs, two people will file it two ways and your reports will split it in half.

Avoid a "Miscellaneous" category if you possibly can. It grows relentlessly and everything inside it is invisible to your analysis.

Good example for a grocery shop: Rice & Grains · Cooking Oil · Spices · Dairy · Beverages · Snacks · Cleaning · Personal Care · Baby Products

Poor example: Food · Non-Food · Other

Get this right at the start. Reorganising categories once you have a thousand products is real work.


Brands

A brand is the maker: Pran, Fresh, Nestlé, Samsung.

Brands are optional on a product. They are useful for:

  • Filtering at the POS when a customer asks for a brand by name.
  • Searching your catalog — finding everything from one manufacturer.
  • Deciding whether a manufacturer's products are worth the shelf space.

If you run a shop with generic unbranded goods, you can skip brands entirely.


Adding a brand

Sidebar → Setup → Brands → Add Brand.

FieldWhat to enterRequired
NameThe brand name✓
DescriptionAny notes about it

Names must be unique.

Tip

Agree a spelling and stick to it. Nestle, Nestlé and NESTLE become three separate brands, and your filtering quietly stops working.


Active and inactive

Categories and brands each carry a status badge, Active or Inactive.

Active ones appear in the dropdowns on the product form and in the POS filters. Inactive ones do not, but everything already assigned to them keeps working and their history stays intact.

Use Inactive when you stop stocking a whole line: the old products and their sales records stay readable, but nobody can file anything new under it by accident.


Editing and deleting

Edit (pencil icon) changes the name or description. Renaming a category updates it everywhere at once — every product in it, and every report from now on.

Delete (trash icon) removes it entirely.

Warning

Do not delete a category or brand that products are using. Deactivate it instead. Deleting a group that products still belong to leaves those products without a valid group and breaks the breakdowns in your reports.

Delete is for genuine mistakes: a category created twice, or a typo caught before anything was filed under it.


Next: Chapter 13 — Settings

13Settings

Shop details, who can open what, backups, and the record of everything that has happened.

Who can use this: SuperAdmin by default. Some tabs can be opened by others if the SuperAdmin grants access.

Contents


The tabs

Sidebar → Settings. Which tabs you see depends on who you are:

TabWho sees it
Shop DetailsAnyone who can open Settings
UsersAnyone with Users access
PermissionsSuperAdmin only
Data ManagementSuperAdmin only
Audit LogSuperAdmin only

Settings is closed to every role by default, so in a normal installation only the SuperAdmin sees any of this.


Shop Details tab

Titled Shop Information. These details appear on every receipt you print and at the top of every report PDF, so get them right before you start trading.

FieldWhat to enterRequired
Shop NameYour shop's name as customers know it✓
EmailThe shop's email address✓
PhoneThe number customers should call✓
Tax Rate (%)Your tax rate, if you charge one
AddressThe full shop address✓

Press Save Settings when done.

Note

The Tax Rate here is stored on the shop record, but sales made through the POS do not add tax — there is no tax box on the checkout screen. Do not expect setting a rate here to start adding tax to bills. See Chapter 2.

Amounts throughout the system are shown in Bangladeshi Taka (৳).

Check the printed result. Print one receipt after saving and read it as a customer would — the address and phone are what someone uses to find you or ring you about a problem.


Users tab

The same user management as Sidebar → Users, brought here for convenience. Everything about it is in Chapter 11 — Users.


Permissions tab

SuperAdmin only. Titled Page Permissions.

This is the grid that decides which roles can open which pages. Every page is a row, every role a column, and each cell a tick you can turn on or off.

To change access:

  1. Find the page's row.
  2. Tick or untick the role's box.
  3. Press the save button.

Changes take effect the next time that user loads a page. Someone who is signed in will see their sidebar change on their next navigation.

What you can grant: Owner, Admin, Manager, Staff, Customer.

SuperAdmin does not appear in the grid. SuperAdmin can always open every page, and that cannot be turned off — it is what keeps you from locking yourself out of your own system.

The pages you can control

dashboard · pos · sales · returns · dues · products · purchases · product-removal · expenses · users · reports · setup · settings

profile is not listed — everyone can always open their own profile.

Sensible changes

  • Let Managers see Reports. Common in shops where the manager does the ordering.
  • Stop Staff seeing Dues if you would rather cashiers did not see customer balances.
  • Give the Owner Settings access so the owner is not dependent on the SuperAdmin for shop details.

Warning

Think carefully before granting Staff access to Products, Purchases or Reports. Those pages show your purchase prices and margins. Once a cashier can see what you pay for goods, so can anyone standing behind them.

Warning

Granting a role access to Settings hands them the Shop Details tab. It does not give them Permissions, Data Management or the Audit Log — those stay SuperAdmin-only whatever you do here.


Data Management tab

SuperAdmin only. Titled Database Backup.

Create Backup

Press Download Backup. The system produces a complete PostgreSQL dump (.dump) of every table — products, sales, purchases, users, settings, everything — and downloads it to your computer.

This one file can restore your entire system.

Restore From Backup

Press Restore Backup and choose a .dump file you downloaded earlier. Accepted file types are .dump, .sql and .backup.

Warning

Restoring replaces all current data with the contents of the backup file. Everything recorded since that backup was taken — every sale, payment, purchase and new product — is gone permanently. This cannot be undone.

Take a fresh backup immediately before restoring an old one. If the restore turns out to be a mistake, that fresh file is the only way back.

Restoring is a last resort: recovering from a serious failure, or moving the system to a new server. It is not a way to undo a day's work.


Backups — how to do them properly

A backup that lives only on the shop computer is not a backup. If that machine is stolen, burnt or its disk fails, you lose the business records and the backup together.

A workable routine for a small shop:

  1. Download a backup every week. Fix it to something you already do — Friday closing works.
  2. Take one before anything major: a software update, a bulk price change, a server move.
  3. Copy each file off the machine. Google Drive, Dropbox, a USB stick kept at home — any of these, as long as it is not the shop computer.
  4. Keep several. Corruption is not always noticed the same day; if you only keep the newest file you may find it already contains the problem. Keep the last four weekly files.
  5. Name them by date — tohfa-backup-2026-08-28.dump. You will not remember otherwise.
  6. Test one, once. A backup nobody has ever restored is only a hope. Restore an old file onto a test system once so you know the process works and you know how long it takes.

The question to ask

if the shop computer disappeared tonight, how much of your business would you have lost? Whatever that answer is, it is how often you should be taking backups.


Audit Log tab

SuperAdmin only. A permanent record of every change anyone has made in the system.

Every action that creates, edits or deletes anything is logged with who did it, what they did, what changed, when, and whether it succeeded.

Filters

FilterUse
SearchActor, entity, path or message
Start date / End dateNarrow to a period
ActorOne user's activity — All users by default
EntityOne kind of record — products, sales, users, and so on
ActionOne kind of change (see below)
ResultSuccessful or Failed — All by default

Actions

ActionMeans
CREATEA new record was made
UPDATEAn existing record was changed
DELETEA record was removed
LOGIN / LOGOUTSomeone signed in or out
PASSWORD_CHANGEA password was changed
ROLE_CHANGESomeone's role was changed
PERMISSION_CHANGEThe permission grid was edited
RESTOREA backup was restored
EXPORTData was exported
OTHERAnything else

Reading an entry

Each entry names the user, the action, which record it touched, exactly which fields changed and their old and new values, the date and time, and whether it worked.

That field-level detail is the point. "Someone changed the product" is not useful; "Karim changed the selling price of SKU ABC123 from ৳120 to ৳95 on 27 August at 4:12 PM" is.

Export CSV

Exports the whole filtered set — not just the page on screen. Use it to investigate something properly in a spreadsheet, or to keep a record outside the system.

When to use it

  • Stock is wrong. Filter by that product and see every change made to it.
  • A price is wrong. Filter by UPDATE on products to find who changed it and when.
  • Something has disappeared. Filter by DELETE.
  • A staff member is under suspicion. Filter by that actor and read their day.
  • Failed logins. Filter Action = LOGIN, Result = Failed. Repeated failures on one account are worth understanding.

Note

The audit log cannot be edited or deleted from within the application, by anyone including the SuperAdmin. That is what makes it worth trusting.


Next: Chapter 14 — Troubleshooting & Glossary

14Troubleshooting & Glossary

What to do when something is not working, and what all the words mean.

Contents


Signing in

"My email or password is not accepted." Check for a stray space at the start or end, and that Caps Lock is off. If it still fails, ask an Owner or Admin to reset your password from Sidebar → Users → Edit. There is no self-service password reset.

"I was signed out in the middle of work." Sessions expire after a period of inactivity. Sign in again; nothing you had already saved is lost. A cart you had not yet checked out is gone — that lives only in the browser.

"I have no login at all." Someone has to create your account: Chapter 11 — Users.


At the POS

"A product is not in the grid."

In order of likelihood:

  1. It is out of stock. Products at zero are hidden from the POS entirely. Check Sidebar → Products and receive stock through Purchases.
  2. A filter is on. Set the category and brand filters back to all and clear the search box.
  3. It is deactivated. Check its status in the product list.
  4. It was never added. Add it — Chapter 6.

"Insufficient stock!" You asked for more than the system holds. Either the stock figure is behind reality — record the delivery in Purchases — or you genuinely do not have that many.

"Quantity must be a whole number for this unit." You typed a decimal for a counted unit like Piece or Box. Use a whole number. If the product should be sold by weight, its unit is wrong — see Chapter 6.

"Received amount is less than total amount!" Full payment needs at least the total. Either collect the rest, or switch Partial Payment on and record the balance as a due.

"Customer name and phone are required for partial payments!" Credit sales must be attached to a customer. Fill both fields in.

"My cart disappeared." The page was refreshed or the browser was closed. Carts are not saved. Finish each customer before doing anything else.

"I made a mistake on a completed sale." Sales cannot be edited. Process a Return for the wrong items and ring the correct ones through as a new sale.


Stock problems

"The stock number is wrong."

  1. Open Sidebar → Products → View → Activity. Every change to that product is listed with who made it and when.
  2. If you are the SuperAdmin, cross-check in Settings → Audit Log filtered to that product.
  3. Once you know the cause, correct it the right way: unrecorded delivery → Purchases; damage or loss → Removal; miscount → stock adjustment.

"Stock went up on its own." A return was completed (stock goes back at that step) or a removal was deleted. Both are in the Activity log.

"I recorded a purchase but stock did not change." Check you saved the form, and that you selected the right product — the product picker is a search box and it is easy to pick the wrong similar name. Look at Purchases → List for your batch.


Reports and figures

"Profit looks far too high." Almost always stock added without a purchase batch. Stock added by adjustment has no cost attached, so the system thinks it was free. Check the product's Inventory tab. Fix it by recording the purchase properly from now on.

"Profit looks too low." Work down the Profit & Loss statement to find which line is taking it:

  • Large Returns? Look at return reasons.
  • High Cost of Goods Sold? Your buying prices have risen but your selling prices have not.
  • High Operating Expenses? Read the expense breakdown.
  • Large Removals Loss? Go to Removals → Statistics.

"Two screens show different numbers." Check the period filter on each. The Inventory Report is always now; Sales and Profit & Loss follow whatever period you selected.

"Last month's figures changed." Something was backdated — a late expense entered with its real date, or a return completed against an old sale. This is correct: reports always show the truth as currently known.

"Sales are lower than I counted." The report shows Net Revenue, after returns. Gross Sales is the figure you counted.


Printing

"The receipt did not print." The print dialog opens automatically after a sale. If it was closed by accident, the sale is still saved — only the printout was missed. Check the printer is on, has paper, and is selected in the dialog.

"I need the receipt again." POS cannot reprint. Find the sale in Sidebar → Sales and work from the Sale Details dialog, or use Export PDF.

"The shop name on the receipt is wrong." Settings → Shop Details, correct it, save. New receipts pick it up immediately.

"Barcode labels will not print." The Barcode button is disabled for products with no barcode. Edit the product and add one.


Access problems

"Access denied." Your role is not allowed on that page. The message includes a link to a page you can use. To get access, ask the SuperAdmin to change your role (Chapter 11) or grant your role that page (Chapter 13).

"A menu item vanished." Your permissions changed, or the page is still loading. Refresh once. If it stays missing, ask the SuperAdmin what changed.

"I cannot see Settings." Settings is SuperAdmin-only by default.


General problems

"The page is stuck loading." Refresh. If it persists, check your internet connection — the system needs to reach its server.

"Data I just saved is not showing." Refresh the page. If it is still missing, it did not save; check for an error message and try again.

"Everything is slow." Usually the connection rather than the system. Test another website. Also close unused browser tabs on a shared till machine.

"I deleted something I should not have." Deletions are permanent from inside the application. If the SuperAdmin has a recent backup, a restore can bring the data back — but it also undoes everything recorded since that backup. See Chapter 13. This is why regular backups matter.


Glossary

Money and profit

COGS (Cost of Goods Sold) — what the goods you sold actually cost you. Taken from purchase batches using FIFO.

Gross Sales — everything sold, before returns are deducted.

Net Revenue — Gross Sales minus returns. What you actually sold.

Gross Profit — Net Revenue minus COGS. What your trading earns before overheads.

Operating Profit — Gross Profit minus expenses. What running the shop earns.

Net Profit — Operating Profit minus removals losses. What you actually made.

Gross Margin — Gross Profit as a percentage of revenue.

Net Margin — Net Profit as a percentage of revenue.

Avg Order Value — average value of one sale. Net Revenue ÷ number of transactions.

Stock

SKU (Stock Keeping Unit) — your short code identifying one product.

Barcode — the scannable number on a product. Generated automatically for new products.

Batch — one delivery of one product at one price. See Chapter 7.

FIFO (First In, First Out) — the oldest stock is treated as sold first, so profit is calculated against what those particular units really cost.

Low Stock Threshold — the level at which a product is flagged as running out.

Reorder Point — the level at which you should place a new order.

Inventory Value — what your current stock cost you.

Potential Revenue — what your current stock would fetch if it all sold.

Turnover — how many times your stock sells through and is replaced in a period.

Unit — how a product is counted or measured. Decides whether fractions can be sold.

Removal — stock that left without being sold: damaged, expired, stolen, given away.

Sales

Invoice Number — INV-YYYYMMDD-####, unique per sale.

Walk-in Customer — a sale with no customer details recorded.

Due — money a customer still owes.

Partial Payment — a sale where the customer paid some and owes the rest.

Void — cancelling a record without erasing it. It stays visible, marked as voided.

Return — goods brought back by a customer, refunded.

Restocking Fee — an amount deducted from a refund as a handling charge.

Return Rate — what proportion of sales came back.

Special Offer — the only discount type available at the till. The number entered is the amount taken off the bill.

People and access

Role — the job title on an account: SuperAdmin, Owner, Admin, Manager, Staff or Customer.

Permission — whether a role may open a particular page.

SuperAdmin — the system administrator. Always has full access; cannot be restricted.

Audit Log — the permanent record of every change made in the system.

Actor — the user who performed an action.


Status reference

Payment status (on a sale)

StatusMeans
PENDINGNothing received yet
PARTIALSome money taken, the rest is a due
COMPLETEDPaid in full
FAILEDThe payment did not go through
REFUNDEDMoney given back
CANCELLEDThe sale was called off
VOIDEDThe record has been cancelled but kept
OVERDUEA due past its date

Return status

StatusMeansStock back?
PENDINGWaiting for a decisionNo
APPROVEDAccepted, not yet finishedNo
COMPLETEDFinished — stock restored, refund recordedYes
REJECTEDRefusedNo
CANCELLEDCalled offNo

Stock status

StatusMeans
In StockAbove the low stock threshold
Low StockAt or below the threshold
Out of StockZero — hidden from POS

User status

StatusMeans
ActiveCan sign in and work
InactiveCannot sign in; history preserved

Back to the index