← All articles

Blog

How a Bali Cafe Chain Unified 6 Outlets with Odoo POS

A six-outlet Bali cafe chain unified its tills, stock, and reporting with Odoo POS — ending nightly spreadsheet reconciliation and giving the owner one live view. The story.

3 min read
  • narrative
  • odoo

A café chain in Bali — six outlets across Canggu, Seminyak, and Ubud, a mix of locals and tourists — had grown faster than its systems. Each outlet ran its own till app, kept its own stock notes, and sent the owner a daily summary by WhatsApp. Pulling the chain’s real numbers together meant one person spending the first part of every morning copying figures into a master spreadsheet. By the time the picture was clear, the day it described was already over.

The problem with six islands

Each outlet was an island. The tills did not talk to each other or to any central system. Stock was tracked per outlet in whatever way each manager preferred, which meant the owner could not see total stock or move it intelligently between branches. When the Seminyak outlet ran out of a popular bean while Ubud had a surplus, nobody knew until it was a problem.

Reporting was the daily pain. Six WhatsApp summaries, six formats, one weary person reconciling them into a spreadsheet that was always a day behind and occasionally wrong. The owner was making decisions about a six-outlet business on numbers that were stale and hand-assembled.

What changed

They rolled out Odoo POS across all six outlets, configured so each store sold from its own stock location but fed one central database.

One system, six tills. Each outlet kept its own register, sessions, and cash reconciliation, but all of it lived in one Odoo instance. Sales, stock, and cash from every branch were now the same data.

Real-time stock per outlet, visible centrally. A coffee sold in Canggu reduced Canggu’s stock immediately, and the owner could see stock across all six outlets at once. Moving surplus from one branch to another became a deliberate decision based on real numbers, not a surprise.

Consolidated reporting, live. The morning spreadsheet ritual disappeared. The owner opened one dashboard and saw total sales, per-outlet performance, best-sellers by location, and stock everywhere — current, not yesterday’s, and not hand-typed.

Offline resilience. Bali connectivity is uneven, so the offline-and-sync behaviour mattered. Registers kept selling through drops and synced when connection returned, configured and tested per outlet before go-live.

The result

The most immediate win was time: the daily reconciliation that had consumed someone’s morning simply ended. The numbers assembled themselves, accurately, in real time.

The more strategic win was visibility. The owner could finally compare outlets on equal terms, spot which location was over-ordering, see which menu items sold where, and shift stock between branches before a shortage became a lost sale. Decisions that used to wait for the morning spreadsheet were now made on live data.

Why it worked

The chain did not adopt Odoo POS because it was a better cash register — Moka or Pawoon would have rung up coffees just as well. They adopted it because they had six disconnected tills and needed one connected system. The integration was the whole point: real-time stock across outlets and consolidated reporting are exactly what a standalone per-outlet app cannot give you.

They also rolled out sensibly — one outlet first as a template, proven for a week, then replicated to the other five. That kept the rollout calm and the configuration consistent.

If you are running multiple outlets on disconnected tills and assembling the chain’s numbers by hand, that is precisely the problem unified POS solves. We are happy to look at your outlets and show you what a single connected system would change, in a free one-hour conversation.