Article

Why a point of sale must own its data

CERTICONS engineering · 2026-10-12

Most “offline modes” are a cache in front of a server. They work until the moment that matters: the line drops mid-ticket, the application is killed, the power goes. Then the cache and the server disagree, and someone spends the evening reconciling. A register that sells for a living cannot be a cache.

The rule

Every register write lands in the register’s own database first, then in a durable outbox. The register never needs the server to sell. The internet is only for sync. Nothing staged may be lost on a network drop, an app kill, a power loss or a reboot.

What it takes

  • An embedded database with transactions, so a ticket and its outbox row are written together or not at all.
  • Append-only events: a ticket is a list of things that happened, never a row that is updated. A void is an event too.
  • Client identity: every ticket and every event carries an identifier made on the register, so the server can accept each exactly once no matter how many times it is sent.
  • A sequence and a hash chain per register, so the order of tickets is provable and a gap is visible.
  • Everything needed to sell on the device: prices, taxes, promotions, rates, banknotes, layouts and the effective rights of every user.
  • Drills, not promises: every outbox-backed flow is tested with the line dropped, the app killed, the power lost and SAP down.

What it buys

A cashier who never waits. A shop that keeps selling through an outage. A ledger that is exact because the server posts what happened, in order, once. And an upgrade path that cannot lose a sale, because the register’s database is the record and the server is a copy of it.

Pull the cable during the demo.

Request a demoOffline and resilience