
Deploy Paperless-ngx Receipts
Searchable OCR archive for receipts and invoices
Redis
Just deployed
/data
Just deployed
/var/lib/postgresql/data
paperless-ngx
Just deployed
/usr/src/paperless/data
Deploy and Host self hosted Paperless-ngx Receipts (Open-Source Receipt and Invoice Archive) on Railway
Paperless-ngx Receipts is the Paperless-ngx 3.3.0 stack aimed at receipts, invoices and bills. Photograph paper receipts with your phone, pull e-mailed invoices in over IMAP, and Paperless OCRs everything into searchable PDFs. It's an archive, not an expense app: totals are fields you fill in.
About Hosting Paperless-ngx Receipts open-source software on Railway (self hosted Paperless-ngx receipt management template)
The template runs the official Paperless-ngx image with Postgres and Redis: web UI, Celery tasks, Tesseract OCR, mail fetching, workflows, custom fields, saved views and multi-user permissions. It skips Tika and Gotenberg, so Office files and whole .eml bodies aren't converted. For photographed receipts and PDF invoices, you won't miss them.
Be clear about one thing up front: Paperless doesn't extract totals or line items on its own. OCR makes every word searchable, but amounts live in custom fields you fill in, or that optional Paperless AI can suggest once you set PAPERLESS_AI_ENABLED and an LLM backend.
Why Deploy Paperless-ngx Receipts, the Expensify alternative on Railway (Railway Free Trial)
Expensify is closed SaaS built around scanning, approvals and reimbursement. If what you actually need is a tidy, searchable record of what you bought, Paperless gives you that without handing your purchase history to a vendor. You keep the PDFs, the metadata and the backups.
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying Paperless-ngx Receipts on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Railway vs Other Hosting Providers and VPS for Paperless-ngx Receipts self hosting
| Provider | Setup experience | Tradeoffs |
|---|---|---|
| DigitalOcean | Droplet, Docker Compose, TLS and backups by hand | More control, more upkeep for a personal archive |
| AWS | EC2, RDS, EBS and security groups | Flexible, but heavy for one small stack |
| Hetzner | Cheap VPS, then manual Docker and volumes | Very low price; uptime and backups are yours |
Common Use Cases for hosted Paperless-ngx Receipts
- Tax season: a saved view per tax year, bulk-downloaded as a zip for your accountant.
- Warranties: a Warranty Until date field plus a scheduled workflow that fires a webhook 30 days before expiry.
- Freelancer expenses: receipts tagged with Payment Method and Tax Category select fields.
- Household paperwork: appliance receipts and contractor invoices you can find by typing "water heater".
- E-mailed invoices: a mail rule that consumes PDF attachments from utilities and vendors.
Dependencies for Paperless-ngx Receipts Docker hosted on Railway
Three services: Paperless-ngx, Postgres for metadata, and Redis as the Celery broker that runs OCR and mail jobs. The image bundles Tesseract, OCRmyPDF and the web frontend, so nothing gets installed on your laptop. Phone uploads need only a browser or a community mobile app pointed at your Railway URL.
Deployment Dependencies for Managed Paperless-ngx Receipts Service (Receipt Management)
PAPERLESS_URL is your public HTTPS domain, which Paperless needs for CSRF. PAPERLESS_SECRET_KEY and the admin password are generated; read PAPERLESS_ADMIN_PASSWORD in Railway variables after the first deploy. The volume at /usr/src/paperless/data holds originals, archived PDFs, thumbnails, the search index and the consume folder.
Implementation Details for Paperless-ngx Receipts (Using Paperless-ngx official docker image)
ghcr.io/paperless-ngx/paperless-ngx:3.3.0 listens on port 8000 and reaches Postgres and Redis over Railway's private network, with PAPERLESS_DBENGINE=postgresql, PAPERLESS_OCR_LANGUAGE=eng and PAPERLESS_TIME_ZONE=UTC. The receipt gotcha: PAPERLESS_DATE_ORDER isn't set, so Paperless reads dates as DMY. US receipts printed MM/DD/YYYY need PAPERLESS_DATE_ORDER=MDY added as a variable, or March 4 gets filed as April 3.
How does Paperless-ngx Receipts compare against other receipt and document management tools
Paperless-ngx vs Expensify
- Ownership: Paperless keeps originals on your volume; Expensify keeps them in its SaaS.
- Extraction: Expensify reads amounts from scans. Paperless leaves totals to you or optional Paperless AI.
- Reimbursement: Expensify has approvals and payouts. Paperless doesn't; it's the record, not the workflow for paying people back.
Paperless-ngx vs Google Drive
- Search: Drive finds text in PDFs and images too, but has no correspondents, mail rules or receipt-shaped saved views.
- Metadata: Paperless stores Total, Invoice Number and Warranty Until as typed fields you can filter on.
- Automation: IMAP rules and workflows file documents for you; Drive needs manual uploads or glue.
Paperless-ngx vs Docspell
- Stack: Docspell is AGPL-3.0 Scala; Paperless is GPL-3.0 Python/Django.
- Community: Paperless-ngx has the larger community and more mobile apps. Docspell leans harder into automation.
Paperless-ngx vs Evernote
- Purpose: Evernote is a note app with OCR search, not a DMS with fields, mail rules and workflows.
- Price: Evernote Personal is about $14.99/mo. Paperless is free; you pay for hosting.
- Exit: Paperless keeps originals and PDF/A copies on a volume you can copy anywhere.
How to use Paperless-ngx Receipts (the OSS receipt and invoice archive)?
Create fields first, under Manage > Custom Fields: Total (Monetary, stored like USD12.30), Invoice Number (Text), Date Paid (Date), Payment Method and Tax Category (Select), Warranty Until (Date). Types can't change later, so don't make Total a plain Number.
Add correspondents for repeat vendors, then a mail account and rule under Settings > Mail. Point the rule at a dedicated folder, match *.pdf attachments, assign type Invoice and tag Receipts, and move processed mail elsewhere. Mail is checked every 10 minutes, rules run in order, and a last catch-all rule can tag leftovers "Unknown mail document". To re-run a message, delete it under Mail > Processed Mails.
Then a workflow: trigger Document Added with content matching "receipt" or "invoice", action Assignment adding the Receipts tag and an empty Total field. Workflow Email actions need SMTP, which this template doesn't configure and Railway blocks below Pro, so use webhooks.
Finally a saved view: tag Receipts, created date in the tax year, with Total and Payment Method columns. Plain search ignores custom fields, so use custom_fields.name:"Invoice Number" custom_fields.value:1312. Want files on the volume sorted the same way? A storage path like {{ created_year }}/{{ correspondent }}/{{ title }} files them by year and vendor. The habit that makes it work: photograph each receipt the day you get it, before thermal paper fades.
How to self host Paperless-ngx Receipts on other VPS Services (Paperless-ngx self hosting guide)
The official docs recommend Docker Compose.
Clone the Repository
Clone https://github.com/paperless-ngx/paperless-ngx or grab the Postgres compose file and docker-compose.env from docker/compose/.
Install Dependencies
Install Docker and the Compose plugin. The image bundles Tesseract and OCRmyPDF.
Configure Environment Variables
In docker-compose.env, set PAPERLESS_SECRET_KEY, PAPERLESS_URL, PAPERLESS_TIME_ZONE, PAPERLESS_OCR_LANGUAGE and, for US receipts, PAPERLESS_DATE_ORDER=MDY.
Start the Paperless-ngx Receipts Application
Run docker compose up -d, put HTTPS in front, upload a test receipt and check its OCR text and date.
Official Pricing of Paperless-ngx Receipts (Paperless-ngx pricing)
Paperless-ngx is GPL-3.0 and free, with no official paid cloud. You pay for infrastructure, plus your own LLM provider if you turn on Paperless AI.
Paperless-ngx Receipts cloud vs self hosted comparison (Pricing, features, costs, and more)
Expensify or Evernote give you capture and sync with no server to run. Self-hosted Paperless gives you ownership and no per-user fees, and you handle backups, updates and the occasional OCR backlog.
Monthly cost of self hosting Paperless-ngx Receipts on Railway
A personal receipt archive usually costs about $5-15/mo. The volume grows with every original, archived PDF and thumbnail. Railway's $5 trial is enough to test the stack.
System Requirements for Hosting Paperless-ngx Receipts on a VPS
It runs on a Raspberry Pi, but OCR is slow on weak CPUs. Plan on 2 GB RAM or more; importing a year of receipts at once will queue for a while.
Frequently Asked Questions (FAQs)
Does Paperless-ngx read receipt totals automatically?
No. OCR makes text searchable; Total is a custom field. Paperless AI can suggest values if you enable it with an LLM backend.
How do I handle faded thermal receipts?
Photograph them early, flat and in good light. For non-English receipts, set PAPERLESS_OCR_LANGUAGE (e.g. eng+deu) and PAPERLESS_OCR_LANGUAGES for languages the image doesn't bundle.
Why are my receipt dates in the wrong month?
PAPERLESS_DATE_ORDER defaults to DMY. Add PAPERLESS_DATE_ORDER=MDY for US formats.
How do I get e-mailed invoices in?
Mail rules under Settings > Mail filter by folder, sender, subject, body or attachment name and consume attachments. Whole .eml bodies need Tika and Gotenberg, not included here.
Can my accountant see my receipts?
Give them their own user plus a workflow that grants view permission on documents tagged Receipts, send share links (v3 adds bundles), or bulk-download a zip.
Template Content
Redis
redis:8.2paperless-ngx
ghcr.io/paperless-ngx/paperless-ngx:3.3.0