CashoraPetty-Cash Ledger
Self-hosted petty-cash ledger — every box, every cent, provable at month-end.
No sign-up, no password — the demo opens already signed in, on sample data.
- Full PHP source included
- Instant download + licence key
- It never phones home
The problem it solves
Petty cash is the last corner of most small businesses still run on paper: a locked drawer, a wad of receipts, and a spreadsheet nobody reconciles until month-end — when the count doesn't match and nobody can say why. Cashora's real competitor is that spreadsheet, so here is the honest comparison: a spreadsheet's =SUM() will happily record a cash box going negative — something a physical tin cannot do — and say nothing. Cashora refuses the impossible payout and tells you which replenishment went unrecorded. The float-vs-balance status is computed, not maintained by a formula someone eventually breaks; the custodian is a first-class field, not a column heading; and each box keeps its own currency, so the EUR tin never contaminates the USD ones. Full expense-management SaaS is a different tool for a different flow — it reimburses employees spending their own money; petty cash is the business's cash leaving a tin.
- Cash counts that don't match the receipts, discovered weeks late
- A spreadsheet that records impossible negative balances without complaint
- No live view of which box is over or under its float
- A monthly SaaS fee for what a simple, exact ledger should do
What you get
A photo or PDF of the receipt attaches to the disbursement itself — decided by the file's bytes (PNG, JPEG, WebP, PDF), replaceable while the record is open, and served only to signed-in staff. The paper trail lives on the row it explains.
Each box or fund gets its own custodian, opening (imprest) float, and currency — front desk, workshop, events kitty, all in one place.
Every balance is computed in integer cents in PHP — no floating-point drift — with a live over / under / on-float status per box. A payout larger than the box balance is refused (a tin cannot go negative), and a box that somehow reads below zero gets its own Overdrawn status, never a routine label.
Record date, category, amount, payee, description, and a receipt reference for every cash-out, against expense categories you configure.
Log top-ups toward the float with notes, so the imprest cycle is visible instead of implied.
Per-box period report — opening balance, disbursements by category, replenishments, closing balance — exported as PDF and CSV.
Dependency-free PDF generation and CSV exports hardened against spreadsheet formula injection.
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.
Cashora 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)
- CSV import with a mandatory dry run
- One-click backups
- Dark mode
An agent can list boxes with live balances, open one entry by entry, pull the month-end report and record a payout or top-up over MCP — and the one rule does not relax: the never-below-zero guard refuses with the same sentence the screen uses, word for word. The month-end PDF pack is what you actually hand a bookkeeper.
- Roles with email invitations and a last-admin guard
- Append-only audit trail across browser, API and agent
- Your logo and colours throughout
- Scheduled backups with a guided dry-run restore
- Optional single sign-on (OIDC)
The 3.1 wave gave the catalogue a way to reach the other side of the transaction: counterparty email through your own SMTP server, calendar feeds your own calendar subscribes to, attachments filed where the paperwork belongs, and export presets other people's software imports. Every outbound path ships switched off, runs on your own credentials, and can never break the thing that triggered it. What this app gained is listed at the top of this section.
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
Which licence do I need?
It comes down to how many installations you need. Running your own business on one site is the Single licence. Building or running sites for other people — a second domain of your own, or an installation a client keeps — is the Extended licence.
Single licence
One (1) domain or subdomain
One business, running it on one site.
- Install it on one domain or subdomain you own or operate
- Change the source however you like for that installation
- Run your own business on it commercially, client work included
- Re-download the current build any time from your buyer portal
- A second site, or an installation you hand to a client as theirs, needs the Extended licence
- No reselling, redistributing or sublicensing the source
- Not for offering it to other people as a hosted service
Extended licence
Unlimited sites you own or operate
Agencies, and anyone running it on more than one site.
- Everything the Single licence grants
- Install it on as many domains as you own or operate — no cap on the number
- Build and hand over one installation per client project
- Still no reselling or redistributing the source itself
- Running it as a multi-tenant service others sign up for needs a SaaS agreement
Every download carries the full terms as LICENSE.txt, and the licence you bought is
named on your order and in your buyer portal. The complete wording lives on the
terms page, and the live demo is free for as long
as it takes to decide.
Honest limitations
What it does not do — written down before you buy, and kept true on purpose.
- Cashora records cash movements; it never processes, moves or holds money.
- One business per installation (many cash boxes inside it).
- Receipts are attached files and text references — there is no OCR reading them for you.
- Counts record what was found; Cashora never invents an entry to make a difference disappear.
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
The limitation-smash release: your tools now write to the people they serve — client emails through your own SMTP, calendar feeds, attachments, export presets — every one of them off until you switch it on.
Search for petty cash software and you find expense platforms, personal finance apps, and abandonware from 2015. Here is why the category is empty, and what a real petty-cash ledger needs that a spreadsheet cannot provide.
Every Ownware tool now ships a REST API with OpenAPI, signed webhooks, two-factor sign-in, BYO-SMTP notifications, CSV import with a dry run, one-click backups and dark mode. One release, the whole catalogue.
Questions about Cashora
Does Cashora move money?
No — it records cash movements only. No cards, no bank connections, no payment processing of any kind. It is a ledger, which is why it has zero payment/PCI surface.
How is the math kept exact?
All amounts are stored as integer cents and balances are summed in PHP, never in floating point — so the running balance and the month-end report always reconcile to the cent.
Can I run more than one cash box?
Yes — that's the core design. Each box has its own custodian, float, and currency, with its own running balance and month-end report.
MySQL or SQLite?
Either — SQLite for a zero-config trial, MySQL/MariaDB for production on ordinary shared hosting.
What if the developer disappears?
You get the full PHP source and your ledger lives in one database you own — nothing phones home, nothing expires.
Can I attach the actual receipt?
Yes — photograph or scan it and attach it to the disbursement (PNG, JPEG, WebP or PDF, checked by content). A wrong file can be replaced or removed while the record is open; what was found at a count stays what was found.