mage2kishan / module-mage-pos
Panth MagePos — a full point of sale (POS) for Magento 2. Standalone touch-friendly terminal with cashier authentication and PIN lock, register sessions with cash management and X/Z reports, barcode scanning, quick keys, multi-cart hold/retrieve, discounts with per-role caps, custom sale lines, spli
Package info
github.com/mage2sk/module-mage-pos
Type:magento2-module
pkg:composer/mage2kishan/module-mage-pos
Requires
- php: ~8.1.0||~8.2.0||~8.3.0||~8.4.0
- mage2kishan/module-core: ^1.0
- magento/framework: ^103.0
- magento/module-backend: ^102.0
- magento/module-catalog: ^104.0
- magento/module-customer: ^103.0
- magento/module-payment: ^100.4
- magento/module-quote: ^101.2
- magento/module-sales: ^103.0
- magento/module-ui: ^101.2
README
Magento 2 POS Extension: Free Open-Source Point of Sale Terminal (Hyva + Luma)
Turn any Magento 2 store into a retail counter for free. Panth MagePos adds a standalone, touch-friendly POS terminal at
/posthat is completely theme-independent and sells your real Magento catalog at your real Magento prices. Every sale lands as a normal Magento order with invoices, tax, stock deduction, and native reporting.
Product page: kishansavaliya.com/magento-2-pos.html
Quick Answer
What is Panth MagePos? It is a free, open-source (MIT) Magento 2 POS extension that adds a standalone point of sale terminal to your store at /pos. Cashiers log in, open a register session, and ring up sales from your live Magento catalog. Every sale is a real Magento order.
What does it add to my store?
- A standalone POS terminal at
/pos, built with Alpine.js, that works on any theme without modification. - Cashier authentication with PIN unlock, idle auto-lock, and server-persisted lock state.
- Register sessions with opening float, cash in/out, X reports, and Z reports with over/short.
- Barcode scanning, quick keys, all product types, split payments, 80 mm thermal receipts, and refunds.
- Full offline mode that caches the catalog locally and queues orders to sync when the connection returns.
- A drag-and-drop layout editor so each cashier can arrange the terminal panels the way they want.
Which themes are supported? The terminal renders outside the theme layout, so it is pixel-identical on Hyva, Luma, and any custom theme.
Is it really free? Yes. Panth MagePos is MIT-licensed. There are no paid tiers, no per-register fees, and no locked features.
What does it need? Magento 2.4.4 to 2.4.8, PHP 8.1 to 8.4, and the free mage2kishan/module-core package.
Need Custom Magento 2 Development?
Get a free quote for your project in 24 hours for custom modules, Hyva themes, performance work, M1 to M2 migrations, and Adobe Commerce Cloud.
Visit our website: kishansavaliya.com | Get a quote: kishansavaliya.com/get-quote
Table of Contents
- Who Is It For
- Screenshots
- Key Features
- Compatibility
- Installation
- Configuration
- How It Works
- Roles and Permissions
- Extending Payments (Developers)
- FAQ
- Support
- About Panth Infotech
- Quick Links
Who Is It For
- Brick-and-mortar retailers using Magento who need a cash register connected directly to their online catalog, without a separate POS database or monthly SaaS fee.
- Stores with multiple tills that want per-register sessions, cashier roles, and sales reports all inside Magento admin.
- Hyva storefronts that need a POS terminal that does not pull in jQuery, Knockout, or RequireJS.
- Merchants who want real accounting where every POS sale creates a native Magento order, invoice, credit memo, and stock deduction.
- Developers building custom POS hardware integrations or payment gateway processors on top of a solid open-source base.
Screenshots
Key Features
Standalone Theme-Independent POS Terminal
- Touch-first SPA at
/poswith large targets (44 px+), numeric keypads, and a tablet-landscape layout that stays responsive on phones. - Rendered outside the theme layout so Hyva, Luma, and any custom theme all look identical at the terminal.
- Alpine.js + hand-written CSS - no jQuery, no
mage/*, no Tailwind, no build step needed. - The screen never scrolls as a whole; each panel scrolls internally so the workspace always fits the screen.
Cashier Authentication and PIN Lock
- Dedicated POS users (separate from admin users and customers) with username/password login.
- Fast PIN unlock after idle auto-lock so full credentials are only needed once per browser session.
- Server-persisted lock so a hard refresh still lands on the PIN screen and all data endpoints refuse to act while locked.
- Roles with granular permissions: maximum discount percentage, refund, price override, cash in/out, custom products, layout editing, and reports.
- Passwords and PINs hashed with
password_hash()- never stored in plain text.
Register Sessions and Cash Management
- Open a session with a float; record cash in/out movements with reasons at any time.
- X report (mid-day snapshot) whenever needed; Z report on close with counted cash and automatic over/short reconciliation.
- Every cash sale, refund, float, and movement is tracked per session for accurate end-of-day reports.
- Admin can view any session's Z data with paginated cash-drawer movements, or force-close abandoned sessions.
Catalog, Barcode Scanning, and Quick Keys
- Instant live search by name, SKU, or description; category browsing with infinite scroll.
- Top Sellers shown on login so the catalog panel is never empty.
- Barcode scanning: keyboard-wedge USB/Bluetooth scanners work out of the box; camera scanning via the browser
BarcodeDetectorAPI where available; barcode attribute is configurable (default SKU). - Quick keys: favorite product tiles with custom labels, colors, and pages - managed in admin or pinned straight from the terminal.
- Product quick-view: tap any card to see images, description, salable quantity, and key attributes before adding.
All Product Types with Server-Accurate Pricing
Panth MagePos sells every Magento product type, not just simples:
- Simple products - one tap to add.
- Configurable products - a variant picker for size, color, and any super attributes.
- Grouped products - choose quantities per associated product.
- Bundle products - full option selection with live price recalculation.
- Custom options - text, dropdown, checkbox, and other option types on any product.
Pricing is server-accurate: every cart is a real Magento quote, so catalog price rules, cart price rules, coupon codes, tier prices, customer group prices, special prices, and tax are all honored exactly as on your storefront.
Cart: Multi-Cart, Hold and Retrieve, Discounts, Custom Lines
- Multi-cart tabs so cashiers can serve several customers in parallel; hold a cart with a label and retrieve it later.
- Discounts: cart-level percent or fixed, line-level percent or fixed, price override, and native Magento coupon codes. Every path is capped by the cashier's role discount limit and enforced server-side.
- Custom sale lines: sell anything not in the catalog - name, price, quantity, and optional tax class - backed by a hidden placeholder product so totals and tax stay correct.
- Customer attach with search/create/guest - customer group pricing is honored instantly.
Payments: Cash, Offline, Online, and Split
- Cash: tendered-amount keypad, denomination shortcuts, and automatic change due.
- Offline custom methods: define any number in admin (card terminal, cheque, bank transfer) with an optional mandatory reference field and on-screen instructions.
- Online methods: a payment link rendered as a scannable QR code at checkout; the order is placed pending-payment and a
PaymentProcessorInterfaceextension point lets developers wire real gateways. - Split payments: combine any number of methods on one sale - half cash, half card, rest by payment link.
- Fully paid cash/offline orders are auto-invoiced (configurable).
Receipts: 80 mm Print, Email, Reprint
- 80 mm thermal-friendly print CSS - prints through the normal browser dialog, so any printer works.
- Store logo, configurable header/footer (global and per-register overrides), tax breakdown, payment rows including change, and selected product options on every line.
- Email receipts (manual button or automatic) and reprint any past receipt.
- Receipt numbers in the format
{register_code}-{session_id}-{seq}.
Refunds and Returns
- Search past orders by increment ID or email, or browse recent POS orders on the register.
- Refund total is server-computed with the same credit memo math as Magento, so discounted and taxed orders show the exact amount.
- Choose the refund payment split, optional restock toggle (MSI-aware), and a mandatory reason.
- Creates a real Magento credit memo and records the matching cash-drawer movement.
Offline Mode
- Catalog cached locally in IndexedDB (configurable item limit).
- On connectivity loss the terminal switches to local search automatically and keeps selling for cash and offline methods.
- Completed sales queue locally and sync automatically when the connection returns - deduplicated by a client UUID so no order is ever created twice.
Fully Customizable Drag-and-Drop UI
- Every panel is freely movable and resizable - catalog, search, quick keys, cart items, cart totals, cart actions, customer, holds, session, toolbar - by dragging the handle and resizing from the corner.
- Layout presets:
classic,mirrored,catalog-max,compact- plus Reset to defaults. - Two named themes: light "Paper" and dark "Ink Console", plus accent color picker, density, button scaling, and font scaling.
- Everything persisted per POS user so every cashier keeps their own layout on any device.
Full Admin Backend
- Dedicated admin menu: Launch Terminal, Registers, Sessions, POS Users, Roles, Payment Methods, Quick Keys, Reports, Configuration.
- Sales reports: orders, gross, by payment method, by cashier, by hour - filterable by register and date range.
- Sales Order grid integration: the native order grid gains
POS RegisterandPOS Cashiercolumns. - Every admin surface ACL-protected under
Panth_MagePos::manage.
Engineering Quality
- Strict types, constructor DI only - no ObjectManager anywhere in the codebase.
- MSI (Multi-Source Inventory) aware: salability and salable quantities resolved per stock; restock on refund returns quantity to the correct source; graceful fallback when MSI is disabled.
- All write endpoints are POST with form-key validation; every permission enforced server-side.
- Repository interfaces (
Panth\MagePos\Api\*RepositoryInterface) for every POS entity. - Unit-tested service layer: discount caps, payment sum and change validation, session cash math, sync deduplication, and more.
Compatibility
| Requirement | Versions Supported |
|---|---|
| Magento Open Source | 2.4.4, 2.4.5, 2.4.6, 2.4.7, 2.4.8 |
| Adobe Commerce | 2.4.4, 2.4.5, 2.4.6, 2.4.7, 2.4.8 |
| Adobe Commerce Cloud | 2.4.4 to 2.4.8 |
| PHP | 8.1.x, 8.2.x, 8.3.x, 8.4.x |
| Hyva Theme | All versions (terminal renders outside the theme layout) |
| Luma Theme | Native support |
| Any custom theme | Yes - the terminal does not depend on the storefront theme |
| MSI (Multi-Source Inventory) | Fully supported, with non-MSI fallback |
| Required Dependency | mage2kishan/module-core (free, installed automatically by Composer) |
Recommended hardware: any tablet or desktop with a modern browser (Chrome, Edge, Safari), an optional USB/Bluetooth keyboard-wedge barcode scanner, and any browser-printable receipt printer. No proprietary hardware required.
Installation
Composer Installation (Recommended)
composer require mage2kishan/module-mage-pos bin/magento module:enable Panth_Core Panth_MagePos bin/magento setup:upgrade bin/magento setup:di:compile bin/magento setup:static-content:deploy -f bin/magento cache:flush
The required dependency mage2kishan/module-core is installed automatically by Composer.
Manual Installation via ZIP
- Download the latest release from Packagist or from the product page.
- Extract it to
app/code/Panth/MagePos/in your Magento install. - Make sure
Panth_Coreis installed too (required dependency). - Run the commands above starting from
bin/magento module:enable.
Verify Installation
bin/magento module:status Panth_MagePos
# Expected: Module is enabled
After install, open the terminal at https://your-store.com/pos and the admin backend at:
Admin → Point of Sale (MagePos)
Configuration
Go to Stores → Configuration → Panth → Point of Sale (MagePos).
| Setting | Group | Default | Description |
|---|---|---|---|
| Enable Module | General | Yes | Master switch for the POS terminal and all MagePos features. |
| Idle Auto-Lock (minutes) | General | 5 | Minutes of inactivity before the screen locks and asks for the cashier PIN. Set 0 to disable. |
| Default Register ID | General | (empty) | Register preselected on the login screen. Leave empty to let the cashier choose. |
| Barcode Attribute Code | Catalog & Barcode | sku | Product attribute matched when a barcode is scanned. |
| Search Page Size | Catalog & Barcode | - | Number of products returned per page in terminal search and category browse. |
| Show Out of Stock Products | Catalog & Barcode | No | When enabled, out-of-stock products appear in search and category results. |
| Offline Catalog Cache Limit | Catalog & Barcode | 2000 | Maximum products included in the offline IndexedDB catalog snapshot. |
| Guest Checkout Email | Customers | - | Email used for POS orders placed without selecting a customer. |
| Default Customer Group | Customers | - | Customer group assigned to customers created from the terminal. |
| Placeholder Product SKU | Custom Products | pos-custom-sale | SKU of the placeholder product used for ad-hoc custom line items. |
| Default Tax Class | Custom Products | - | Tax class applied to custom line items when no tax class is chosen. |
| Order Note Prefix | Checkout | - | Prefix added to order comments from the POS terminal. |
| Auto-Invoice Offline Payments | Checkout | Yes | Automatically create an invoice when an order is fully paid with cash or offline methods. |
| Require Open Register Session | Checkout | Yes | Block sales unless the cashier has an open register session. |
| Receipt Logo URL | Receipt | (empty) | URL or media path of the logo at the top of receipts. Leave empty to print the store name only. |
| Receipt Header Text | Receipt | - | Text shown below the logo on every receipt. Per-register overrides are set in the Registers grid. |
| Receipt Footer Text | Receipt | - | Text at the bottom of every receipt. Per-register overrides are set in the Registers grid. |
| Show Tax Breakdown | Receipt | Yes | Print the per-rate tax breakdown in the receipt totals. |
| Auto-Email Receipt | Receipt | No | Automatically email the receipt when a customer email address is on the order. |
| Enable Offline Mode | Offline Mode | Yes | Cache the catalog in the browser and queue orders while the connection is down. |
| Auto-Close Sessions After (hours) | Register Sessions | 24 | Sessions left open longer than this are closed automatically by cron. Set 0 to disable. |
Registers, POS users, roles, payment methods, and quick keys are managed in their own admin grids under the Point of Sale (MagePos) menu, not in system configuration.
How It Works
- A cashier opens
https://your-store.com/pos, logs in with username and password, picks a register, and opens a session with an opening float. - Products are found by barcode scan, search, category browse, or quick key. Configurable, grouped, and bundle products open an option picker.
- Discounts, coupon codes, and customer group pricing are applied on the real Magento quote, so all price rules and tax are exact.
- At checkout, the cashier selects one or more payment methods. Cash rows calculate change automatically. Split payments let any combination of methods cover the total.
- The order is placed through Magento's native quote-to-order pipeline. A receipt number is assigned, a credit memo is available for refunds, and the sale appears immediately in
Admin → Sales → Orders. - At end of day, the cashier closes the session with counted cash. The Z report shows expected vs counted cash and the over/short amount.
Roles and Permissions
Each POS role carries these settings, all enforced server-side:
| Permission | What It Controls |
|---|---|
max_discount_percent |
Ceiling for all discount and price-override paths (0-100) |
can_price_override |
Direct line-price editing |
can_refund |
Order search and credit memo refunds |
can_open_close |
Opening and closing register sessions |
can_cash_inout |
Cash in/out movements |
can_custom_product |
Ad-hoc custom sale lines |
can_edit_layout |
Layout editor access |
can_view_reports |
X report and session reports in the terminal |
Two seeded roles are included: Administrator (full access, 100% discount cap) and Cashier (10% discount cap, no refunds, no overrides). Duplicate and adjust to fit your team. If a cashier with a 10% cap tries a 15% discount, the server rejects it regardless of what the UI sends.
Extending Payments (Developers)
Wire a real gateway behind any online payment method by implementing Panth\MagePos\Api\PaymentProcessorInterface:
declare(strict_types=1); namespace Acme\PosStripe\Model; use Magento\Sales\Api\Data\OrderInterface; use Panth\MagePos\Api\PaymentProcessorInterface; class StripeProcessor implements PaymentProcessorInterface { public function supports(string $methodCode): bool { return $methodCode === 'stripe_link'; } public function process(OrderInterface $order, array $paymentRow): array { // Create a payment intent / checkout link for $paymentRow['amount'] ... return [ 'status' => 'pending', // 'paid' or 'pending' 'reference' => 'pi_123', // gateway reference 'redirect_url' => 'https://example.com/pay', // shown as link + QR at the terminal ]; } }
Register it in your module's etc/di.xml:
<type name="Panth\MagePos\Model\Payment\ProcessorPool"> <arguments> <argument name="processors" xsi:type="array"> <item name="stripe_link" xsi:type="object">Acme\PosStripe\Model\StripeProcessor</item> </argument> </arguments> </type>
Repository interfaces (Panth\MagePos\Api\*RepositoryInterface) are available for every POS entity for programmatic access.
FAQ
Is Panth MagePos free?
Yes. It is completely free and open-source under the MIT license. There are no paid tiers, no per-register fees, no license keys, and no locked features. You can use, modify, and redistribute it, including commercially.
Does it work on Hyva?
Yes, and also on Luma and any custom theme. The terminal is a standalone SPA rendered outside the theme layout, so it looks identical on every theme. No jQuery, no mage/*, no Tailwind dependency.
Is every POS sale a real Magento order?
Yes. Sales go through Magento's native quote to order pipeline, so invoices, credit memos, tax calculation, stock deduction, and all reporting work unchanged. The native Sales Order grid gains POS register and cashier columns.
Does it support configurable, bundle, and grouped products?
Yes. All Magento product types are supported: simple, configurable (variant picker), grouped (per-product quantities), bundle (full option selection with live price recalculation), and products with custom options. Selected options appear in the cart and on the receipt.
How are discounts and price rules calculated?
Server-side, by Magento itself. Every POS cart is a real Magento quote, so catalog price rules, cart price rules, coupon codes, tier prices, customer group prices, special prices, and tax are all honored exactly as on your storefront. POS-specific discounts are applied on top and capped by the cashier's role limit.
Can it keep selling when the internet goes down?
Yes. With offline mode enabled, the terminal caches a catalog snapshot in IndexedDB and keeps searching and selling (cash and offline payment methods) when the network drops. Completed sales queue locally and sync automatically on reconnect, deduplicated by a client UUID so no order is ever created twice.
Does it handle split payments?
Yes. Any number of payment methods can be combined on one sale, for example half cash and half card. Cash rows may exceed the remaining balance (the difference becomes change given back). Every payment row is stored per order and printed on the receipt.
Does it support barcode scanning?
Yes, two ways. Keyboard-wedge USB and Bluetooth scanners work with zero setup. Camera scanning is available where the browser supports the BarcodeDetector API. The barcode attribute is configurable (default SKU).
Can cashiers have different permissions?
Yes, that is exactly what roles are for. Each role carries a maximum discount percentage plus yes/no flags for refunds, price overrides, session open/close, cash in/out, custom products, layout editing, and reports. All checks are enforced server-side.
How do refunds work?
Search the order by increment ID or email (or browse recent POS orders), select items and quantities, and the refund total is computed server-side with the same math as a Magento credit memo. Choose the refund payment split, optionally restock (MSI-aware), give a reason, and a real credit memo is created along with the matching cash-drawer movement.
Are there default login credentials?
No, by design. The seeded admin POS user is created disabled with random, unrecoverable password and PIN hashes. A fresh install cannot be logged into by anyone. You set your own password and PIN and enable the account in admin before first use.
Does it work with Multi-Source Inventory (MSI)?
Yes. Product salability and salable quantities are resolved per stock via MSI. Refund restock returns quantity to the correct source. When MSI is disabled, the module falls back to legacy stock handling automatically.
Can I run multiple registers?
Yes. Create one register per till, each bound to a store view. Quick keys can be global or per register, receipt header and footer can be overridden per register, and sessions, cash, and reports are tracked per register.
Support
| Channel | Contact |
|---|---|
| Product Page | kishansavaliya.com/magento-2-pos.html |
| kishansavaliyakb@gmail.com | |
| Website | kishansavaliya.com |
| +91 84012 70422 | |
| GitHub Issues | github.com/mage2sk/module-mage-pos/issues |
| Upwork (Top Rated Plus) | Hire Kishan Savaliya |
| Upwork Agency | Panth Infotech |
Response time: 1-2 business days.
Need Custom Magento Development?
Looking for custom Magento module development, Hyva theme work, store migrations, or performance tuning? Get a free quote in 24 hours:
About Panth Infotech
Built and maintained by Kishan Savaliya (kishansavaliya.com), a Top Rated Plus Magento developer on Upwork with 10+ years of eCommerce experience.
Panth Infotech is a Magento 2 development agency that builds high quality, security focused extensions and themes for both Hyva and Luma storefronts. The extension suite covers SEO, performance, checkout, product presentation, customer engagement, and store management, with each module built to MEQP standards and tested across Magento 2.4.4 to 2.4.8.
Browse the full extension catalog on our Magento extensions page or on Packagist.
Quick Links
| Resource | Link |
|---|---|
| Product Page | magento-2-pos.html |
| Packagist | mage2kishan/module-mage-pos |
| GitHub | mage2sk/module-mage-pos |
| Website | kishansavaliya.com |
| Free Quote | kishansavaliya.com/get-quote |
| Upwork (Top Rated Plus) | Hire Kishan Savaliya |
| Upwork Agency | Panth Infotech |
| kishansavaliyakb@gmail.com | |
| +91 84012 70422 |
Ready to add a real POS to your Magento store for free?
SEO Keywords: magento 2 pos, magento 2 point of sale, free magento 2 pos, magento 2 pos extension, magento pos open source, magento 2 pos system, panth magepos, magento 2 cash register, magento 2 retail pos, magento 2 pos terminal, magento 2 in-store sales, magento 2 barcode pos, magento 2 barcode scanner, magento 2 quick keys pos, magento 2 register session, magento 2 x report, magento 2 z report, magento 2 cash management, magento 2 cash drawer, magento 2 pos discount, magento 2 price override, magento 2 split payment, magento 2 split tender, magento 2 pos cash payment, magento 2 pos card payment, magento 2 payment link qr, magento 2 custom sale line, magento 2 pos refund, magento 2 pos credit memo, magento 2 pos receipt, magento 2 80mm receipt, magento 2 thermal printer receipt, magento 2 email receipt, magento 2 offline pos, magento 2 pos offline mode, magento 2 indexeddb pos, magento 2 pos order sync, magento 2 pos hold cart, magento 2 multi cart pos, magento 2 pos pin lock, magento 2 cashier roles, magento 2 pos permissions, magento 2 pos reports, magento 2 pos layout editor, magento 2 touch pos, magento 2 tablet pos, magento 2 configurable product pos, magento 2 bundle product pos, magento 2 msi pos, hyva pos, hyva point of sale, luma pos, magento 2.4.8 pos, php 8.4 pos, mage2kishan, mage2sk, kishan savaliya pos, panth infotech extension, magento 2 omnichannel, magento 2 brick and mortar, adobe commerce pos, free pos for magento, mit license magento pos







