The challenge
A browser-based POS had to print receipts, cut paper and open the cash drawer on a local Epson TM-m30III.
What we built
- Local Node.js API: /print, /print/test and /health endpoints
- Receipt lines turned into Epson ePOS-Print XML
- Configurable device settings and a repeatable test path
The full story
The situation
A browser-based POS needed to print receipts, cut the paper and open the cash drawer on an Epson TM-m30III on the local network.
What we built
A small local Node.js API that sits between the POS and the printer. The POS sends receipt lines as JSON, and the service turns them into Epson ePOS-Print XML (text, feed and cut).
Endpoints
/api/printfor real receipts/api/print/testto test the printer on its own/api/healthto check the service
What testing found
The printer’s admin page was reachable, but its print ports answered with a different service instead of ePOS-Print. That pointed the fix at the printer’s service settings rather than the code. Final checks of a physical receipt, cut and drawer pulse were the next step.