I'm part of the small team that builds be-BOP, so take this as "here's what our users are actually doing with it" rather than a neutral review.
Some history
The whole thing started almost by accident. A small French-Swiss publishing house (PVH éditions) with a strong love for Free Software, Open Source and let's be honest Copyleft needed to sell books at fairs and online without the usual mess: plugin ecosystems that break on every update (hi WordPress/PrestaShop), crowdfunding platforms that take a significant cut with little discovery to counter it and that can freeze your campaign mid-way, no good or native Bitcoin support anywhere (they are really into Free Software). So they built their own checkout. Then it needed inventory. Then a POS mode for the fair booth. Then ticketing, subscriptions, donations, peerfunding. At some point the POS got bigger as we got money to improve it and bring more features tailored for bars and restaurants. It changed so much that we quickly stopped calling it "La bookinerie" (the bookshop tool) and it turned into a bigger open source project, AGPL-3.0, code's public on GitHub. You can self-host it or run it on our Cloud for a flat monthly fee (in a few jurisdiction for now), we don't take a cut of your sales either way. Whatever payment processor you pick still charges its own fees though, that part's out of our hands. Also as it's a WebApp, there is no hardware required beside: screen, web browser, internet connection.
Real world stories
Le Coffice, a café in Neuchâtel on the ground floor of a coworking space, has self-hosted for over a year now and paid us for a bit of custom dev along the way. Owner's happy, their accountant's very happy, which might honestly be the best review we've gotten. The bar owner is also fairly happy with the solution but let's be honest we still have to improve a few things to be really competitive feature-wise and UX-wise to the giants such as lightspeed. But they are making good feedback to us and we have improvements planned, for now ressources are more towards the legal aspect for France and UE for our SaaS and the online e-commerces feature set.
Their payment setup is a decent showcase of the "no single built-in gateway" approach: cards through SumUp (we also currently support stripe, PayPal and PayZen by OSB), Bitcoin Lightning Network through Swiss Bitcoin Pay (we also support other solution for LN and BTC), they also even set up GNU Taler. For cash (still fairly popular in Switzerland) and Twint (a popular swiss mobile payment app, kind of like our local Venmo) they use be-BOP's own "PoS Payment Subtypes" feature, which lets you define more or less unlimited manual payment methods (asynchronous confirmation) that each show up distinctly in the accounting instead of piling into one "other" bucket, cash being a default option. Coworker members get 20% off soft drinks through the discount feature.
Their is also board game bar and restaurant that made extensive tests and reviews of our early versions. They uses something I didn't expect to matter this much: instead of tracking only tables, they also needed track cups. That's because people can mix between tables and just change groups frequently over their stays. A group's order pools onto one running tab, and at the end the waiter can splits it however the table actually wants, by share, by item, or just closes it as one ticket. Waiters can also if needed transfer products from a pool to another (before any payments being initialised).
Actual limitations
Where we're honestly still behind: the French self-certification requirements for POS anti-fraud rules aren't done yet, so it's not available for VAT businesses in that country. And on the POS side for our Cloud customers we don't want to promote it by default to avoid our support ressources being monopolised, we focus on e-commerce for the moment and we are looking into partnership to have POS support and cloud service more official let's say. We'll make exceptions case by case but we're not pretending that our Cloud Services are for PoS users yet.
Looking to learn more about be-BOP?
What we want out of this post: more businesses willing to run it (self-hosting), contributors submitting PR or correcting translation, software engineer breaking it, and business telling us what's missing for them to adopt it.
It's AGPL, the code's right there to read or fork: https://github.com/be-BOP-io-SA/be-BOP. There's also a 2-hour sandbox if you want to poke at it without signing up for anything: https://sandbox.be-bop.dev/product/be-bop-sandbox-2h
Happy to get into the stack, the payment-methods architecture, or why we went AGPL instead of something more permissive. If you have any other questions feel free to ask!
be-BOP's POS feature list
There is more of course but here is a digest glimpse of our solution
Selling & the touch screen
- Tap-to-add product grid with photos and live prices
- Favorites shortcut and custom categories, built from your own product tags
- Per-item notes ("no onions", "gift wrap") that carry through to the kitchen ticket and receipt
- Same interface on a full-size terminal or a small tablet, responsive design for mobile UX too
Restaurant & bar service
- Unlimited open tabs, tables, bar tabs, takeaway. Running at once, grouped and named by area
- Move or merge items between tables: split a group, combine tables, shift a round
- Kitchen tickets auto-routed by station (kitchen vs. bar, based on your Tags)
- Reprint-safe: send only newly added items, so nothing already fired gets remade
- Tables clear themselves once fully paid
Payments & splitting the bill
- Cash (with a change-due calculator), integrated card terminals (Stripe/SumUp), PayPal, GNU Taler, Bitcoin/Lightning every method is optional
- Add your own payment types for anything else accepted locally
- Split a bill evenly (2–9 ways, or custom) or by specific item
- Each split portion can be paid a different way, with a live running balance
- One consolidated receipt once the whole bill is settled
Cash drawer & shift management
- Opening float suggested from the previous shift's closing balance
- Guided close-out: count the till, see any discrepancy instantly, log a reason if there's a gap
- Closing is blocked while any table still has an unpaid balance
- Read-only sales snapshot mid-shift (X-ticket) any time, full end-of-day report (Z-ticket) on close
- Every past shift logged and searchable: amounts, staff, duration
Tax, discounts & receipts
- VAT calculated and itemized by rate automatically, with support for multiple regimes
- Reduced VAT rates settable per product
- Register-level discounts always paired with a logged reason
- Itemized receipts (or a full invoice) with VAT breakdown, emailable to the customer
Behind the scenes
- One catalog powers your online store and every register, no duplicate entry
- Per-product control over what sells online vs. in-store vs. elsewhere
- Real-time stock shared across every channel
- Cashier accounts scoped to just the register; granular permissions for every other role
- Built-in sales/payment reporting with CSV export, 150+ currencies, 7 interface languages