Kaha
In developmentCafes & small chains
Point of sale and back office for Philippine coffee shops — a sales invoice built to BIR rules on 58 mm paper, every e-wallet on one line, and payroll finished before the owner goes home.
- tenancy
- Postgres row-level security · isolation suite in CI(shipped)
- tests
- 767 automated, including negative controls(shipped)
- invoices
- Locked counter · hash-chained · retry-safe(shipped)
- money
- Exact centavos, VAT split the way the invoice reports it(shipped)
- payroll
- SSS · PhilHealth · Pag-IBIG · withholding(shipped)
- billing
- PayMongo links, saved cards, runs unattended(shipped)
- printing
- 58 mm thermal receipts(in progress)
- pos
- Counter screens being built(in progress)
A POS for a small chain either costs a fortune per branch or stops dead the moment the connection drops. Owners with two or three shops end up running separate systems in each, with no way to compare them and no confidence that the numbers add up the same way.
One system across every branch, priced per shop. Sales carry on during an outage and settle by themselves when the line returns. Every invoice number comes from a locked counter, so a retry can never charge a customer twice. Payroll runs on the statutory tables, the subscription bills itself, and an owner sees all their shops in one place while no shop can see another's numbers.
What it does
The parts that matter to the owner
It does not stop when the internet does
Sales are taken during an outage and settle on their own once the connection is back. The queue closes when the POS does, not when the internet drops.
Run two shops or ten
Menus, prices and settings are set once for the business and adjusted per branch, or per POS, only where they actually differ.
Each cafe's numbers are its own
One cafe can never see another's sales. That is enforced by the database itself rather than trusted to every screen remembering to filter.
An invoice that cannot be charged twice
Each sale takes its invoice number from a locked counter, records exactly what was sold, and extends a tamper-evident chain — so a retry never charges twice and an edit never goes unnoticed.
Payroll on the tables the law sets
SSS, PhilHealth, Pag-IBIG and withholding worked out from the statutory tables, and a payslip that is a proper document rather than a screenshot.
Billing that collects itself
Plans that include what a small cafe needs and no more, invoices with a PayMongo payment link, and saved cards that pay the invoice on the day it falls due.
Latest features
What is new in Kaha
A way back in for a locked-out cafe
If a cafe loses access to its own POS, a fresh registration code can be issued from the console, so the owner gets back in without losing anything.
Plans that include only what a cafe needs
Each plan ticks exactly what it includes, so a small cafe gets a small product instead of paying for a chain's.
The pack a BIR examiner asks for
The documents an examiner wants to see, produced by the system itself, and a test receipt to check the printer with.
Kaha takes what was learned running Croma MNL and turns it into something any cafe can buy, rather than a system built for one business. None of the original code carries over; its reasoning does, and every decision that is not obvious is written down with the alternative it beat.
It is still in development. What works today: a cafe can be provisioned, priced and configured, it can sell, and it can pay its people. Billing, payroll and the books run. What is still being built is the counter itself — the screens a barista taps all day and the printing behind them.
The one guarantee everything rests on is that a cafe can never reach another cafe’s rows. That is enforced by Postgres row-level security, so it is a property of the database rather than a promise every screen has to keep — and a suite of isolation tests, including negative controls that must fail, proves it on every change.