Overview
The POS system is designed for high-volume retail environments where speed and reliability are critical. It includes:- Real-time product search with barcode scanning
- Offline-first architecture with automatic sync
- Held sales for managing multiple transactions
- Customer association and search
- Multiple payment methods (cash, card, mobile money)
- Automatic inventory deduction and stock movement tracking
- Receipt generation
Accessing the POS
Navigate to a shop and click “Point of Sale” or use the quick action menu. You needshop.manage permission to access POS.
Processing a Sale
Search for Products
Use the search bar to find products by:If a single exact match is found (barcode or SKU), the product is automatically added to cart.
- Barcode (scan or type)
- SKU
- Product name
Add Items to Cart
Click on products to add them to the cart. Once added, you can:
- Adjust quantities using +/- buttons
- Remove items by clicking the X button
- View real-time price calculations
Add Customer (Optional)
Search for and select a customer to associate with the sale. The POS supports role-based customer visibility:
Apply Discounts
Enter a discount amount in the discount field. The system automatically recalculates the total.
Select Payment Method
Choose from available payment methods:
- Cash - Shows change calculator when amount tendered is entered
- Card - Credit/debit card payments
- Mobile Money - Mobile payment options
Complete Sale
Click the “PAY” button to complete the transaction. The system will:
- Validate stock availability
- Create an order with status
DELIVEREDand payment statusPAID - Deduct inventory using pessimistic locking to prevent race conditions
- Record stock movements for audit trail
- Generate a receipt
Quick Sale Processing
When you complete a sale, the system executes a transactional process to ensure data integrity:Pessimistic Locking: The POS uses
lockForUpdate() on inventory locations to prevent race conditions when multiple cashiers are processing sales simultaneously.Offline Mode
The POS supports full offline operation using IndexedDB for local storage:Product Sync
- Products are automatically synced to the browser on load
- Search operates entirely on local data when offline
- Sync button manually refreshes product data
Offline Sales
- Sales are queued locally when offline
- Automatically sync when connection is restored
- Each offline sale gets a unique offline ID
- Visual indicator shows pending sync count
Held Sales
Hold a sale to temporarily pause and resume it later - useful when serving multiple customers or waiting for customer decisions.Holding a Sale
Retrieving a Held Sale
- Click the “X Held” button in the header (only shows if held sales exist)
- Browse held sales with customer names and hold times
- Click “Retrieve” to load the sale back into the cart
- Complete the sale normally
Held sales do NOT reserve inventory. Stock is only deducted when the sale is completed.
Session Summary
View real-time sales statistics for your current session:Barcode Scanning
The POS supports multiple barcode scanning methods:- USB Barcode Scanner - Works automatically, scanner types into search field
- Camera Scanning - Click camera icon to use device camera
- Manual Entry - Type barcode or SKU directly
Tax Calculation
If VAT is enabled for the shop, tax is automatically calculated per line item:Best Practices
Keep Products Synced
Regularly sync products to ensure pricing and stock data is current, especially in offline mode.
Hold Sales Strategically
Use held sales for:
- Customers who need to step away
- Price checks or manager approvals
- Managing queues during peak hours
Sync Offline Sales Promptly
Offline sales don’t appear in reports until synced. Sync regularly to keep data current.
Related Resources
- Orders - View and manage completed POS sales
- Returns - Process returns for POS sales
- Receipts - Print and email receipts
- Stock Movements - View stock movements from POS sales