Wave is Free (ad-supported). Ledger is a self-hosted alternative at $2.99/mo. Here's when each makes sense.
| Ledger | Wave | |
|---|---|---|
| Hosting | Self-hosted, your infra | Managed SaaS (cloud only) |
| Data location | Your server, your disk | Wave's cloud |
| Free tier | 100 transactions/mo | Free |
| Pro pricing | $2.99/mo | Free (ad-supported) |
| 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 |
Ledger 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/ledger/install.sh | sh
From an operational standpoint, Ledger and Wave represent opposite ends of the self-hosted versus managed spectrum. Wave at Free (ad-supported) buys you managed hosting, automatic updates, and customer support. Ledger at $0.99/mo buys you data ownership, deployment flexibility, and independence from a vendor's business decisions. Neither is universally better — the right choice depends on whether your team values convenience or control.
The exit story matters more than most teams realize when choosing tools. Wave locks your data behind their API and export format. Ledger stores everything in a standard SQLite file you can query with any database tool. If you outgrow Ledger, your data migrates with a SQL query. If you outgrow Wave, your data migrates through whatever export process they provide — which may or may not preserve everything.
Single binary. Free to start. $2.99/mo for Pro.