Expensify is $5/user/mo (Collect). Steward is a self-hosted alternative at $0.99/mo. Here's when each makes sense.
| Steward | Expensify | |
|---|---|---|
| Hosting | Self-hosted, your infra | Managed SaaS (cloud only) |
| Data location | Your server, your disk | Expensify's cloud |
| Free tier | 50 expenses/mo | Paid only |
| Pro pricing | $0.99/mo | $5/user/mo (Collect) |
| Dependencies | None (single binary + SQLite) | N/A (managed) |
| Setup time | ~30 seconds | Account signup |
| Dashboard | Built-in at /ui | Cloud dashboard |
| License | BSL 1.1 | Proprietary SaaS |
Steward is a single Go binary with embedded SQLite. Install it with one command, and you are running in under a minute. Your data stays on your server.
curl -fsSL https://stockyard.dev/steward/install.sh | sh
The pricing math between Steward and Expensify changes depending on team size. Expensify at $5/user/mo (Collect) is reasonable for a solo user. At ten seats, the difference compounds. Steward is a flat $0.99/mo regardless of seats — the binary does not count how many people use it. For growing teams, this makes Steward progressively cheaper while Expensify gets progressively more expensive.
The operational difference is significant. Expensify requires you to trust their infrastructure, their security practices, and their business continuity. Steward requires you to run a process and keep the data directory backed up. If your server dies, restore the binary and the SQLite file to a new server. The entire recovery procedure fits in a single paragraph because there is nothing else involved.
Switching from Expensify to Steward is straightforward for most teams. Export your data from Expensify (most services offer CSV or JSON export), then POST each record to Steward's API. A migration script that reads the export and writes to /api/ endpoints typically takes less than 50 lines of code. The reverse migration is equally simple — Steward's SQLite database is a standard file you can query with any SQLite client.
Single binary. Free to start. $0.99/mo for Pro.