Self-hosted Financial Planning & Budgeting
Piggy is a self-hosted personal finance application designed to provide clear insights into individual and shared finances. By aggregating banking data and providing structured visualization, Piggy helps to manage budgets, track spending habits and maintain a clear overview of financial health, all while keeping data private and under your control.
- Transaction Import Fetching transactions from the bank via FinTS (HBCI) (currently only DKB implemented).
- Financial Analytics Detailed visualization of cashflow, account balances, and spending patterns using interactive charts.
- Budget Management Define and monitor category-based budgets with real-time progress tracking.
- Recurring Payments Automated detection and forecasting of subscriptions and regular expenses for accurate balance prognosis.
- Mobile-Optimized PWA Fully responsive interface, installable as a Progressive Web App for a native-like mobile experience.
- Multi-User & Internationalization Support for multiple users with role-based access control and full localization in English and German.
- Theming Native support for Light and Dark modes, respecting system preferences.
A transfer between two accounts that both live in your instance is imported once, from the sending side. Your bank reports the same movement twice, as a debit on the sender and as a credit on the receiver, so Piggy drops the credit leg to keep the amount from being counted twice. The two legs are paired by the partner IBAN and, for banks that only report it on the debit leg, by matching a credit against a debit of the same amount booked within three days.
Known limitation: if the sending account exists in Piggy but is never synced, because you maintain it manually or its bank has no FinTS connection, the credit leg on the receiving account is still dropped while the debit leg never arrives. Such a transfer is not imported at all and has to be booked by hand. This is a deliberate trade-off: the alternative would double-count every ordinary transfer.
Deploy your personal instance using Docker.
-
Start the environment: Create a
.envfile based on.env.exampleand then run:docker compose up -d
Note: The default configuration expects a reverse proxy like Traefik. Otherwise, the frontend will not be able to access the API.
-
Access the services:
- Web Interface: http://localhost
- API Documentation: http://localhost/api/docs
-
Initial Setup: Create your account via the registration flow. The first registered user is automatically assigned administrative privileges.
- Mail Templates Fix and extend existing mail templates for better user notifications.
- Exports Refresh and fix data export functionality (CSV, PDF, etc.).
- Bank Support Support for additional banks in the FinTS client. Help wanted, as this requires testing with actual bank accounts.
- Suggestions Add recurring payment suggestions endpoint to frontend.
- Self-Hosted Your financial data remains on your infrastructure.
- Security Best Practices Docker images are configured to run as non-root users.
- Robust Authentication JWT-based authentication with secure refresh token logic and bcrypt password hashing.
Piggy is built for joint household finances, and this shapes its permission model. Please take it into account when deciding who gets an account:
- Everyone sees everything. All activated users of an instance can see the accounts, balances, transactions and statistics of all other users. This is intentional and not configurable. It is what makes shared planning, cross-user transfers and household budgets work.
- One instance per household. It follows that an instance belongs to exactly one group of people who genuinely share their finances. Anyone whose finances should stay separate needs their own instance.
- Admin-controlled access. There is no open self-registration: new sign-ups stay inactive until an administrator activates them. That activation is the actual trust decision, so treat it as such.
- Budgets are the one deliberate exception. Global budgets are shared and can be edited or deleted by anyone, while personal budgets can only be changed by the user they belong to (everyone can still see them).
Control your money, don't let your money control you.