Ask anyone who runs a counter in Phnom Penh and they will tell you the same thing: the internet is fine, until it is not. It goes at lunchtime. It goes in the rain. It goes for ten minutes on a Saturday afternoon with six people in the queue.
Most points of sale treat that as an error. They show a spinner, or a message, and the shop stops trading. We think that is the wrong way round, so BrownPOS is built the other way.
The catalogue lives on the device
Your products, prices and customers are copied onto the till itself. Searching, scanning and adding to a sale never wait for a server, which is why the till feels quick even on a good connection.
When you take payment, the sale is written down on the device first and queued to send. The receipt prints. The drawer opens. The customer leaves. None of that asked the internet for permission.

The sale is written down on the device first. The receipt prints, the drawer opens, and the customer leaves.
What happens when it comes back
The moment the line returns, the queue sends itself, in the order the sales happened. Stock catches up. The day summary catches up. Nobody has to remember to press anything.
If the server refuses something — a void it will not accept, say — the till says so plainly and keeps the item until an owner has looked at it. Nothing is silently dropped.

Try it the honest way
Pull the plug on your router in the middle of a sale and keep selling. That is the demo we give you, standing at your counter.