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

Maintainers

Package info

github.com/mage2sk/module-mage-pos

Homepage

Type:magento2-module

pkg:composer/mage2kishan/module-mage-pos

Transparency log

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.1 2026-06-18 09:36 UTC

This package is auto-updated.

Last update: 2026-06-18 09:36:47 UTC


README

Magento 2 POS Extension: Free Open-Source Point of Sale Terminal (Hyva + Luma)

Magento 2.4.x PHP 8.1 - 8.4 Hyva + Luma Live Demo & Details Packagist License MIT Upwork Top Rated Plus Website

Turn any Magento 2 store into a retail counter for free. Panth MagePos adds a standalone, touch-friendly POS terminal at /pos that 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.

Panth MagePos main POS workspace — Magento 2 point of sale terminal in the light Paper theme with catalog, quick keys, cart and customer panels

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.

Get a Free Quote

Kishan Savaliya

Top Rated Plus on Upwork

Hire on Upwork

100% Job Success - 10+ Years Magento Experience Adobe Certified - Hyva Specialist

Panth Infotech Agency

Magento Development Team

Visit Agency

Custom Modules - Theme Design - Migrations Performance - SEO - Adobe Commerce Cloud

Visit our website: kishansavaliya.com  |  Get a quote: kishansavaliya.com/get-quote

Table of Contents

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

Cashier login screen of the Magento 2 POS terminal with username, password and register selection Cashier login Magento 2 POS workspace in the light Paper theme with product catalog, Top Sellers, quick keys and cart Workspace - light "Paper" theme
Magento 2 POS workspace in the dark Ink Console theme Workspace - dark "Ink Console" theme Configurable product option selection modal in the Magento 2 POS Configurable product options
Magento 2 POS cart with line items, discounts and totals Cart with line items and totals Quick keys panel in the Magento 2 POS Quick keys
Drag-and-drop layout editor of the Magento 2 POS terminal Drag-and-drop layout editor Panth MagePos running on Luma theme Same terminal on Luma

Key Features

Standalone Theme-Independent POS Terminal

  • Touch-first SPA at /pos with 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 BarcodeDetector API 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 PaymentProcessorInterface extension 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 Register and POS Cashier columns.
  • 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

  1. Download the latest release from Packagist or from the product page.
  2. Extract it to app/code/Panth/MagePos/ in your Magento install.
  3. Make sure Panth_Core is installed too (required dependency).
  4. 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

  1. 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.
  2. Products are found by barcode scan, search, category browse, or quick key. Configurable, grouped, and bundle products open an option picker.
  3. Discounts, coupon codes, and customer group pricing are applied on the real Magento quote, so all price rules and tax are exact.
  4. 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.
  5. 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.
  6. 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
Email kishansavaliyakb@gmail.com
Website kishansavaliya.com
WhatsApp +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:

Get a Free Quote

Hire on Upwork    Visit Agency    View Product Page

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
Email kishansavaliyakb@gmail.com
WhatsApp +91 84012 70422

Ready to add a real POS to your Magento store for free?
See Panth MagePos

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