Accept orders and payments at the counter with the built-in POS system
The Point of Sale (POS) system lets cashiers and waiters take orders and accept payments directly at the counter or tableside. It runs in the browser — no extra hardware or installed app required — and shares the same menu, pricing, and inventory as your storefront and Kitchen Display.
POS access is granted by role. Only staff with the pos_access permission can log in.
| Role | POS Access |
|---|---|
| Owner | ✅ Yes |
| Manager | ✅ Yes |
| Cashier | ✅ Yes |
| Waiter | ✅ Yes |
| Kitchen | ❌ No |
pos.yourstore.hayyaeats.sy (replace yourstore with your store's subdomain)POS works on any device with a modern browser — desktop, tablet, or phone. For shared counters, log in once and leave the tab open.
The left sidebar lists your menu categories. Tap a category to load its products in the grid. A search bar at the top filters products by name across all categories. Each product card shows the price, dietary icons, and allergen badges.
Tap a product to add it to the cart drawer on the right. From the cart you can:
+ / − controlsThe cart drawer stays visible on desktop and slides in on mobile.
For dine-in orders, a button grid shows every active table in your store. Each button displays:
A3, 12)4 seats) if setTap a free or ordering table to assign the order to it. If no tables have been created in admin yet, a text input appears instead so you can enter a table number manually.
POS supports the payment methods configured in your store settings. Pick one at order submission:
The selected method is recorded on the order for end-of-day settlement.
Each submitted order creates a record visible in the POS history screen. Settlement groups orders by shift or day so a cashier can reconcile totals against cash in the drawer before closing out.
Apply a discount to an order from the cart drawer before submitting. Discounts can be a fixed amount or a percentage, and appear as a separate line item on the receipt.
Mistakes happen. From the order history screen, a manager can void an order — it is marked as cancelled for audit purposes but stays in the ledger for reporting.
| Type | Behavior |
|---|---|
| Dine-in | Requires a table selection (button grid or manual entry) |
| Delivery | Captures the customer address and driver assignment |
| Pickup | Customer collects at the counter; no table or driver |
The order type determines which fields are required at submission and where the order shows up downstream (KDS, driver app, pickup queue).
The POS reads tables from GET /api/eats/pos/tables, which returns only id, table_number, capacity, and status — the QR token is never exposed to POS. This keeps the secure QR session system intact while letting cashiers see which tables are busy at a glance.
When an order is submitted against a table, the KDS and table session system pick it up automatically — no double entry.
Can two cashiers use POS at the same time? Yes. Each cashier logs in on their own device or browser tab. Orders are scoped to the store, so they all land in the same KDS queue.
Do POS orders appear on the Kitchen Display? Yes. POS orders flow into the same KDS pipeline as customer-placed orders, with the same status lifecycle (New → Preparing → Ready → Completed).
Can I take an order while the internet is down? No. POS is a live web app and needs a connection to submit orders, deduct inventory, and reach the KDS.
How do I refund or void an order? Open the order in POS history and use the void action. Full refunds are handled from the admin dashboard under Orders.