Vendra — POS & Inventory System (PHP + MySQL, Self-Hosted)
Self-hosted POS & inventory engineered so overselling is impossible.
The problem it solves
Retail shops, cafés, and market stalls need stock counts they can trust and profit numbers that are real — but cheap POS scripts fall apart on exactly that: counts drift, overselling happens, and margin reports become fiction because cost isn't tracked properly.
- Stock counts that drift from what's actually on the shelf
- Overselling the last unit when two cashiers ring up at once
- Profit reports that don't reflect true cost of goods
What you get
Oversell-proof checkout
Overselling is enforced at the database level, even when two cashiers sell the last unit at the same instant.
Immutable stock ledger
Every stock change — sales, purchases, returns, adjustments — posts to an auditable movement ledger with cost, reference, and who did it.
One-click ledger verification
Re-derive every stock count from the ledger and prove the numbers match.
Weighted-average costing
Drift-free integer-math costing updates on every purchase, so profit reports reflect true margins.
Barcode-ready POS screen
Fast product grid with category tabs, keyboard-wedge barcode scanning, split payments, and hold & resume sales.
Full store operations
Purchases and receiving, returns, register sessions with Z-report, and reports by product and cashier.
Installable mobile app (PWA)
Add it to a phone or tablet home screen straight from the browser — a full-screen app served from your own server, with no app store involved. Business data is never cached offline, so what you see is always live.
Own It 2.0 — API, 2FA, backups, dark mode
Vendra 2.0 adds the 2.0 owner layer. Upgrade by replacing the files — the database migrates itself, and it is still the same one-time purchase.
- REST API with an OpenAPI spec and signed webhooks
- Two-factor sign-in (TOTP)
- Email notifications through your own SMTP
- CSV import with a mandatory dry run
- One-click backups
- Dark mode
Own It 3.0 — works for your AI, not just for you
An MCP endpoint lets an agent list products, check stock, pull a sales report and record a sale — through the same checkout the till runs, so stock still cannot oversell and a sale still needs an open register. The POS gains camera barcode scanning straight from the browser.
- Roles with email invitations and a last-admin guard
- Append-only audit trail across browser, API and agent
- Printable PDFs
- Your logo and colours throughout
- Scheduled backups with a guided dry-run restore
- Optional single sign-on (OIDC)
Pricing — one-time, yours forever
- ✔ Full source included — PHP you can read and change
- ✔ No subscription. One payment, yours forever
- ✔ It never phones home
- ✔ Your data stays on your server
No reviews yet — so here is what we offer instead. Every competitor price on our comparison pages is source-linked and dated, and when a vendor’s price won’t load we say so rather than guess. See the sources for yourself →
Screenshots
Honest limitations
- No online card processing — it records cash/card tender and change, it doesn't process cards online
- Single store in 1.0, no multi-store chain with central HQ
- No e-commerce or website sync
2-minute web installer, plain PHP 8 + MySQL (or SQLite for a trial), no Composer or build step — Docker image included.
Covered in these guides
Spreadsheets are genuinely fine — until specific failure modes appear. The honest thresholds for moving to a real tool, and which category to look at when you cross one.
Every Ownware tool now has an MCP endpoint an AI agent can use under the same guards a person faces, plus roles with email invitations, an append-only audit trail, printable PDFs, your branding, guided backups and restore, and optional single sign-on.
Retail POS bills a monthly subscription per location on top of a percentage of every sale. Here are both published subscription prices, why the free tiers matter more than the paid ones, and the narrow case for a self-hosted till.
Most self-hosted apps offer both, and most advice reflexively says "MySQL for production." SQLite's documentation gives a specific traffic figure — and for a small business app, it is not close. Here is the honest threshold.
Frequently asked questions
Does it process card payments online?
No — it records cash/card tender and change; it doesn't process cards online.
Can I run multiple stores?
Single store in 1.0.
Does barcode scanning need special drivers?
No — keyboard-wedge USB scanners just work.
MySQL or SQLite?
Either — MySQL for shared hosting, SQLite for a local trial.
What do I need to run it?
PHP 8.0+ with PDO and MySQL/MariaDB or SQLite, on an Apache/LiteSpeed shared host (mod_rewrite) or Nginx/VPS.



