Hello Frappe Community!
I’m excited to share a standalone Frappe app I’ve built called Bill Printer — an offline-first POS bill printing dashboard designed for high-speed transactions.
The Problem it Solves:
In retail and hospitality, internet latency or outages can bring the checkout line to a halt. Traditional POS setups often require server roundtrips to fetch prices and print formatting.
The Solution:
Bill Printer is designed to download all items, categories, pricing lists, and company details to the browser when the cashier starts their session. Once loaded, the checkout, cart operations, pricing calculations, discount deductions, tax overrides, and receipt printing run 100% offline and blazing fast from the browser’s local cache.
Key Features:
Offline-First checkout: Sell, calculate totals, and print receipts without any active internet connection.
Beautiful Thermal Print layout: A clean 2-column layout designed specifically for 80mm and 58mm thermal printers (mirrored from the standard POS Receipt BriefJinja template).
Online-Only session start & sync: Pulls POS Profiles, default company details, and item groups from the ERPNext database when starting/syncing sessions.
Local Settings Panel: Cashiers can override flat tax rates and set custom receipt footer messages directly on the page (persisted in local storage).
Smart UI placeholders: Auto-assigns vibrant gradient color backgrounds as placeholders for items that don’t have images uploaded in ERPNext.
How to Install:
You can install this app directly onto your bench using:
bench get-app https://github.com/Gifted87/ERPNEXT_Receipt_Printer.git
bench --site your_site_name install-app bill_printer
bench --site your_site_name clear-cache
Once installed, just navigate to http://your-site/pos in your browser.
Open Source Repository:
The project is fully open source. Check out the code, report issues, or contribute here:
GitHub Repo: Gifted87/ERPNEXT_Receipt_Printer
I would love to hear your feedback, feature requests, or suggestions. If you find this app useful, please consider giving the repository a
on GitHub!