RetailPOS is a complete, open-source POS system. Here is exactly what it does — no marketing fluff.
Everything a cashier needs from product lookup to receipt printing.
Browse catalog with search and category filters. Scan barcodes to add items instantly. Adjust quantities and apply discounts or coupons validated directly against your platform's API.
Accept card payments via Stripe NFC tap-to-pay, Stripe Terminal, Square, Adyen, or Tap Payments. PED providers without a mobile SDK — Worldpay, Worldline, and more — route through the Instore API. Cash drawer opens automatically on cash payments.
Print branded receipts with QR codes and itemised totals. Completed orders sync back to your e-commerce platform automatically in the background.
Your e-commerce platform is the source of truth — no duplicate product database to maintain.
Products pulled directly from your e-commerce platform. Supports variants (size, colour, etc.) with per-variant pricing and inventory. Local full-text search.
Inventory synced with your platform in real time. Low-stock alerts via the notification system. Manual stock adjustments with a full audit trail.
Camera scanning on mobile and tablet. Bluetooth or USB hardware scanners on desktop. Instantly adds the correct product variant to the cart.
All validation goes directly to your platform's API — no duplicate coupon or customer database.
Search your platform's customer database at checkout. Attach a customer to the order so platform order history stays accurate.
Validate and apply platform coupons (percentage or fixed). Check gift card balances and redeem against orders. All validated live against your platform's API.
Process stock returns with inventory adjustment. Issue full or partial refunds via your payment terminal. Triggers platform refunds where supported. Full audit trail for every return.
Swap items against an original order — even exchanges or pay/collect the difference. Inventory adjusts automatically on both sides of the exchange.
Customer profiles with order history and a loyalty layer for repeat-customer rewards — built on top of your platform's customer records.
Configurable tax profiles per store or product category. Platform-authoritative tax calculation for online-synced orders so totals always match your e-commerce backend.
Built-in reports for daily operations and end-of-day review.
Daily, weekly, and monthly sales summaries. Hourly and daily sales charts. Payment method breakdown with percentages. Cashier performance ranked by sales volume.
Export any report as CSV for external analysis. Print daily summaries directly to your receipt printer. Audit log also exportable as CSV with a rolling 2000-entry history.
In-app notification bell with unread badge. Toast alerts for sync events, inventory warnings, and return confirmations. Full audit log of every business event: logins, orders, payments, refunds, drawer opens, settings changes.
Six login methods, filtered by whether you are online or offline. PIN is always available as a fallback.
| Method | Mode | Hardware required |
|---|---|---|
| 6-digit PIN | Offline | None |
| Fingerprint / Face ID | Offline | Device biometric |
| Password | Offline | None |
| Magnetic card swipe | Offline | USB/BT card reader |
| RFID / NFC badge | Offline | USB/BT NFC reader |
| Platform login (OAuth token) | Online | None |
Role-based access control: Admin, Manager, and Cashier roles control which screens and actions each user can reach.
The app never stops working. All data is stored locally in SQLite.
Single register, fully offline, no networking required. Works without any e-commerce platform connection. Ideal for pop-ups and markets.
One register acts as a local HTTP server; others auto-discover it on the subnet and connect as clients. Real-time event sync between registers: orders, inventory, settings.
Completed orders queue for sync to your e-commerce platform. Background sync with exponential backoff (doubles delay up to 15 min on failures). Retry or discard individual failed orders from the sync queue screen.
The full purchasing workflow lives in the app — no separate stock-management tool needed.
Create purchase orders against your vendor directory, receive stock against them, and track vendor returns — all from dedicated screens.
Run inventory counts to reconcile physical stock with records, and move inventory between locations with transfer orders.
Push orders to a kitchen display system over HTTP, WebSocket, or Electron with vendor presets. A customer-facing display shows the live basket total on a second screen via WebSocket or serial.
Apache 2.0 — clone the repo and run yarn install. No account, no fees, no lock-in.