Technical documentation · Bouzon POS
If the internet drops at 10:30 on a Saturday night, the restaurant keeps taking payments
This is the complete, honest list of what Bouzon POS does and does not do without a connection. It is published because a cloud POS stakes its credibility right here, and because we would rather you checked it before signing up than discovered it with a full dining room.
One-line summary: you keep opening tables, sending orders to the kitchen, taking payments and closing the till. The only things that cannot exist without the network are the ones that need the server or a third party to be created: the fiscal receipt with its Verifactu QR, Stripe payments and aggregated reports.
How it works
- With a connection, nothing changes. The offline layer only takes over when the device loses the network; the rest of the time the server remains the single source of truth.
- Automatic detection. A ping to the API every 20 seconds; two consecutive failures and the POS switches to offline mode and says so on screen. Any server response switches it straight back.
- Append-only queue. Offline, every action writes to the device’s local database and queues a mutation. They replay in order on reconnect.
- Idempotent by design. Every action carries a unique device-generated id: replaying the queue twice duplicates neither a sale nor a payment.
- Deferred fiscal record. An offline close numbers and chains its Verifactu record on sync, in order and gap-free.
- Printing without a router. The kitchen order is built on the device itself and goes out over the local network or Bluetooth SPP — it depends on neither the venue WiFi nor the internet.
✅ Works offline
| Open a table and start an order | Exactly as with a connection. |
| Add, edit and void items | Quantity, price, notes, course and modifiers. |
| Move an order to another table | On reconnect the server revalidates "one order per table"; if it clashes, it is resolved manually. |
| Apply and remove discounts | Exactly as with a connection. |
| Send the order to the kitchen | The browser builds the ESC/POS bytes and prints straight to the local agent. It never goes through the internet. |
| Take payment | Cash, card on an external terminal, Bizum, bank transfer and vouchers. |
| Partial payment | By amount and by item. |
| Close the order | The fiscal record is issued on reconnect, numbered and chained in order. |
| Void the order | The dialog warns before and confirms after: "voided here, pending sync". |
| Refund a closed sale | Full or partial. It writes the negative ticket with its negative payment and lowers the expected cash. Exception: a ticket with a discount needs the network. |
| Open the till and record movements | Cash in and out with their real method; only cash moves the expected drawer total. |
| Correct the payment method of a charge | Offline only manual methods are offered. |
| Close the till and do a partial count | Cash, card terminal and notes. Figures are labelled as an estimate: the definitive expected total, variance and card tips are recalculated by the server on sync, with the same formula as an online close. |
| Print the bill and the till close | A PROVISIONAL document comes out, marked "no fiscal validity". The fiscal copy with its QR is reprinted on reconnect. |
| See this device’s tickets | The ones this POS opened, charged or voided since the last sync — not the venue’s full history, and the screen says so. |
❌ Does not work offline — and why
None of these is a pending feature: they are things that need the server or a third party in order to exist. Any cloud POS claiming otherwise is worth a second look.
| Fiscal receipt with the Verifactu QR | The QR and the CSV are born when the ticket syncs: issuance is deferred by design. Offline you get the provisional receipt; the fiscal copy when the network returns. This is a real limit, not a missing feature. |
| Stripe payments (Stripe terminal or guest QR Pay) | Authorising a Stripe payment needs the network. Impossible offline, in any system. |
| Z report and historical till closes | They are aggregates of the whole session that only the server holds. Offline you get the provisional till close; the Z report prints from Reports on reconnect. |
| Refunding a ticket that carries a discount | Splitting the discount across the returned units is computed by the server. Without it, the money leaving the drawer would not match the money on record — and that is worse than waiting. |
| Full invoice, gift receipt and deleting a ticket | They write on the server (fiscal numbering, audited deletion). The panel disables them with a notice instead of failing when tapped. |
| Guest QR self-ordering | It arrives from outside the local network: with no server there is nobody to serve it. |
| Chatbot, analytics, customer search and reviews | Online reads and services. |
Frequently asked questions
What exactly happens if the internet drops mid-service?
Nothing the guest can see. The POS detects the drop (a ping to the API every 20 seconds; two consecutive failures and it switches to offline mode), shows a banner and keeps running against a local database on the device itself. Waiters carry on opening tables, sending orders to the kitchen over Bluetooth or the local network, taking cash or external-terminal card payments and closing the till. Every action is queued. When the connection returns, the queue is replayed against the server in order.
Can a sale be duplicated on sync?
No. Every action travels with a unique identifier generated on the device, and the server recognises the ones it has already processed. Replaying the same queue twice does not create two tickets or charge twice: the second pass is marked as a duplicate and discarded. Automated tests replay the queue twice on purpose to keep it that way.
What about the cash-up? Does it go out of balance if I charge offline?
An offline close is computed as "the last server snapshot plus whatever this device has taken since". The screen labels it as an estimate, because the accounting figure — expected total, variance and card tips — is recalculated by the server when the queue syncs, using the literal online-close formula. In other words: you can close and count without internet, and the number that ends up in the books is the server’s.
And Verifactu? If I close a ticket offline, is the record lost?
No. The ticket closes with a "deferred fiscal" status. On reconnect the server numbers and chains its AEAT record in order and gap-free, inside a per-restaurant lock so the chain holds even when several devices sync at once. What cannot be produced without a connection is the fiscal paper with its QR, because the QR and the CSV are created at that moment: offline the provisional receipt prints and the fiscal copy is reprinted when the connection is back.
Can I run the POS in airplane mode forever and stop paying?
No. The device holds a licence with a 72-hour grace window that renews whenever there is a connection. If the account is deactivated, the token stops renewing and the POS locks itself after those 72 hours. It is a lock designed for neglect, not for an attacker, and it never affects a paying client: the device only needs to come online from time to time.
Do I need a 4G router or special hardware?
No. All of this runs on the device you already own — the laptop behind the bar, a tablet, an Android phone — and kitchen printing goes over the local network or Bluetooth SPP straight from the waiter’s device, bypassing the router. We do not sell connectivity or proprietary terminals, and there is no per-terminal licence and no lock-in.
Is this tested, or a promise?
It has been in production since June 2026 and tested on real hardware. The sync engine has automated tests covering idempotent double replay and monotonic fiscal numbering; the offline cash-up has parity tests against the online close formula. This page is maintained alongside the internal document that defines the behaviour, so what you read here is what the system does rather than what we wish it did.
Bouzon POS — €29.99/month
Verifactu-certified, no proprietary hardware, no per-terminal licence and no lock-in. Setup and training included — by video call anywhere in Spain, in person in Benalmádena and the nearby Costa del Sol — and support 24/7, every day of the year.
See the POS