---
title: "Deploy Paperless-ngx Receipts"
description: "Searchable OCR archive for receipts and invoices"
category: "Storage"
url: https://railway.com/deploy/paperless-ngx-receipts
---

# Deploy Paperless-ngx Receipts

Searchable OCR archive for receipts and invoices

**[Deploy Paperless-ngx Receipts on Railway](https://railway.com/template/paperless-ngx-receipts)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/paperless-ngx-receipts/manifest.json

- **Creator:** onepush
- **Category:** Storage

## Template content

### Redis https://cdn.sanity.io/images/sy1jschh/production/0ce0bfdcfbdbf69662b1116671f97c2dd788b655-157x157.svg

- **Image:** redis:8.2
- **Start command:** `/bin/sh -c "rm -rf $RAILWAY_VOLUME_MOUNT_PATH/lost+found/ && exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --save 60 1 --dir $RAILWAY_VOLUME_MOUNT_PATH"`

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

### paperless-ngx

- **Image:** ghcr.io/paperless-ngx/paperless-ngx:3.3.0
- **Public domain:** Yes

## Documentation

# 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.


## Similar templates

- [RustFS | (Just Updated) S3 Object Store, Public URL and Keys Set](https://railway.com/deploy/rustfs-or-just-updated-s3-object-store-p) — S3-compatible object store, keys and public URL preset, volume kept
- [TimescaleDB](https://railway.com/deploy/timescaledb-railway-template) — A PostgreSQL-based time-series database for analytics on Railway.
- [Garage S3 Storage](https://railway.com/deploy/garage-s3-storage) — Ultra-light S3 server: fast, open-source, plug-and-play.

Open this page in a browser: https://railway.com/deploy/paperless-ngx-receipts
