Easy POS — an open-source, React-based Point of Sale app for ERPNext

Hey everyone :waving_hand:

I’ve been building Easy POS — a free, open-source POS front-end for ERPNext/Frappe — and wanted to share it here since it’s now at a stage worth showing off.

What it is

Easy POS replaces the standard ERPNext POS screen with a purpose-built retail checkout experience: a fast cart-and-payment terminal, shift-based cash management, invoice/returns handling, and admin screens for POS Profiles, Price Lists, and Discounts. It’s built as a modern React 19 SPA, packaged as a normal installable Frappe app — no separate database, it reuses ERPNext’s own Sales Invoice, Customer, and POS Profile doctypes as the system of record, so everything you ring up shows up natively in ERPNext’s own reports and ledgers.

Target users: small/mid-size retail counters — shops, cafés, multi-terminal stores — already running ERPNext, who want a snappier cashier-facing UI without giving up their existing accounting/inventory/reporting stack.

Some of what’s in it today

  • POS Terminal — cart checkout, live item search, line/invoice discounts, split (multi-mode) payments

  • Barcode scanning — hardware scanner (keyboard-wedge, works without clicking into search) or device camera

  • Held/draft sales — park a cart as a Draft, pull it back later

  • Product Bundles — added like any item, ERPNext explodes it into packed items on checkout

  • Customer-facing second screen — live mirror of the cart for a dual-monitor till setup

  • Payment gateways — Razorpay live checkout today, built as a pluggable registry so more gateways can be added without touching the checkout screen

  • Pricing Rules / Item Prices / Price Lists — full admin screens, applied automatically in-cart

  • Loyalty Program — enroll customers, redeem points in-cart against the invoice total

  • Invoice Register + returns — searchable invoice list, cancel, credit notes with recomputed taxes

  • Shift management — opening/closing entries, per-payment-mode reconciliation, everything scoped to the shift (not just the profile) so numbers can’t leak across shifts sharing a till

  • Installable PWA — add-to-home-screen, precached app shell, update-prompt banner

  • Light/dark theme

It’s being built toward a fully offline-first PWA — today’s release is the complete online checkout-to-close workflow plus PWA installability; RxDB-backed local storage and background sync are next on the roadmap.

Screenshots

(attach a few from easy_pos/public/screenshots/ here — terminal, invoice-detail, reports, dark-mode are good picks)

Try it

cd $PATH_TO_YOUR_BENCH
bench get-app https://github.com/aashishvashisht6/EasyPOS --branch develop
bench install-app easy_pos

Would love feedback, bug reports, or feature requests — issue templates are set up on the repo for both. If you’re running ERPNext for retail and this is useful (or missing something you need), let me know here or open an issue!

5 Likes

hi! how did you integrate the payments and the PWA?

Payments: We reused the Razorpay Settings from the Frappe Payments app (for credentials/order creation) and built the checkout + verification flow on top of it. It’s designed so other gateways can be added the same way later.

PWA: Since the frontend is built in React, we added PWA support at the build level — so it can be installed like an app, loads instantly via caching, and prompts you to update when a new version is released.

1 Like

do you have any guide to make it pwa or you used the pwa app from the marketplace?

@kbab_232 i have used this plugin for react and accordingly created components for the PWA