xpenser

Tap a star to rate

Open-source finance tracking you can inspect and control

xpenser is a self-hosted personal finance tracking application that lets you own your transaction data completely. The app is MIT licensed open-source software, so you can inspect the source code, self-host it using Docker Compose, or create a hosted account at the same domain. You control where your data lives and how it is processed. This is not a freemium app with monetization baked in; it is a tool that exists to help you track and analyze income and expenses without handing over a financial record to a corporate server.

Unlike most budgeting apps, xpenser was built from the ground up with open-source transparency and API access as core features, not afterthoughts. The codebase itself demonstrates schema-first design, where the same contracts power the server handlers, generated client calls, and typed interfaces across the full stack. If you care about how your finances are processed and want to build workflows around your expense data, or if you simply do not trust proprietary finance software, this level of transparency is rare.

Money coming in and how it is tracked

xpenser handles money entry through manual input and programmatic access. You enter income, expenses, refunds, and returns with category, note, date, and currency context. There is no bank syncing through Plaid or any other automatic feed. Instead, the app emphasizes what you do input: structured records that stay inspectable and queryable.

The app supports multiple transaction currencies with automatic conversion to your budget default currency through Frankfurter rates. This multi-currency handling makes xpenser particularly useful if you work across borders, travel regularly, or manage money in more than one country. Every transaction carries its original currency and amount, but dashboard summaries and reports normalize everything to your chosen base currency with live exchange rates.

For API access and integrations, xpenser exposes OpenAPI documentation directly from the same contracts used by the server. You can create API keys for typed client access and use xpenser data in external workflows. The app also provides MCP (Model Context Protocol) tools so that AI agents can read or manage vendors, categories, and transactions through tool calls. Telegram bot integration lets you log expenses through chat on the go, giving you a voice-driven or chat-based entry point alongside the web interface. Email summaries are configurable weekly and monthly, and the site mentions these summaries include OpenAI-generated spending and income insights.

How the budgeting and tracking workflow operates

xpenser structures transaction tracking around a clean expense model that covers income, expenses, refunds, and returns, each with vendor, category, and date information. The dashboard shows daily, weekly, monthly, quarterly, and yearly summaries, keeping income, expenses, net totals, and trends visible at multiple time scales. You can see patterns immediately without drilling into detailed reports.

Transaction history is searchable and displays every transaction with its category, vendor, effects, amount, and date in the same data model exposed by the API. This means your search interface and your programmatic access use the same underlying structure; the tool does not hide details from the API that the UI shows, or vice versa. This consistency matters if you plan to export data or build custom reports.

For reporting, xpenser compares periods on demand and supports configurable weekly and monthly email summaries. The interface is mobile-friendly, so dashboard, transaction, and setup workflows are usable on phones and desktops. Personal setup covers default and favorite transaction currencies, time zone configuration, API keys, and Telegram bot linking. Budget settings are minimal and straightforward, avoiding the complexity of envelope-based or zero-based budgeting if that is not what you want.

Pricing and what you actually get

The site does not publish a price for the hosted xpenser.cleverbrush.com account option. Self-hosted deployment using the MIT licensed source is free by definition; you run the Docker Compose stack yourself and pay only your own hosting costs. The hosted account option at xpenser.cleverbrush.com is not priced on the main pages of the capture, so you would need to create an account or contact support to learn what that costs.

What you definitely get is the full open-source codebase to inspect. You can review it on GitHub, run the same software locally, and understand exactly how your data is processed. The app includes schema-first contracts, typed full-stack flow from server handlers to generated clients, Google sign-in and API key authentication, and structured logging with OpenTelemetry and SigNoz for observability.

The unclear part is the hosted account tier pricing. The site explicitly states you can "Start hosted, then self-host when ready," suggesting a path from trying the hosted version to running your own deployment. For anyone serious about expense tracking, the self-hosted free option is available immediately. For anyone wanting to try the web interface without setting up Docker, you need to contact them for pricing details. This is itself useful information: if they do not publish the price, you know to ask before assuming it is cheap.

Who benefits and who this is not built for

xpenser suits expense tracking for people who want open-source software they can inspect, anyone willing to host their own deployment or manage their own servers, users who need API access for custom workflows or agent integration, and anyone tracking expenses across multiple currencies. If you already use Telegram for daily communication and want to log expenses there, the bot integration gives you a streamlined capture path. The MCP tools make this a natural fit for anyone building AI agents that need access to personal financial records.

xpenser is not for people who want fully automatic bank syncing and real-time transaction capture. If you need zero-based budgeting methodology with strict envelope enforcement, you may find the framework here simpler than you want. If you prefer a hosted app where someone else manages servers and backups, the self-hosted model requires technical comfort and ongoing maintenance. For anyone wanting a single vendor's support and a commercial SLA, self-hosting means you are the vendor.

The app emphasizes it is "not a static showcase" but a working product that grew from a personal Telegram bot and Google Sheets workflow into a full finance tracker while staying small enough to inspect or self-host. This means it is built for people who actually use it and think about how it works, not for people looking for a set-it-and-forget-it black box.

More in Spreadsheets and Offline Budgeting Tools

See all