Point of Sale & Settings Guide — SOHO Club Phuket
Last updated: June 2026
Open a web browser and navigate to https://soho.nightpos.com. The NightPOS cashier login screen appears automatically.
NightPOS cashier login — SOHO Club Phuket
The cashier screen has two tabs:
| Tab | Who uses it | How to log in |
|---|---|---|
| Normal | Managers and admin users with an Odoo account | Enter your Email and Password, then tap Log in. |
| Staff | POS cashiers assigned a numeric PIN | Enter your Staff PIN (numeric), then tap Log in. |
Normal tab — Email / Password login for managers
For configuration, reporting, and settings access, use the Normal tab with your admin credentials:
On the cashier screen, click the Normal tab.
Enter Email: your Odoo admin email, and Password.
Tap Log in. You will be taken to the POS Dashboard.
After logging in, you land on the NightPOS home screen showing all available apps. Click Point of Sale to manage registers, or access NightPOS Printer, Employees, Accounting, and more.
NightPOS home screen — app selector
Clicking Point of Sale opens the POS Dashboard showing all configured registers (e.g., SOHO Club and AfroRoom).
POS Dashboard — SOHO Club and AfroRoom registers
The top navigation bar provides access to:
| Menu | Purpose |
|---|---|
| Dashboard | Return to the POS register list at any time. |
| Orders | View all past and current POS orders. |
| Products | Manage items available in the POS. |
| Reporting | Sales reports, session summaries, and statistics. |
| Configuration | POS settings, floor plans, printers, employees, and product categories. |
Each POS register card shows its status:
From the Dashboard, find the register (e.g., SOHO Club or AfroRoom).
Click Open Register or Continue Selling.
If opening a new session, an Opening Control dialog appears. Enter the opening cash in the drawer and click Open.
The POS interface opens.
Opening Control — enter the opening cash balance
Live POS interface — T1 order with order panel (left) and product grid (right)
| Area | Description |
|---|---|
| Top navigation | Tables / Register / Orders tabs, active table badge (e.g., T1), search bar, LNA button, and hamburger menu (☰). |
| Left panel – Order lines | Current order for the selected table. Shows qty, product name, and price per line. Total shown at the bottom. |
| Right panel – Product grid | Browse and tap products by category tab (Beers, Cocktails, Liquors, etc.). Products show photos and prices. |
| Bottom-left bar | Customer name, Note, Course, and the ellipsis (⋮) menu for additional actions. |
| Bottom-right | New (new order) and the purple Payment button to complete the transaction. |
Tap a category tab on the left to filter products.
Tap a product tile — it is added to the order with quantity 1.
To change quantity: tap the order line, then use the numpad to enter the new qty, or press + / −.
To remove a line: select the line and press the Delete / Trash button.
NightPOS supports product modifiers (e.g., "Extra spicy", "No sugar") and price variants.
When you tap a product that has modifiers, a modifier popup appears automatically.
Select the desired options. Mandatory modifiers must be chosen before the item is added.
Tap Add to Order to confirm.
Select an order line on the right panel.
Tap Disc on the numpad and enter the discount percentage (e.g., 10 for 10%).
To override the unit price: tap Price on the numpad and type the new price.
When the POS is in restaurant mode (e.g., AfroRoom), opening the session shows the floor plan with all tables, VIP booths, and the bar area.
AfroRoom live floor plan — green tables have active orders with elapsed time shown
When the order is complete, tap the green Payment button (bottom-right of the order panel).
Select the payment method: Cash, Credit Card, QR/PromptPay, etc.
Enter the amount tendered (for cash). The change due is calculated automatically.
Tap Validate to complete the payment and print the receipt.
| Payment Method | Notes |
|---|---|
| Cash | Enter the amount received; the system shows the change to give. |
| Credit / Debit Card | Process on the card terminal; mark as paid in POS. |
| Bank Transfer / QR (PromptPay) | Show the QR code to the customer; confirm once payment is received. |
| Split Payment | Tap a payment method, enter partial amount, then add another method for the remainder. |
After validation, the receipt is sent to the configured printer automatically. You can also:
Tap the menu icon ☰ in the top bar.
Select Cancel Order (or delete all order lines individually).
From the POS, tap ☰ → Orders to find the original order.
Open the order and tap Refund.
Select which lines to refund and the quantity.
Tap Apply, then process the refund payment (cash back or card reversal).
Tap ☰ → Close.
Count the physical cash in the drawer and enter the Closing Cash Balance.
Review the session summary (total sales, payments by method, cash difference).
Tap Close Session to finalise. All data is posted to accounting.
From the dashboard, click Configuration in the top menu.
Click Settings.
Use the POS configuration selector at the top to switch between registers (e.g., SOHO Club, AfroRoom).
POS Settings — accessed via Point of Sale → Configuration → Settings
This section controls how customer receipts are printed after each payment.
| Policy | When to use |
|---|---|
| Shop setting on every device | All devices use the same print mode configured in Settings. Best when all terminals are identical. |
| Auto-detect on each device | Each device picks the best method automatically (Sunmi → built-in printer, PC → browser). Recommended for mixed environments. |
| Per-device choice (saved in database) | Each device's choice is saved permanently. The operator selects mode on POS login. Use when devices need different explicit modes. |
| Mode | Description |
|---|---|
| NightPOS Browser / IoT Box | Uses the browser print dialog or Odoo IoT Box. No extra hardware needed. |
| TCP/IP (Server) | Odoo server connects directly to a network ESC/POS printer via IP:port. Printer must be on the same network as the server. |
| Sunmi built-in (NightPOS App) | Uses the built-in hardware printer in Sunmi devices (T1, V2, P2). Requires the NightPOS Android app. |
| Chrome Extension (Local) | Prints to a local Windows or CUPS printer via the NightPOS Chrome Extension. Best for PC-based POS on a LAN printer. |
Choose 58 mm (Sunmi T1, V2, P2 narrow roll) or 80 mm (standard wide roll).
After configuring the printer, click Test Print to verify the printer works before going live.
Kitchen/bar printers receive order tickets when an order is placed (before payment).
Enable the Preparation Printers toggle.
Click Add a line to assign one or more printer records (see §5 to create printers).
Each printer in the list receives a kitchen ticket whenever an order is sent to the kitchen.
Click Test Print to verify each kitchen printer.
Click Manage Printers to open the full printer list.
Configure the restaurant table layout under Configuration → Floor Plans.
Floor Plans list
Click New to create a floor (e.g., "Main Hall", "Terrace", "Bar").
Use the visual editor to add and arrange tables.
Set the number of seats for each table.
Click Save and reload the POS session to see the updated floor plan.
Employees / Staff configuration
Products list in POS
Go to Configuration → Printers (NightPOS Printer menu) or click Manage Printers inside POS Settings.
Click New.
Enter a Name (e.g., "Cashier Counter", "Kitchen 1", "Bar Printer").
Choose the Printer Type (see §5b).
Fill in the required fields for that type (IP address, port, printer name, etc.).
Click Save, then Test Print to verify.
NightPOS home — click NightPOS Printer to access printer management
| Type | Required fields | Best for |
|---|---|---|
| NightPOS Browser / IoT Box | None (uses browser) | Standard Odoo IoT box or browser print dialog. |
| TCP/IP (ESC/POS) | IP Address, Port (default 9100) | Any network-connected ESC/POS thermal printer. The Odoo server must reach the printer's IP directly. |
| Sunmi built-in | Leave IP empty for built-in; IP+Port to print to a network printer from Sunmi | Sunmi T1, V2, P2, P2 Pro hardware printers via the NightPOS Android app. |
| Chrome Extension (Local) | Windows / Local Printer name (exact queue name) | PC browser printing to a USB or local network printer using the NightPOS Chrome Extension. |
| Protocol | Description |
|---|---|
| TCP/IP (ESC/POS port 9100) | Raw ESC/POS bytes over a socket. Most common for standalone thermal printers. |
| Epson ePOS (HTTP) | Sends print via HTTP to the printer's built-in web server. Works via Chrome LNA. |
| Sunmi built-in (NightPOS App) | Delegates to the NightPOS Android app SDK. No IP needed. |
Set to 58 mm or 80 mm to match the paper roll installed. This controls receipt column width and layout.
Enable Shared if any device in the shop may use this printer. Leave off to assign it to one specific terminal (e.g., cashier's tablet only).
From the Printer form or from POS Settings, click Test Print. A test receipt is sent immediately. If the test fails:
When Device Print Policy is set to Per-device choice, each terminal selects its own printer at POS login:
On the POS login screen, tap This device: … at the top-right.
A dialog lets you pick the print mode and printer for this device only.
The choice is saved in the database, linked to the browser's device key, and remembered across sessions.
Managers can review and change per-device assignments from Settings → Device print profiles.
Orders list — view all transactions
Go to Orders → Orders in the top menu. You can:
Sessions list — view all POS sessions
Go to Orders → Sessions to see all past and current POS sessions. Each session shows the cashier, opening/closing balance, total sales, and whether it was properly closed.
Reporting dashboard
Go to Reporting in the top menu for:
| Problem | Likely cause | Solution |
|---|---|---|
| POS login shows "Please fill out this field" | Submitted without entering credentials | Enter your Staff PIN (Staff tab) or Email + Password (Normal tab) before clicking Log in. |
| Receipt does not print after payment | Printer offline, wrong IP, or wrong mode | Use Test Print in Settings to diagnose. Verify IP, port, and that the printer is on the network and powered on. |
| Kitchen ticket not sent | Preparation printer not assigned or offline | Go to Settings → Preparation Printers, verify the printer is listed. Run a test print. |
| Register shows "Open Register" even though it was used yesterday | Yesterday's session was properly closed | Normal — click Open Register to start a new session. Enter the opening cash balance. |
| Register is stuck / won't open (says "already open") | A previous session was not closed properly | Go to Orders → Sessions in the back office, find the open session, and close it manually. |
| Cash drawer does not open | Cashdrawer not enabled or wrong printer selected | In Settings, enable the Cashdrawer toggle and ensure the receipt printer is the one the drawer is connected to (usually via the RJ-11 port). |
| Products not visible in POS | "Available in POS" not enabled on the product | Go to Products → Products, open the product, and enable Available in POS. |
| Modifier popup does not appear | Modifiers not linked to the product or category | Go to Configuration → Modifiers and assign modifiers to the product category or product. |
| Chrome Extension not printing | NightPOS Print Server app not running on PC | Open the NightPOS Print Server desktop app on the cashier PC, confirm the correct printer name, and refresh the Chrome printer list in Settings. |
| Wrong paper width on receipt | Paper width setting mismatch | In Settings → Receipt Printer, set Paper Width to match the roll installed (58mm or 80mm). Do a test print. |
| Cannot close session — "payment difference" error | Cash counted differs from system total | Re-count the cash carefully. If there is a genuine difference, the system will record it as an over/short and allow you to close anyway. |