Skip to content

Plan your month. Pay your bills. Own your data.

A private, self-hosted bill planner for recurring bills, monthly cash flow, debt payoff, and bank sync — running on your own hardware, in your own SQLite file, with no telemetry.

v0.37.0 Self-hosted SQLite No telemetry 2FA & WebAuthn
14 Feature areas
SQLite file
0 Cloud calls by default
2FA WebAuthn & TOTP

What can I do here?

Pick the task that matches what you're trying to get done. Most users start with Install, then jump straight to the Tracker or Bills page.

  •   Install Bill Tracker


    Get the app running on a Linux host with Docker, a persistent /data mount, and a seeded admin account.

    Install with Docker

  •   Finish first-run setup


    Change the seeded admin password, create your first regular user, and decide which optional integrations you want enabled.

    First-run checklist

  •   Tour the interface


    See what every screen looks like in the current release, with live screenshots from the deployed v0.37.0 instance.

    Tour the interface

  •   Add and manage bills


    Add a recurring bill, set its cycle and autopay, configure debt fields, and link it to a bank-sourced service.

    Add and manage bills

  •   Record a payment


    Mark a bill paid, record a manual payment, set up autopay, and handle bank-payment overrides and late attribution.

    Record payments

  •   Connect your bank


    Set up SimpleFIN, sync balances and transactions, run auto-match, and review or undo match decisions.

    Connect your bank

What's inside the app?

A one-line description of every screen. Each card links to the matching guide page with screenshots and step-by-step detail.

See it in action

Live captures from the deployed v0.37.0 guest instance. All renders are dark-first to match the default app theme; this docs site mirrors that choice.

Bill Tracker Tracker screen
Tracker — the monthly planning surface.
Bill Tracker Bills screen
Bills — recurring obligations, autopay, and merchant match keys.
  • Calendar screenshot
  • Analytics screenshot
  • Subscriptions screenshot
  • Snowball screenshot

See the visual tour for the full annotated walkthrough.

What's new in this release?

A handful of the v0.37.0 highlights. See the release notes for the full changelog.

  •   Autopay trust indicator


    The tracker row's AP badge now shows a 12-month confidence score with a "Mark verified" action inside BillModal.

    What does autopay trust mean?

  •   Trend sparkline


    Each tracker row renders the last 6 months of paid amounts as an inline SVG polyline, with a "Changed" badge when amounts drift.

    What is the sparkline on a tracker row?

  •   Sortable Tracker


    URL-backed sorting by name, due date, amount, status, and more — with a lifecycle-aware status order, not plain alphabetical.

    How do I sort the tracker table?

  •   Private calendar feed


    Token-protected feed.ics endpoint that exports due dates to Apple Calendar, Google Calendar, Outlook, and any ICS client.

    How do I subscribe to the calendar feed?

  •   Undo auto-matches


    A review panel in Data → Bank Sync surfaces every merchant-rule auto-match in the last 7 days with an Undo button.

    How do I undo an auto-match?

  •   Animated transitions


    Smoother page, dialog, and Tracker reorder transitions without blocking interaction.

    Why does the tracker animate now?

  •   Profile display name


    Profile name updates now persist to users.display_name and show in the sidebar after reloads.

    How do I change my display name?

  •   Cancellation reasons


    Deactivating a bill asks why: moved, switched, paid off, cancelled, or other.

    How do I deactivate a bill and keep the reason?

  •   Service Catalog page


    A dedicated matching workspace at /subscriptions/catalog for bank-descriptor scoring, custom payee strings, and re-linking catalog entries to existing bills.

    Browse the Service Catalog

  •   Bank-payment override


    Manual payments count immediately. When a bank-backed payment clears for the same bill cycle, it becomes the source of truth and the manual payment is preserved as history.

    What happens when a manual and a bank payment overlap?

  •   TOTP and WebAuthn 2FA


    Authenticator app and FIDO2 hardware security key support behind the existing second-step login flow. RP ID and origin are configurable per environment.

    Profile and Login Privacy

  •   Session token hashing


    sessions.id now stores SHA-256(token) instead of the raw UUID. Existing sessions are invalidated on first upgrade — every user logs in once.

    Why did everyone have to log in once after v0.37?

  •   Geolocation opt-in


    The ip-api.com lookup is off by default. Each user chooses in Profile → Privacy whether future login-history entries can include city, region, country, and ISP.

    What can I control from Profile?

  •   Remembered search panels


    Tracker, Bills, and Subscriptions search/filter panels remember their collapsed state across pages and sessions via a per-user setting.

    How do I collapse the search and filter panel?

Private by design

BillTracker has no hosted cloud service, advertising, or telemetry. Optional integrations such as SimpleFIN, OIDC, SMTP, and update checks contact only the services that your administrator configures — and any of them can be left disabled.

The default deployment listens on 127.0.0.1, uses CSRF-protected cookie sessions, rate-limits authentication, and supports WebAuthn and TOTP for second-factor login. See the security model for the full threat model and the operations runbook for production deployment patterns.

Ready to try it?

Run BillTracker on any host with Docker, or read the security model first if you're evaluating it for a household or team.