Hi all,
I built a small self-hosted companion app for Invoice Ninja v5 and released it under the MIT license:
What it does:
- Drag & drop receipts (PDF, JPG, PNG, HEIC) into a browser window
- Reads vendor, date, gross amount, VAT rate and invoice number locally (pdftotext / Tesseract) – nothing leaves your server
- You review the pre-filled fields (colour-coded by confidence) and click “create expense”
- Creates the expense via the official API, attaches the receipt as a document, and keeps the untouched original in a local archive with SHA-256
- Warns about duplicates (same file, same invoice number, or same amount on the same day) – checked against the archive and your Invoice Ninja expenses
- Matches vendors against your existing ones and suggests the category from that vendor’s last expense
Why not the built-in email import? It works well, but needs Mailgun/Brevo plus Mindee (cloud OCR), and creates expenses without a review step. I wanted everything local, with a check before anything is booked. It also works with the hosted version, since it only uses the API.
The parser is tuned for German receipts (19 %/7 %, § 19 UStG, reverse charge, till receipts), but PDFs with a text layer work in general.
Runs as a single hardened Docker container behind your reverse proxy. Feedback and issues are very welcome.
Disclosure: I’m the author. The software is free; I also offer paid setup for people who don’t want to do it themselves.