User Guide
Search for what went wrong, or read through — signing in, documents and ordering, payments in and out, notifications, and administration.
Signing in and passwords
Sign in with your username (not your email) and password. Remember me keeps you signed in on that browser; a session lasts up to 12 hours, after which you are brought back to the login page with a note that it expired — signing in again returns you to where you were.
Forgot your password?
- 1On the login page, click Forgot Password? and enter your username and the email address registered on your account.
- 2A 6-digit code is emailed to that address. It expires in 10 minutes, and you can ask for a new one after a minute — the newest code is the only one that works.
- 3Enter the code together with your new password (at least 6 characters). Five wrong tries burns the code, and you request a fresh one.
The code only ever goes to the email already on your account — so keep it current, and tell an administrator if it changes. If the page says password reset is not set up, the administrator has not configured Settings → Email yet; ask them to reset your password directly.
Changing a password you still know is done from Profile in the sidebar — it asks for the current password first. Nobody, including administrators, can see your existing password.
From quotation to order
Every sale moves through the same chain, and each step is its own document:
- 1Quotation — priced and sent to the customer. Reworking it creates a revision, so earlier versions are kept. When the customer agrees, convert it to an invoice; the quotation stays linked.
- 2Invoice — the committed sale. Items can be picked from Inventory (orderable) or typed by hand (labour, ad-hoc charges). An invoice can also name who referred the sale, which feeds the referral report.
- 3Payment — recorded when money arrives, then verified by someone with the Verify permission. Verification is the trigger for everything downstream.
- 4Order list — created automatically on the first verified payment, one per supplier, and tracked per item through Pending → Ordered.
Reading a document number
Numbers are assigned automatically per country. The first two letters say which company: WH… is Singapore, WM… is Malaysia. The third says what the document is:
| WHQ / WMQ | Quotation |
| WHS / WMS | Invoice (sale) |
| WC / WMC | Credit note (was WHC / WMC) |
| WR / WMR | Referral fee payout (was WHR / WMR) |
| WM / WMOP | Overpayment memo (was WHO / WMO) |
| WMO | Order list |
The two digits after the letters are the year — WHS26-20315 is a 2026 Singapore invoice.
A customer marked oversea is billed with no GST/SST, and Singapore documents for them print and export tax-free.
Why is there no order list?
There is exactly one moment an order list is created automatically: when a payment on the invoice is verified. Nothing else creates one — not saving the invoice, not converting a quotation, not recording a payment.
A zero-amount payment counts
A credit-term sale is confirmed with a $0 payment record, raised precisely so the goods can be ordered. Verifying it creates the order and locks the sale exactly like any other payment. The amount is irrelevant — what matters is that a payment has been verified.
Work down this list if no order appeared:
- 1No payment has been verified yet. Recording a payment is not enough — it sits as Pending until someone with the Verify permission verifies it. This is the usual answer.
- 2An order list already exists for this invoice. It is created once per invoice. Verifying a second or third payment does not create another, and that is not an error. Check the Orders listing before assuming it failed.
- 3Not one item on the invoice could be ordered. Every line was skipped for one of the reasons in the next section. The person who verified the payment is told this on screen, with each item named.
- 4The payment was a money-out record. Credit notes, referral fees and overpayments never create order lists — they are not linked to an invoice in that way.
- 5Something failed unexpectedly. The verifier sees an error asking them to create the order manually. The payment stays verified either way — verification never fails because of the order list.
Creating one by hand
Use Create Order from Invoice on the invoice. It still needs a verified payment, but it is more forgiving in one important way: where automatic ordering skips a line that has no logistic quantity, the manual route falls back to the ordinary quantity. If the automatic attempt produced nothing and you cannot see why, try the manual button — it will either work or tell you exactly what is wrong.
Why is my order missing items?
An order list can be created successfully and still not cover every line on the invoice. Each line is checked on its own, and any that fails is left off. Since these were previously dropped in silence, the verifier is now shown each skipped item and its reason at the moment of verification.
| Reason shown | What it means | How to fix it |
|---|---|---|
| No logistic quantity | The item has no logistic quantity, or it is zero. Automatic ordering uses this figure and nothing else. | Open the invoice, set the Logistic Qty on that line, save, then create the order manually. |
| Not linked to a stock item | The line was typed in by hand rather than picked from Inventory, so there is nothing to order against. | Expected for labour and ad-hoc charges. For a real product, re-pick it from Inventory. |
| Stock item has no main supplier | Orders are grouped by supplier, so an item without one cannot be placed on any order. | Open the item in Inventory and set its Main Supplier. |
| Main supplier code does not match any supplier | The item names a supplier code that no longer exists — usually a deleted or renamed supplier. | Create the supplier, or point the item at the correct existing one. |
| Stock item no longer exists | The invoice line points at an inventory record that has since been deleted. | Re-pick the product on the invoice line. |
Worth a habit: after verifying a payment, check that the order list has as many lines as you expected. A missing supplier on one product is easy to fix on the day and awkward to discover when the stock does not arrive.
Recording and verifying payments
Recording a payment and verifying it are two separate acts, usually by two different people. Recording only registers that money is claimed to have arrived; verification is what the rest of the system reacts to.
Before a payment can be recorded
- The invoice must have at least one item. An empty invoice has nothing to sell and nothing to order. The line does not need a logistic quantity at this stage.
- A zero-amount credit term payment must carry a reason in the remarks. It has no amount to explain itself, so the reason has to be written down. A zero on any other payment method does not require one.
Every payment is created as Pending. The system never verifies one on its own — verification is only reachable by a person with the Verify permission, and the acting user is recorded against it.
What verification sets off
- The invoice moves to Confirmed, or Completed once verified payments cover the total.
- The invoice items lock — see below.
- The order list is created, if this is the first verified payment on the invoice.
- A result message tells you what happened to that order list.
If verification is refused with a message about region access, the invoice belongs to a country your user group cannot open. That is a permission setting, not a fault.
Why can't I edit or delete this?
Locking protects what has already been acted on. It is driven by whether a payment has been verified — not by how much money has arrived, which is why a $0 credit-term sale locks just as firmly as a fully paid one.
| You cannot | Because |
|---|---|
| Change the items or discounts on an invoice | A payment on it has been verified. The sale is committed and may already have been ordered. Everything priced is frozen — quantities, logistic quantities, unit prices and discounts. Customer and site details stay editable. |
| Delete an invoice | It has verified payments. An invoice with only unverified payments can still be deleted, and those payments go with it. |
| Clear a stock item's main supplier | Leaving it blank saves the existing supplier rather than erasing it. You can change it to a different supplier at any time. |
| Amend an order list | Only manually created orders can be amended, and only while still Pending. |
A pending payment locks nothing. If an invoice is locked and you believe nothing has been verified, open its payment list and check the status of each row.
Stock items and suppliers
Almost every ordering problem traces back to one field: an item's Main Supplier. Order lists are grouped by supplier, so an item without one cannot be placed on any order and is quietly left off.
- Main Supplier is required when creating an item, both on the item form and through CSV import. A new row in an import without one is rejected, and the reason is listed against that row.
- An existing item's supplier cannot be erased. A blank supplier — a cleared dropdown, or a spreadsheet column left empty — means “not supplied”, not “remove it”. Previously this wiped the supplier and made the item silently unorderable.
- Items created before this rule can still be saved without a supplier, so tidying up old records is never blocked. They will still be skipped at order time until one is set.
When an import reports failures
The rows that failed are listed with a reason for each. Everything else in the file was imported. Fix those rows and import the file again — rows that already succeeded are simply updated, so re-importing the whole file is safe.
Money out: credit notes, referral fees, overpayments
Money leaving the company is tracked in Payments Out, entirely separate from customer receipts. Three kinds exist, and they share one approval flow, one listing and one footer total:
- Credit note — reverses part or all of an invoice. Raise it from the invoice's More actions; submitting it for approval locks the document and creates the payout under the credit note's own number.
- Referral fee — pays the person or company who introduced a sale. The referrer is picked from Customers, and their bank details are read from their customer record — a wrong account is fixed there, where it fixes every future fee. The fee is keyed line by line with a rate per line.
- Overpayment — refunds money a customer paid beyond the invoice total. Linking the invoice prefills the excess and shows its full payment history, so you can tell a real overpayment from a double-keyed receipt. Partial refunds are fine — type your own figure.
The four sign-offs
Approval says the money is owed; the three release steps track the actual bank transfer. Each is a separate permission, so different people can hold each step:
- 1Approved — management agrees the payout is owed. Rejecting or holding it (with a reason) happens here. This is the only step that can be done in bulk.
- 2Transaction initiated — the transfer has been keyed into the bank.
- 3Transaction approved — a second person confirms what was keyed matches what was approved.
- 4Transferred — done, with the payment slip and bank-in date attached.
The listing shows each row's progress; a rejected payout can be corrected and re-submitted. Approving or paying a payout never changes the invoice it relates to.
Settling as customer credit
A payout with payment term Credit moves no money — instead the amount becomes customer credit the customer can spend on a later invoice. A referral fee credits the referrer; an overpayment credits the invoice's customer. Because no transfer is keyed, the two middle sign-offs and the payment slip are skipped.
Customer credit
Customer credit is money the customer has already handed over that no invoice claims — typically an overpayment they chose to leave with us instead of taking back. The balance shows on the customer's record.
- Spending it: record a payment on their invoice with method Credit. The amount is capped at their balance — credit that never arrived cannot be spent.
- It stays in its own country. Malaysian credit is RM and Singapore credit is S$; there is no conversion, and credit is only spendable against invoices in the country it arose in.
- A credit payment cannot be edited — its amount and method are locked to the ledger entry behind it. Keyed it wrong? Delete it (the credit returns to the customer automatically) and record it again.
- Credit payments still start as Pending and are verified like any other payment.
Reading your notifications
Every notification appears in one place: the bell at the bottom of the left sidebar, just above your name. There is no email and no pop-up toast — if it is not in the bell, it was not sent to you.
The amber badge vs the unread count
These are two different things, and they clear at different times:
- The amber badge on the bell counts what you have not seen. Opening the bell clears it immediately, whether or not you read anything.
- The “N unread notifications” line counts what you have not opened. Entries stay highlighted in blue, with a blue dot, until you click them.
So the badge going quiet does not mean you have dealt with everything — the unread count is the real to-do list.
Clicking an entry marks it read and opens the related record in a new tab. Mark all read at the top of the popup clears everything at once.
The bell refreshes on its own roughly every minute. A background tab stops checking altogether and catches up the moment you switch back to it, so a notification can appear the instant you return to the tab rather than while you were away.
What triggers a notification
Notifications fire on creation and status movement only. Editing a document — changing an address, fixing a quantity, correcting a price — does not notify anyone. That is deliberate: an alert on every save produces a bell nobody reads.
| Event | Fires when | Reaches |
|---|---|---|
| Invoice created | Someone raises a new invoice. | All-scope groups only — the creator is the owner, and you are never told about your own action. |
| Quotation created | Someone raises a new quotation. | All-scope groups only, for the same reason. |
| Payment uploaded | A payment is recorded against an invoice and is awaiting verification. | The invoice owner (salesperson who raised it), plus All-scope groups. |
| Payment verified | A payment is verified. | The invoice owner, plus All-scope groups. |
| Payment processed | A payment is marked complete. | The invoice owner, plus All-scope groups. |
| Order status updated | An order list — or a single item on it — moves to a new status. | The salesperson on the order, plus All-scope groups. |
| Payout submitted | A credit note, referral fee or overpayment is submitted and is awaiting approval. | The person who raised it, plus All-scope groups. |
| Payout approved | A money-out record is approved and is ready to be paid. | The person who raised it, plus All-scope groups. |
| Payout rejected | A money-out record is rejected. The reason is included in the message. | The person who raised it, plus All-scope groups. |
| Payout paid | A money-out record is paid, with its bank-in date recorded. | The person who raised it, plus All-scope groups. |
Nothing in this list is on by default. Until an administrator switches an event on for a user group, it notifies nobody — see Setting notifications up.
Who receives what
Four rules decide who gets a notification. They are applied in order, and every one of them can only ever narrow the audience.
- 1The group must be switched on for that event. Notifications are configured per user group, per event. A group with nothing switched on is silent.
- 2Scope decides how widely within the group. Own notifies only the person who owns the record — the one who created it, or the salesperson on the order. All notifies every active member of the group, and is only offered to groups ticked for it under User Groups → Notification Reach.
- 3Country access still applies. A group that cannot open Singapore documents is never told about one, even on All scope. This is what stops a notification revealing the customer and document number of a record the recipient is not allowed to open.
- 4You are never notified about your own action. The person who clicked the button is always removed last, even if every other rule would have included them.
Worked example
Ali raises invoice WMS26-2401. Siti records a payment against it. Both are in the same group, which has Payment uploaded switched on with Own scope.
- Ali is notified — he owns the invoice the payment was recorded against.
- Siti is not — she performed the action.
- Nobody was notified when Ali created the invoice, unless a group has Invoice created on All scope: Ali was both the creator and the owner, so the only candidate was excluded as the actor.
Notifying a whole department — “Accounts should hear about every payment”
A salesperson records a payment against their invoice, and the whole Accounts team needs to know so they can verify it. Own scope will not do this — the salesperson owns the invoice, and nobody in Accounts does. Accounts needs All scope:
- 1User Groups → open the Accounts group → tick Notification Reach → Save.
- 2Settings → Notifications → find Accounts → enable Payment uploaded and set its scope to All → Save.
From then on, every active member of Accounts is notified whenever anyone records a payment — except the person who recorded it, and excluding countries the group cannot access. The salesperson who raised the invoice is notified separately if their own group has the same event on Own scope; the two settings are independent.
The same pattern covers the other common cases: Accounts on Payout submitted so they see money-out awaiting approval, or management on Invoice created to follow every new sale.
Notifications are worked out at the moment the event happens, not when you open the bell. Changing a group's settings affects future events only — it never adds or removes anything already in someone's inbox.
Setting notifications up (admin)
Two screens are involved, and they answer two different questions.
A. Which events a group hears about
- 1Go to Settings and scroll to the Notifications card.
- 2Find the user group. Each group has its own grid of events.
- 3Tick Enabled for each event that group should hear about.
- 4Choose the Scope — Own or All. If the group has not been given All-scope reach, only Own is offered and the header shows “Own scope only”.
- 5Click Save on that group. Each group saves separately.
Requires the Settings permission. Changes take effect on the next event — there is nothing to restart.
B. Whether a group may hear about all records
“All” scope means every record in the system, not just the group members' own. Because that reveals customers and documents the recipient did not raise, it has to be granted on the group itself before it can be chosen:
- 1Go to User Groups and open (or edit) the group.
- 2Under Notification Reach, tick Can be notified about all records, not just their own.
- 3Save, then return to Settings → Notifications to choose the All scope.
Country access is applied on top and is never overridden. Untick this later and the group drops back to Own scope immediately, without you having to revisit its notification settings.
Retention and refresh rate
Both settings live at the bottom of the Notifications card in Settings.
- Refresh rate — how often the bell checks for new notifications. Default 60 seconds; the minimum is 15. Lower values mean every open tab of every user asks the server more often, so leave it high unless you have a reason.
- Retention — how long notifications are kept. Default 30 days, maximum 365, and 0 keeps them forever. Only notifications you have already read are ever removed, so nothing disappears unseen while you are on leave.
Money-out notifications
Credit notes, referral fees and overpayments have their own four events — submitted, approved, rejected and paid — separate from the money-in payment events. A group can therefore follow payouts without being notified about every customer receipt.
Unseen payout notifications also drive the red badge on Payments Out in the sidebar. It counts the same notifications the bell does, so opening the bell clears both at once.
Why didn't I get a notification?
Work down this list — the causes are ordered by how often they are the answer.
- 1The event is not switched on for your group. Nothing is enabled by default. Check Settings → Notifications.
- 2You performed the action. You are never notified about your own work. Testing with a single login will always look broken — use two accounts.
- 3You are not the owner, and your group is on Own scope. Own scope reaches the person who created the record or is the salesperson on it. Everyone else in the group needs All scope.
- 4The document belongs to a country your group cannot access. Check the group's country access under User Groups.
- 5You are looking too soon. The bell refreshes about once a minute, and not at all while its tab is in the background. Switch to the tab to force a refresh.
- 6The record has no recorded owner. Older documents can carry a creator that is no longer a real user account. Own scope then reaches nobody, and only All-scope groups are notified. If this happens on recent records, report it — it is a data problem, not a settings one.
Reports and commission
The Reports hub collects the figures. Every report filters by country and date, and exports to Excel or CSV for anything that needs to leave the system.
- Detailed sales — invoice-level sales with print and Excel export.
- Monthly sales — the month's sales per salesperson.
- Referral — referral fees by referrer, period and status. The same figures also appear on each customer's record, and the two can never disagree. Rejected referrals are listed but never counted in a total.
- Commission — running a month, statements, and the SG cohorts, for those with the Commission permission. Everyone else still sees their own statement on the same page — your own figure never needs a permission. Deductions from mishandling penalties are managed under Penalties in the sidebar.
Users, permissions and offboarding
Access is granted through user groups: each group holds a set of module permissions (view, manage, delete, and per-module actions like Verify or Approve) plus country access. A user belongs to one group and can do exactly what it allows. The Administrator group holds everything.
When a staff member leaves
Deactivate their account in Users — do not just change the password. A password change does not lock anyone out: the login page's reset flow only needs their username and email inbox, both of which they still have. Deactivation blocks login and password reset immediately; any session already open on their device expires within 12 hours. Their name stays on everything they created.
Creating a user needs a username, the person's real email address (password reset codes go there and nowhere else), and a group. If someone's email changes, update it on their user record the same day.
Settings and outbound email
Settings is grouped by area: Documents (remark templates, terms & conditions, payment details on printouts), Finance (tax rates, deposit policy, commission rates, mishandling types), Inventory (units, products, brands), Notifications, and Email.
Setting up the email account WebPOS sends from
Settings → Email holds the SMTP details behind the login page's password reset codes. Until it is filled in, nobody can reset their own password. With a Gmail account:
- 1In the Google account, turn on 2-Step Verification, then create an App Password (Google Account → Security → App Passwords).
- 2In Settings → Email enter: host smtp.gmail.com, port 587, username = the Gmail address, password = the App Password (not the normal one), and the same address as From.
- 3Save, then use Send Test to email yourself — if it arrives, the reset codes will too.
The saved password is never shown back; leaving the field blank on a later save keeps it. Any other provider works the same way with its own host and port.