VunaPOS is the retail point-of-sale workspace for ERPNext.
It provides a fast and focused selling experience while relying on ERPNext for the business-critical parts of the workflow, including items, customers, warehouses, stock, taxes, payment methods, invoices, and accounting.
It acts as a point-of-sale orchestration layer that sits between:
- Items, what is being sold
- Customers, who is making the purchase
- Stock, where the items are coming from
- Payments, how the sale is settle
- Invoices, the final accounting transaction
- Printing, how the customer receives proof of purchase
VunaPOS handles everything from item search and cart management to customer selection, payment processing, invoice creating, batch and serial number allocation, and receipt printing.
It is ideal for retail stores, supermarkets, restaurants, pharmacies, wholesalers, and other businesses that require a fast and reliable point-of-sale experience connected directly to ERPNext.
Why VunaPOS
Many point-of-sale systems become difficult to use when faced with real business requirements such as:
- Inclusive and exclusive taxes
- Multiple payment methods
- Batch-controlled and serialised items
- Held sales and interrupted checkouts
- Real-time stock validation
- Customer-specific pricing
- External payment gateways
- Sales Invoice and POS Invoice workflows
VunaPOS addresses these challenges by:
- Using ERPNext as the source of truth for stock, taxes, pricing, customers, payments, and accounting.
- Providing a clean and focused cashier interface without duplicating ERPNext business logic.
- Supporting both Sales Invoice and POS Invoice workflows based on the configured POS Settings.
- Keeping critical calculations and validations on the backend, reducing inconsistencies between the user interface and ERPNext.
The result is a POS system that is practical, extensible, and suitable for real-world ERPNext deployments.
Key Features
- Fast Item Search: Find items using their name, item code, or barcode.
- Customer Selection: Search and select existing customers or use the default customer configured in the POS Profile.
- Cart Management: Add items, change quantities, remove items, clear the cart, and review invoice totals before checkout.
- Hold and Restore: Save an active sale as a draft invoice and restore it later without losing the transaction.
- Flexible Invoicing: Create either a Sales Invoice or POS Invoice depending on the configured ERPNext POS Settings.
- Tax Handling: Support inclusive and exclusive taxes using ERPNext tax calculation rules.
- Batch Allocation: Automatically allocate stock from valid batches, including quantities distributed across multiple batches.
- Serial Number Allocation: Automatically allocate available serial numbers for serialised items during checkout.
- Multiple Payment Modes: Use the payment methods configured in the ERPNext POS Profile.
- Payment Gateway Support: Process and verify payments through supported gateways such as M-Pesa STK Push and C2B transactions.
- Checkout Validation: Validate stock, taxes, payment totals, batch allocation, serial numbers, and invoice status before submission.
- Receipt Printing: Render and print receipts using ERPNext Print Formats.
Under the Hood
- Frappe Framework - A full-stack web application framework written in Python and JavaScript. It provides the backend foundation for authentication, permissions, document management, database access, background jobs, and APIs.
- React - A JavaScript library used to build the responsive and interactive VunaPOS cashier interface.
- Tailwind CSS - A utility-first CSS framework used to create the layout, components, and visual styling of the VunaPOS frontend.
- Frappe React SDK - A React integration library used to connect the VunaPOS frontend with Frappe authentication, APIs, and backend methods.