A walkthrough of the CashProof shift flow on iOS. The cashier counts on their phone; the server verifies; the owner collects with a PIN; the bank reference closes the loop.
Maria taps in her STORE CODE, name, and 4-digit PIN. No email, no password manager — the login is the shift punch-in.
One row per denomination. Plus / minus steppers — no typing. The running total updates live, but server.calc_total() is the only one that counts.
The client total is thrown away. The server recalculates, issues CS-20260418-AB3K, and binds it to the shift. No edits after this point.
The Bluetooth printer spits a receipt with the QR, the total, and a one-time HANDOVER PIN. Both go into the sealed envelope, into the safe.
Next morning, Nikos scans the envelope's QR with the owner app and enters the PIN Maria handed him. The envelope flips to collected_by_owner.
At the bank, Nikos taps the deposit reference into the app. CashProof reconciles — the envelope is now deposit_confirmed, and the accountant can verify via the QR without logging in.