Wallos
Open-source subscription tracker and budgeter
Wallos is a free, open-source subscription tracking application. It helps you monitor recurring expenses, get renewal reminders, and visualize spending across all your subscriptions.
Key features
- Tracks recurring subscriptions
- Renewal notifications
- Spending statistics and charts
- Multi-currency support
Pros & cons
Strengths
- Very lightweight
- Simple to deploy
Trade-offs
- Focused only on subscriptions
- Manual entry required
Wallos replaces
Last reviewed Aug 26, 2026 · 757 words
Wallos does one job: tell you what you are paying for every month before the next renewal lands, and it does that job on 128 MB of RAM from a single container you can have running in 5 minutes. It will not read your bank account, it will not categorise a card statement, and it will not replace a budget. Read those three limits as scope, not shortcomings. The reason 8,405 people starred a project that only started in 2023 is that the scope is exactly the size of the problem.
Five minutes to running
One image, one volume pair, one environment variable:
services:
wallos:
image: bellamy/wallos:latest
ports:
- "8282:80"
environment:
- TZ=Europe/London
volumes:
- ./db:/var/www/html/db
- ./logos:/var/www/html/images/uploads/logos
restart: unless-stopped
Open port 8282, create the first account, and you are entering subscriptions. Wallos is PHP on SQLite, so there is no database container, no migration step, and the whole state lives in the db folder. The TZ value matters more than it looks: renewal reminders are computed in that zone, and a wrong one shifts every notification by hours.
A ledger, not a bank feed
Every subscription is typed in by hand: name, cost, currency, billing cycle, next payment date, payment method, category. There is no bank connection and no import from statements, which is the "manual entry required" in the catalogue and the thing that makes people compare it unfavourably with Rocket Money. That comparison misses the point. Rocket Money reads your bank because it is selling you cancellation services; Wallos does not need your bank because you already know what you subscribe to, you just do not know the total.
The first session takes about 30 minutes for a typical household: 15 to 25 entries covering streaming, cloud storage, domains, VPS bills, insurance, the gym. After that, maintenance is a minute a month, usually when a price rises or a trial you forgot to cancel turns into a charge. If you want transactions and budgets, that is Firefly III or Actual Budget, and Wallos sits comfortably alongside either.
The dashboard is the payoff
Once entries exist, the home screen shows monthly and yearly totals, spend per category, per payment method and per member, plus a list ordered by next renewal. Seeing "£214 per month" on one screen, rather than scattered across three cards, is the moment most users find two services to cancel. Multi-currency handles the mix of USD SaaS and local bills: set a main currency, add the others, and optionally paste a Fixer API key (the free tier is enough) so conversions update daily instead of using the rates you typed.
Notifications are where it earns its keep
The reminder is the product. Wallos sends "renews in N days" messages by email (SMTP), Telegram, Discord, Pushover, Gotify, ntfy or a generic webhook, with a configurable lead time. My advice is 3 days for anything monthly and 14 days for annual renewals, because 14 days is enough to cancel a domain or a yearly plan without an argument with support. If you already run ntfy for the homelab, it is one topic and a URL.
Each subscription can be marked as auto-renewing or not, and the ones that are not become a to-do rather than a warning: a hosting bill you pay by invoice, an insurance policy that needs a decision.
Backup is one directory, and that is the whole ops story
Copy the db and logos folders and you have everything; SQLite is a single file and Wallos keeps no other state. Put them in your existing backup job and forget about it. Updates are docker compose pull && docker compose up -d; the app migrates its own schema on start. There is no multi-user permission model beyond a household list, which is why it is tagged single-user, but that also means there is nothing to administer.
What I'd do
Deploy it behind the reverse proxy, spend one evening entering every recurring charge from the last 12 months of statements, wire ntfy with 3-day and 14-day reminders, and add the db folder to the nightly backup. Then leave it alone. Check the finance category if you find yourself wanting budgets or transaction import; that is a different tool for a different problem. For the narrow job of never paying for a forgotten subscription again, Wallos is the lightest thing that actually works.
Similar budgeting & finance apps
Maybe
Budgeting & FinanceOpen-source personal finance and wealth app
Replaces Mint, Personal Capital
HyperSwitch
Budgeting & FinancePayment switch to make payments fast, reliable and affordable
Actual Budget
Budgeting & FinanceLocal-first envelope budgeting app
Replaces YNAB, Mint
Firefly III
Budgeting & FinanceSelf-hosted personal finance manager
Replaces Mint, YNAB
Lago
Budgeting & FinanceOpen-source billing and metering API
Replaces Stripe Billing, Chargebee
Akaunting
Budgeting & FinanceFree open-source accounting software online
Replaces QuickBooks, Xero