Expensa
Staff photograph receipts, a model on your own AI key reads them, and you approve the report.
For teams and bookkeepers who turn receipts into reports. Often replaces Rydoo, Fyle, Expensify or Zoho Expense.
Single license $89 · Extended license $199 · paid once, yours for good
What it does
Give staff the claimant role. They photograph receipts, add mileage and per diem, and see only their own reports. Approving stays with you.
Your own OpenAI, Anthropic or Ollama key reads each receipt. It takes vendor, date, amount, currency, tax and payment method. With Ollama, receipts never leave your server.
Upload up to 50 receipts at once, or photograph them one after another on your phone.
Set a limit per category, per line or per day. Lines over it are flagged with the reason. Lines within it approve in one click.
Add a journey as distance times your rate, or a trip as days times your day rate. Each line waits for approval.
Once every line is approved, record the date and reference of the payment. The claimant can be told by email from your own server.
Off until you switch it on. Someone with no account sends receipts through a private link. Each claim waits for your review.
Amounts in different currencies are never summed together. Each currency keeps its own subtotal and total.
Import expense lines from the app you use now as a CSV. A dry run shows what will be imported, and why anything will not, first.
A clean CSV and a PDF summary with per-category and per-currency totals, or QuickBooks and Xero bank-CSV files.
When a report is reviewed, the claimant can get one email. It says plainly that reviewed is not paid. Off by default, through your own SMTP.
Connect your own agent (MCP + API) to the same reports, under the same roles as people.
Also: duplicates flagged across reports, a PDF report, a receipts ZIP, editable categories, home-screen install, 2FA and backups.
What Expensa deliberately doesn’t do.
- No API connection to accounting software — named CSV presets (QuickBooks, Xero) you upload yourself.
- Not accounting software: it turns receipts into a reviewed, exportable expense report — no ledger, no filing.
- No OCR of our own: bring your own vision model; every figure is human-approved before it counts.
- Single-tenant: one business per installation, with teammates as viewer, claimant, member or admin — run one per client if you are a bookkeeper.
- Email (yours and the claimant's) goes through your own SMTP; claimant email ships off until you enable it.
What renting costs instead
2 months of Rydoo costs what Expensa costs once.
Read Sep 3, 2026 · source2 months of Fyle costs what Expensa costs once.
Read Sep 3, 2026 · source18 months of Expensify costs what Expensa costs once.
Read Sep 3, 2026 · sourceThe full comparison: every rival, what each does better, and who should stay with them →
Replacing one of these? Rydoo alternative · Fyle alternative · Expensify alternative · Zoho Expense alternative
Release history
For Expensa, 4.1 makes two changes that every app gets. What’s new in 4.1 →
For Expensa, 4.0 means updates from inside the app: the Updates page checks for a new release with your license key, verifies Ownware's signature, takes a backup and… What’s new in 4.0 →
3.3 reaches the people and the records outside Expensa. What’s new in 3.3 →
3.2 opens Expensa to the people who spend.
The 3.1 wave gave the catalog a way to reach the other side of the transaction: counterparty email through your own SMTP server, calendar feeds your own calendar…
The report export now renders a real PDF — per-currency totals, spend by category, every receipt line — instead of leaving the browser to save a web page.
The owner layer every Ownware app carries.
What’s in the zip
The tree as the zip ships it — the working leftovers the packager deletes are not listed
- .htaccess
- API.md
- Dockerfile
- LICENSE.txt
- QUICKSTART.txt
- README.md
- assets/
- bin/
- config.sample.php
- controllers/
- deploy/
- index.php
- install/
- manifest.json
- offline.html
- router.php
- src/
- sw.js
- tests/
- views/
src/Extraction.php: a real module, the first 24 of 431 lines
Chosen as the largest module in src/ that is not one of the shared cores — this product's own logic, not a file every product carries.
<?php
/**
* Extraction.php — the deterministic core Expensa stands behind (fully covered by
* tests/run.php, offline).
*
* A vision LLM returns messy, human-formatted receipt data: "$1,234.56", "1.234,56 €",
* "04/03/2026", a free-text category ("Restaurant"), a payment method ("VISA ****4242").
* This class turns each raw record into a CLEAN, canonical, exportable receipt with
* integer-cent money, an ISO date, a currency code, and a category snapped to the
* business's configured list — deterministically, with no network call — so the report
* totals you export are trustworthy regardless of which model produced them.
*
* The money and date parsing is shared, proven engine code; the
* receipt shaping, category normalization, and per-currency / per-category aggregation are
* new to Expensa. Nothing here touches the database or the network; Llm.php does the API
* call, this normalizes whatever comes back. That separation is what makes every number
* testable in isolation.
*/
declare(strict_types=1);
final class Extraction
{
/** Canonical field set for one receipt (money in integer cents; date ISO Y-m-d or null). */
public const FIELDS = ['vendor', 'txn_date', 'currency', 'amount_cents', 'tax_cents',Runs on: Two-minute web installer, PHP 8.1+ (tested on 8.3) with MySQL or SQLite, standard shared-hosting compatible. Or run it in Docker: the Dockerfile is in the zip.
Technical owners can install it with one line and their license key: curl -fsSL https://ownware.io/install.sh | sh -s -- expensa <your license key>
Nothing is obfuscated or encoded; what you read is what runs. Manual · API · the test run
Which license do I need?
It comes down to how many installations you need. Running your own business on one site is the Single license. A second domain of your own, or sites you build or run for other people, is the Extended license.
- 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 license
- No reselling, redistributing or sublicensing the source
- Not for offering it to other people as a hosted service
- Everything the Single license grants
- Install it on as many domains as you own or operate — no cap on the number
- Up to ten client installations, one per client project, handed over or hosted for each client; for more, buy another Extended license
- White-label: remove or replace the product name and logo in the screens of client installations
- 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. The complete wording is on the terms page.
After you buy
The app’s Updates page installs a new release with your license key, with the release’s signature checked and a backup taken first. Your download link always serves the current build. Download again any time from your order page or the buyer portal; there is no renewal fee.
Email support for installation and for defects in the code as delivered: a person reads and answers every message. It does not cover custom development or server administration. What support covers
Refunds are handled by Lemon Squeezy as merchant of record, case by case. EU consumers keep the statutory 14-day right until delivery starts. Refund terms
It keeps running: your server, the full PHP source, no license check that can fail. If no stable release is published for 365 days, the domain limit lifts; after three such years your copy becomes MIT-licensed. The terms have the exact wording: continuity.
Questions
Is my API key safe?
Will this run on shared hosting?
What does it cost to run?
Can it handle receipts in different currencies?
What if OpenAI changes its pricing or API?
Can it export straight into my accounting software?
Is Expensa a subscription?
How is this different from an expense app with a monthly seat price?
What exactly do I get for the money?
Can I get the reports and receipts out?
Covered in these guides
- What's new in Own It 3.3
- Expense report software without a subscription
- There is no freelancer suite here, and this is what one person actually needs
- The AI Document Suite: your own key, five document jobs
- What's new in Own It 3.1
- What Currency Are You Actually Billed In — And Why the Same Price Is Three Different Prices
Also covered in: Every "Self-Hosted Expense" List Recommends a Personal Budgeting App. Here Is Why That Is Wrong. · The 2026 SaaS Rent Index — What a Small Business Actually Pays to Rent Its Software · Expense-report software you buy once.
More about Expensa
For teams and bookkeepers: batch-upload receipts, let your own AI key extract and categorize them, and hand the accountant a reviewed report.
The problem it solves
At the end of every trip or month, someone ends up with a shoebox: a folder of receipt photos, a stack of PDFs in an inbox, a pocketful of crumpled paper. Turning that into an expense report means typing each vendor, date, and amount into a spreadsheet by hand, then sorting into categories and adding the totals. It's slow, error-prone, and the same every time. Black-box SaaS expense tools automate the typing, but they own your receipts, charge a per-user subscription forever, and expect you to trust a third party with your financial documents.
- Manual data entry for every single receipt
- A recurring per-user subscription just to digitize paper
- Your financial documents held on someone else's servers
Every feature
- QuickBooks & Xero export presets. The bank-CSV shapes their importers expect — spend correctly negative, Xero dates dd/mm/yyyy, an amountless receipt exports empty rather than 0.00. Unknown preset falls back to the original layout, so every existing bookmark still works.
- Tell the person who submitted the report. When a report is reviewed, the claimant can get one email saying so — and saying plainly that reviewed is not paid. Off by default, through your own SMTP, recorded in a send log, and a mail failure never breaks the review.
- Batch AI receipt extraction. Upload up to 50 receipt photos or PDFs at once, or photograph them one after another on your phone, and a vision-capable model reads vendor, date, amount, currency, tax and payment method for each.
- Editable auto-categorization. Every receipt is sorted into a category list you control in Settings — Meals, Travel, Lodging, Office Supplies, Fuel, Software, and more.
- Strict multi-currency safety. Amounts in different currencies are never summed together; each currency keeps its own subtotal and grand total.
- Accountant-ready exports. Export a clean RFC-4180 CSV and a print-friendly PDF summary with per-category and per-currency totals.
- Choice of LLM provider (BYO key). Switch between OpenAI, Anthropic, or a local Ollama model any time in Settings. Your key is sent only to the provider you pick; with Ollama, receipts never leave your server.
- 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 not stored offline on the device; what you see is read live.
- Staff claim, you approve. Give staff the claimant role: they photograph receipts on their phone, add mileage and per diem, and see only their own reports. Approving stays with you.
- Mileage and per diem at your rates. Add a journey as distance × your rate per mile or kilometer, or a trip as days × your day rate. The rates are the ones you set; each line waits for approval like a receipt.
- Mark it paid. Once every line is approved, record the date and reference the money went out. The report moves to Paid, its lines close, and the claimant can be told by email from your own mail server.
- Your spending limits. Set your own limit per category, per line or per day. Lines over it are flagged with the reason; lines within it can be approved in one click.
- Bring your expenses over. Export your expense lines from the app you use now as a CSV and import them: columns are matched by their header, dates written with a time are read as the date, and the dry run shows exactly what will be imported and what will not, and why, before anything is written.
- Claims from people without a login. Switch on a private claim link and someone with no account sends their receipts with their name. Each claim arrives as a report in their name, its receipts waiting for your review. Off until you switch it on, and you can replace the link at any time.
- Updates from inside the app. The Updates page installs a new release with your license key: Ownware's signature is checked, a backup is taken first, and the app puts the previous version back by itself if the update is interrupted or the database step or start-up check of the new version fails. It never checks by itself.
- Backups by themselves. Automatic backups, an optional copy to S3-compatible storage you own, and a weekly check that the latest backup reads back. The Health page names anything that needs attention.
- Own It 4.0.1 — fixes and an up-to-date manual. For Expensa, 4.0.1 fixes an installer that had lost its styling, a rollback that a page opened during an update could stop and a command-line update that ended in an error after putting the previous version back. Its manual, FAQ and QUICKSTART now cover everything 4.0 added, including two Nginx rules that keep the data folder private. Your license covers it: press Check for updates on the Updates page, or download it from your order page.
- Own It 4.0.2 — the installer opens on every host. For Expensa, 4.0.2 fixes a fresh install on an Apache host: the one-page setup at /install/ looped back to itself and never opened, and now it opens. Your license covers it: press Check for updates on the Updates page, or download it from your order page.
Release notes in full
- Own It 4.1: client installations and your other tools. For Expensa, 4.1 makes two changes that every app gets. An Extended license bought from October 4, 2026 covers up to ten client installations, one per client project: hand each one over to the client or host it for them, with the client's logo and colors from the app's branding settings. The API reference now shows how to connect Expensa to Zapier, Make or n8n, using its own webhooks and API key. Your license covers the update: press Check for updates on the Updates page, or download it from your order page.
- Own It 4.0: it updates and backs itself up. For Expensa, 4.0 means updates from inside the app: the Updates page checks for a new release with your license key, verifies Ownware's signature, takes a backup and puts the previous version back by itself if the update is interrupted or the database step or start-up check of the new version fails. A new install can start with a sample business and remove it in one click; backups run by themselves, with an optional offsite copy and a weekly check that the latest one reads back; and the Health page says whether the install is looking after itself.
- Own It 3.3: nobody left out, nothing retyped. 3.3 reaches the people and the records outside Expensa. Someone with no account can send receipts through a private claim link, off until you switch it on, and each claim waits for your review as a report in their name. The expense lines from the app you use now come over as a CSV, after a dry run that shows what will be imported, and why anything will not, before a line is written.
- Own It 3.2: the whole team claims, on your rules. 3.2 opens Expensa to the people who spend. Staff claim on their phones and see only their own reports, mileage and per diem go in at your rates, and lines over your spending limits are flagged with the reason. Approving stays with you, and once every line is approved you mark the report paid.
- Own It 3.1: it writes to the people you serve. The 3.1 wave gave the catalog 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. Each outbound feature ships switched off and runs on your own credentials; a failed send is recorded, and the action that triggered it stands. What this app gained is listed at the top of this section.
- Own It 3.0: works for your AI, not just for you. The report export now renders a real PDF — per-currency totals, spend by category, every receipt line — instead of leaving the browser to save a web page. Duplicate receipts are flagged across all your reports on the same vendor, date and amount, which is where the real mistake hides. An MCP endpoint puts the same reports in reach of your AI under the same roles.
- Own It 2.0: API, 2FA, backups, dark mode. The owner layer every Ownware app carries. Upgrade by replacing the files — the database migrates itself, and it is still the same one-time purchase.
Browse self-hosted: AI document tools · Office & finance software · Accountancy & bookkeeping software