To my knowledge at least, no POS app currently available meets all of these criteria. The built-in v13 POS App and POS Awesome are the two major players in this space, though neither handles Offline mode at the moment. (I hear offline mode is a priority in the near future for the built-in one, but I don’t have any inside knowledge.)
It is okay to “ask for” an offline POs, but be careful about what you “accept” as an offline POS solution.
Any real “offline POS” would need to be an installed application on the local device that has the ability to then securely sync data to the cloud system.
Current ideas around “offline POS” revolve around using the browser cache as the holding place for the offline data and then syncing once an internet connection is again established. While this is certainly a clever way to do this, it is also easily hijacked for fraudulent purposes.
Since no ERP solutions company provides their own internet browser, they would all be at the mercy of whatever browser the client uses. Where as a dedicated application installed on the client hardware can implement much better security protocols than one could possibly implement in a browser cache.
Any nefarious player could simply delete the browser cache and then pocket any monies in the cache drawer early in their shift so that all transactions after that point are then tabulated for the day. All of the transactions prior to the cache clear command are not reported and the inventory levels do not get updated. In this kind of fraudulent attack the cashier gets away with the money and any additional players they had working with them get away with the products that were sold before the clear command.
So, just make sure when asking for a offline POS that you thoroughly understand how secure such a system would be.
This is generally good advice. There are kiosk-mode browsers available that can provide a bit more security, certainly anything that gives access to developer tools should be considered insecure.