CASE STUDY · RETAIL
Paint store point of sale on ERPNext
Working alongside the client’s ERP partner, we built a custom point-of-sale experience for a paint retailer: a fast React counter app inside ERPNext, backed by a synced colour catalogue, contractor job sites, card payments and automated end-of-day processes.
THE CHALLENGE
What needed to happen
Selling paint is not like selling boxed goods. Staff at the counter need to find the exact colour a customer wants among thousands of tints, know which finishes and samples are available, record which job site a contractor is buying for, and take payment quickly. The standard ERP point of sale was too generic and too slow for this, but all stock, pricing and accounting still had to stay in the client’s ERP.
WHAT WE DELIVERED
Every colour, every sale,
one counter.
Custom React point of sale
- A fast sales screen embedded inside the ERP
- Customer, product and payment sections designed for the counter
- Invoice, customer, item, stock, purchase and vendor views
- Receipts printed at the counter or sent to customers
Paint colour & tint catalogue
- Tint records with names, colour families, hex and RGB values
- Catalogue synced from the paint manufacturer’s colour data
- Sample SKUs, exterior availability and stain opacities
- Generated colour swatches and images for screens and receipts
Contractor & customer management
- Job-site addresses recorded against each customer
- Customer validation rules on save
- Automatic taxes, price lists and payment terms per customer
Payments & invoicing
- Integrated card payments through a payment gateway
- POS invoices consolidated into ERP sales invoices
- A custom sales receipt format
- Payment methods configured per POS profile
Operations & data
- Opening and closing entries for each register
- Hourly automatic closing of POS sessions left open
- Bulk imports of item prices and historical invoices from spreadsheets
- Sign-out from all sessions for shared counter devices
ENGINEERING & OPERATIONS
- A custom Frappe app using hooks, document events and method overrides instead of core changes
- A React and TypeScript front end built with Vite and deployed as ERP assets by script
- Custom fields and property setters shipped as fixtures for repeatable installs
- Scheduled background jobs for end-of-day housekeeping
- An API bridge between the React app and ERP business logic
- Pre-commit checks with Ruff, ESLint and Prettier
WHAT IT MADE POSSIBLE
- A counter experience built around how paint is actually sold
- Exact colour data available at the point of sale
- Contractor purchases tracked by job site
- Faster checkout with integrated card payments
- Stock, pricing and accounting kept in one system of record
TECHNOLOGY
Tools we used
MORE WORK
