HERMES POS
Android point of sale for cafés and small restaurants in Indonesia, with cash control for owners who are not always in the shop.
Voids and refunds need the owner's code. A short or over drawer shows the moment a shift closes. Sales keep recording when the internet is down.
Download the app · Features · Architecture · Getting started · Documentation
Download
Install from an APK file: open the download link on the device, allow installation from this source when Android asks,
open the file, and sign in. A free 3-day trial is available to new businesses: register in the backoffice, create a
cashier with a 6-digit PIN, then sign in on the app with the owner account (email or username) and pick the cashier.
Why HERMES POS
Most small cafés lose track of cash in three places: voids, refunds, and a drawer that does not add up.
HERMES POS gives each one a rule and a trace.
- The owner holds the key. A cashier cannot void or refund a paid bill alone. The owner sets a 6-digit approval
code in the backoffice, and a reason is required. Item refunds work only on bills up to 24 hours old.
- The drawer adds up. The cashier counts the drawer at shift close and the difference shows at once. The owner fixes
it in the backoffice with money in or money out and a reason, and the shift is recalculated. A cashier records an
expense in the app (Catat pengeluaran) and, when it is paid from the drawer, the expected cash goes down by that amount;
the owner can add one in the backoffice too, from the drawer or not.
- It works offline. Bills wait in a queue on the device with a provisional number and are sent exactly once when the
internet returns. The same key on every resend means the server rejects duplicates.
- The report reaches the owner. At the end of a shift the cashier taps Kirim ke WA; WhatsApp opens with the
shift report ready to send. The slip can also be reprinted.
Features
Cashier app (Android)
- Sign-in: the owner account signs in once on the device with its email or username; the password is any 6 or more
characters. Ten wrong passwords for a username lock username sign-in for 15 minutes (email still works). Each cashier
then picks their name and enters a 6-digit PIN; five wrong PINs lock that cashier for 5 minutes. The server checks
the PIN, so picking a cashier needs internet; the signed-in cashier can reopen the app offline during their shift. A
phone is pinned to one outlet and only lists that outlet's cashiers.
- Shifts: open with opening cash, close with a cash count and, when the shift had QRIS, the QRIS total read from the
merchant app. The expected cash and QRIS and both differences come from the server's books. A shift belongs to the phone that opened it; another phone takes it
over with the owner's code. A shift cannot close while bills are held or the offline queue is not empty. The
business date follows the business's time zone (WIB, WITA, or WIT).
- Selling: product grid with search and a category picker, item and bill discounts, item notes, hold, recall, and
split bills, temporary menu items, and a voucher picker. On a landscape phone the bill sits on the right; its totals
and Bayar button stay in view while searching and step aside only while a bill field (note, table, name) is typed in.
- Payment: cash with change, and QRIS confirmed by the cashier (no payment gateway yet).
- Printing: Bluetooth ESC/POS printers on 58 mm or 80 mm paper, with printers assigned per role (cashier, kitchen,
bar). Receipts carry the outlet's logo, address, phone, and header and footer text.
- Refunds and voids: owner-approved, with a mandatory reason, and a refund slip.
- History: every shift of the outlet with a period filter, reports per shift, reprint, and WhatsApp share.
This is the beginning of the README. Read the rest at the original. Read the full README ↗