Standalone touch POS terminal at /pos
theme-independent and pixel-identical on Hyva, Luma, and any custom theme, with no build step
Turn any Magento 2 store into a retail counter. Panth MagePos adds a standalone touch POS terminal at /pos that sells your real catalog at server-accurate Magento prices - cashier logins with PIN unlock, register sessions with X / Z reports, barcode scanning, quick keys, every...
Key Features:
Additional Services
Built-in from day one. No add-ons, no upsell, no licence keys to renew.
theme-independent and pixel-identical on Hyva, Luma, and any custom theme, with no build step
native invoices, tax, credit memos, stock deduction, and reporting with no middleware or product sync jobs
opening float, cash in / out with reasons, counted close, and automatic over / short reconciliation
simple, configurable, grouped, bundle, and custom options with catalog / cart price rules, coupons, tier and group prices
Panth MagePos is a free, open-source (MIT-licensed) Magento 2 POS extension that adds a standalone touch point of sale terminal at /pos and places every in-store sale as a real Magento order.
Full 7-minute walkthrough: offline mode, split payments, configurable variants, X / Z reports, barcode scanning, and receipts on a live Magento 2 store.
Most Magento point of sale products are SaaS bridges: a separate cloud system, a separate product database, monthly fees, and a sync job that can fail before your busiest weekend. MagePos is native. The terminal talks directly to your live catalog, customers, MSI inventory, and order pipeline, so invoices, tax, credit memos, stock deduction, reporting, and ERP exports keep working unchanged. Pricing is server-accurate because every POS cart is a real Magento quote: catalog price rules, cart price rules, coupon codes, tier prices, and customer group prices apply exactly as on your storefront.
Cashiers sign in with their own credentials and unlock with a PIN after idle lock; roles cap discounts and gate refunds, price overrides, and cash movements, all enforced server-side. Register sessions track an opening float and cash in / out, then close with a Z report and automatic over / short reconciliation. The terminal scans barcodes, holds and retrieves carts, splits payments across cash, offline methods, and QR payment links, prints 80 mm thermal receipts, and keeps selling offline with deduplicated order sync. It renders outside the theme layout, so Hyvä, Luma, and any custom theme display it pixel-identically. Compatible with Magento 2.4.4-2.4.8 (Magento Open Source and Adobe Commerce) and PHP 8.1-8.4.
Most Magento POS solutions are SaaS bridges: a separate cloud product, a separate product database, monthly fees, and a sync job that breaks at 2 a.m. before your busiest Saturday. Panth MagePos is native and free, the terminal runs inside your Magento installation, sells your real catalog at your real prices, and every sale lands instantly as a normal Magento order.
/pos, pixel-identical on Hyvä and LumaPanth MagePos covers the full retail counter workflow for Magento 2, from cashier login to printed receipt:
/pos, big targets (44 px+), numeric keypads, tablet-landscape primary, responsive down to phonesmage/*, no Tailwind dependency, no build step
password_hash(), never stored in plain text
BarcodeDetector API where available; configurable barcode attribute (defaults to SKU)
Panth MagePos sells every Magento product type, not just simples:
Selected options are shown in the cart and on the receipt, so cashiers and customers always see exactly what was sold.
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. All money math happens server-side, the terminal only displays.


PaymentProcessorInterface extension point lets developers wire real gatewayspanth_pos), with per-row detail in the payment's additional information, existing accounting and ERP exports keep working{register_code}-{session_id}-{seq}can_refund)classic, mirrored, catalog-max, compact, plus Reset to defaults

POS Register and POS Cashier columnsPanth_MagePos::managePanth\MagePos\Api\*RepositoryInterface) for every POS entityEach POS role defines (all enforced server-side):
| Permission | Controls |
|---|---|
max_discount_percent |
Ceiling for every discount/override path (0-100) |
can_price_override |
Direct line-price editing |
can_refund |
Order search + credit memo refunds |
can_open_close |
Opening/closing register sessions |
can_cash_inout |
Cash in / cash out movements |
can_custom_product |
Ad-hoc custom sale lines |
can_edit_layout |
Layout editor access |
can_view_reports |
X report / session reports in the terminal |
Seeded roles: Administrator (everything, 100%) and Cashier (10% cap, no refunds, no overrides), duplicate and adjust to fit your floor. If a cashier with a 10% cap tries a 15% discount, the server rejects it regardless of what the UI sends.
| Requirement | Versions Supported |
|---|---|
| Magento Open Source (CE) | 2.4.x (2.4.4-2.4.8) |
| Adobe Commerce (EE) | 2.4.x (2.4.4-2.4.8) |
| Adobe Commerce Cloud | 2.4.x |
| PHP | 8.1, 8.2, 8.3, 8.4 |
| MySQL / MariaDB | 8.0+ / 10.4+ |
| Hyvä Theme | All versions (terminal is theme-independent) |
| Luma Theme | Native support |
| Any custom theme | Yes, the terminal renders outside the theme layout |
| MSI (Multi-Source Inventory) | Fully supported, with non-MSI fallback |
| Required dependency | mage2kishan/module-core (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 (80 mm thermal recommended). No proprietary hardware required.
composer require mage2kishan/module-mage-pos
bin/magento module:enable Panth_MagePos
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush
The required dependency mage2kishan/module-core is installed automatically by Composer.
bin/magento module:status Panth_MagePos
# Expected: Module is enabled
Then open the terminal at:
https://example.com/pos
and the admin backend at Admin → Point of Sale (MagePos).
A first sale at Acme Store in five minutes:
admin POS user is created disabled with unrecoverable random password/PIN hashes. Go to Admin → Point of Sale (MagePos) → POS Users, edit admin, set a strong password and a PIN, and switch Status to Enabled.front, bound to a store view). Create one POS user per cashier under POS Users and assign them the Cashier role (10% discount cap, no refunds), never share logins.https://example.com/pos, log in as the cashier, pick the register, and open a session with the opening float (e.g. 200.00).example-product, configurable/bundle/grouped products open an option picker. Attach a customer for group pricing, or sell as guest.customer@example.com), or reprint later.The sale appears immediately under Admin → Sales → Orders with POS register and cashier columns. For the full cashier walkthrough see USER_GUIDE.md.
All settings live under Stores → Configuration → Panth → Point of Sale (MagePos):
| Section | Highlights |
|---|---|
| General | Enable module, idle-lock minutes (default 5), default register |
| Catalog | Barcode attribute (default sku), search page size, show out-of-stock, offline catalog limit (default 2000) |
| Customer | Guest email (e.g. pos-guest@example.com), default customer group |
| Custom Product | Placeholder SKU (pos-custom-sale), default tax class |
| Checkout | Order note prefix, auto-invoice offline payments, require open session |
| Receipt | Logo, header/footer (per-register overrides), tax breakdown, auto-email |
| Offline | Enable offline mode |
| Session | Auto-close hours (default 24) |
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.
Panth MagePos is open-source software licensed under the MIT License.
Copyright (c) Kishan Savaliya (Panth Infotech). You are free to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the software, subject to the MIT license terms.
SEO Keywords: magento 2 pos, magento 2 point of sale, magento point of sale extension, magento pos open source, free magento 2 pos, magento 2 pos extension mit, 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, magento 2.4.7 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
Wire a real gateway behind any online 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 (registers, sessions, users, roles, payment methods, orders, quick keys, holds, preferences) for programmatic access.
Talk to Kishan directly: written quote, scope and timeline within 24 hours. No sales call.
Panth MagePos Point of Sale