POS Module
Running the POS Terminal
A fast, kiosk-style checkout for a physical counter — search or scan a product, build a cart, take payment, and print a receipt — plus an optional public online store customers can shop from themselves, with no login.
Running the counter
1Open a register
Before you can ring anything up, open a register session — this is what ties a shift’s sales to a cash float you can reconcile when you’re done.
| Field | Notes |
|---|---|
| Register name | A plain label, e.g. “Front Counter” — not a fixed list. |
| Ships stock from | A warehouse from Inventory. Every sale rung on this register ships against that warehouse’s stock. |
| Cash settles into | A bank/cash account from Banking. This is the account cash payments on this register are checked against at close-out — see Reading the cash variance. |
| Opening cash float | The starting cash already in the drawer. Defaults to 0. |
Click Open Register.
You can only have one register open at a time under your own login. Close it (see below) before starting a new one — or have an administrator close it for you.
2Ring up a sale
Find the product
Type into the search box, or scan a barcode — it matches against name, SKU, and barcode. Tap a tile to add it to the cart; tapping the same product again just bumps its quantity. A product tracked for stock shows “Out of stock” and can’t be added once it’s gone.
Adjust the cart
Use the − / + steppers on a line to change quantity, or the × to remove it. Pick a customer from the dropdown, or leave it as Walk-in Customer.
Apply a discount (optional)
Type a flat amount into the Discount field — it’s automatically capped at the subtotal. Tax is a flat 10%, the same rate every invoice in this app is computed with; the total shown here is a live estimate, and the server always recalculates the real figure when you actually charge.
Choose how it’s paid
Pick Cash, Card, Mobile Money, or Other, and which account the payment settles into. For Cash, you can enter what the customer handed over — if it’s more than the total, Change due appears right away.
Charge it
Click Charge. A printable receipt appears automatically — Print Receipt opens your browser’s print dialog, and New Sale clears the cart for the next customer.
There’s no separate POS sales record. Charging a sale here creates an ordinary Sales invoice tagged with a POS channel and immediately records a full payment against it — so it gets the exact same GL revenue recognition, receivables handling, and stock shipping as any invoice you’d create by hand in Sales, and shows up in Sales, Receivables, and every report the same way.
The regular Sales invoice form allows stock to go negative, but the POS terminal doesn’t — it checks real stock in the register’s own warehouse before letting you charge, and tells you exactly which item is short if there isn’t enough on the shelf.
3Close the register
Click Close Register in the top bar, count the physical drawer, and enter what you counted. FinAccounting compares that against the real cash total it computed from this session’s own sales — see Reading the cash variance. Only the cashier who opened this session, or an administrator, can close it.
Common tasks
Holding a sale for later
A customer steps away mid-checkout, or you need to start a fresh sale without losing the current cart.
Click Hold instead of Charge — the cart is saved as a draft invoice, and the Held Sales button in the top bar shows how many are waiting. Open it to Resume a held sale (loads the cart back exactly as it was) or Discard it, which asks for confirmation first and can’t be undone.
Selling to a walk-in with no account
Leave the customer dropdown on Walk-in Customer. The sale still goes through as a real, fully posted invoice — it just carries “Walk-in Customer” as a plain name instead of a linked Contact.
Reading the cash variance
At close-out, FinAccounting doesn’t take your drawer count on faith — it checks it against the real payments this session actually recorded.
Expected cash = opening float + every payment on this session that settled into this register’s own “Cash settles into” account. Variance = what you counted minus that expected figure.
A payment only counts toward the cash total if it settled into this register’s designated cash account — regardless of whether you picked “Cash” as the method. A “Card” payment mistakenly routed to the cash account would still land in the cash bucket at close-out.
Closing writes an entry to System Logs automatically — flagged as a warning if the variance isn’t exactly zero, or success if the drawer matched.
Online store
Turn on your online store
A public, no-login web page anyone can visit, browse, and buy from — separate from the POS terminal above, but built on the exact same product catalog and the exact same real Sales invoices.
Go to Settings → Company Settings → Online Store. Turn on Turn on the online store and save — a URL slug is generated automatically from your company name (you can edit it any time), and your store’s live link appears right there in Settings: yoursite.com/store/your-slug/.
| Setting | Notes |
|---|---|
| Store URL slug | Must be unique across every company on this install — if you type one someone else already has, a number is appended automatically. |
| Online orders ship from | The warehouse every online order’s stock ships against and stock availability is checked against. Required before the store can go live. |
| Payment instructions | Free text shown to a customer who picks a manual payment method — bank details, pickup hours, whatever they need to know. |
The store pulls live from your Products list — no separate catalog to maintain. A product with 0 stock still shows, marked “Out of stock”, rather than disappearing.
How a customer checks out
A visitor adds items to a cart (kept in their own browser, not on your server, until they actually check out), then fills in their name, email, delivery/pickup details, and picks a payment method.
Manual payment (bank transfer, cash on delivery, or pickup)
The order is created immediately as a Sales invoice and the customer lands straight on their own order/invoice page — no payment has been collected yet, so it’s your team’s job to confirm the transfer or collect payment on delivery/pickup and record it in Sales like any other invoice.
Pay with Paystack (only shown once you’ve connected it — see below)
The order is created the same way, then the customer is sent to Paystack’s own secure checkout page. Once they pay, they’re brought back and their order is marked paid automatically — no manual step needed on your end.
The cart on a customer’s screen is just a convenience — the moment they check out, every price and every stock quantity is looked up fresh from your real Products/Inventory records. Nothing typed or stored in a browser is ever trusted directly.
Accepting Paystack payments
Optional — with no Paystack connected, checkout simply offers the manual methods above and works with zero setup.
In Settings → Company Settings → Online Store, scroll to Paystack (optional) and enter your own Paystack Public Key and Secret Key, then pick which bank/cash account a confirmed online payment should settle into — this is the account a customer’s payment posts against in your books, the same way a POS or manually-recorded payment does.
Payments from your online store land directly in the Paystack account you connect here — completely separate from this platform’s own billing. Your secret key is encrypted before it’s stored and is never shown back to you once saved.
A confirmed Paystack payment posts a real accounting entry — Debit your bank account, Credit Accounts Receivable — exactly like recording any other payment in Sales, and marks the order Paid automatically.
Where online orders show up
An online order is an ordinary Sales invoice, just like a POS sale — it appears in Sales alongside everything else, tagged with an Online channel, starting as Sent (unpaid) until payment is confirmed (automatically for Paystack, manually for the other methods), then moving to Paid.
Reference
Payment methods
| Method | Notes |
|---|---|
| Cash | The only method with a Tendered/Change due field. |
| Card | A label only — there’s no card terminal integration behind it. |
| Mobile Money | A label only, same as Card. |
| Other | Anything not covered above. |
Every method still requires picking which bank/cash account the payment settles into — that account, not the method label, is what drives the cash-variance math at close-out.
What this module doesn’t do
Once a sale is charged there’s no one-click undo here. Correcting a rung-up sale means opening the resulting invoice directly in Sales — there’s no dedicated POS return flow.
Picking either doesn’t charge a card terminal or a mobile wallet — it’s a label for how the sale was actually settled, paired with whichever account you choose.
Past sessions are kept, but the terminal itself doesn’t currently show you a list of previous shifts and their close-out numbers.
Same as the POS terminal above — correcting an online order means editing it directly in Sales. Paystack is currently the only online payment gateway; other providers aren’t supported yet.