FinAccounting Get started

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.

Every sale is a real Sales invoice Stock can’t be oversold at the register Cash reconciled when you close out

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.

FieldNotes
Register nameA plain label, e.g. “Front Counter” — not a fixed list.
Ships stock fromA warehouse from Inventory. Every sale rung on this register ships against that warehouse’s stock.
Cash settles intoA 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 floatThe starting cash already in the drawer. Defaults to 0.

Click Open Register.

One open session per cashier

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

A POS sale is a real Sales invoice

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.

Overselling is blocked here

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.

It’s the account that counts, not the payment method label

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/.

SettingNotes
Store URL slugMust be unique across every company on this install — if you type one someone else already has, a number is appended automatically.
Online orders ship fromThe warehouse every online order’s stock ships against and stock availability is checked against. Required before the store can go live.
Payment instructionsFree text shown to a customer who picks a manual payment method — bank details, pickup hours, whatever they need to know.
Only active products with a photo and price show up

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.

  1. 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.

  2. 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.

Prices are always rechecked on the server

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.

This is YOUR Paystack account, not FinAccounting’s

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

MethodNotes
CashThe only method with a Tendered/Change due field.
CardA label only — there’s no card terminal integration behind it.
Mobile MoneyA label only, same as Card.
OtherAnything 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

No returns, refunds, or voids

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.

Card and Mobile Money aren’t real payment integrations

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.

No register-history screen yet

Past sessions are kept, but the terminal itself doesn’t currently show you a list of previous shifts and their close-out numbers.

No returns/refunds on online orders, and only Paystack is supported

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.

FinAccounting — POS Reference Guide Back to top ↑