WYGIWYH 0.12.0

An opinionated and powerful finance tracker. WYGIWYH (What You Get Is What You Have) is a powerful, principles-first finance tracker designed for people who prefer a no-budget, straightforward approach to managing their money. With features like multi-currency support, customizable transactions, and a built-in dollar-cost averaging tracker, WYGIWYH helps you take control of your finances with simplicity and flexibility. Why WYGIWYH? Managing money can feel unnecessarily complex, but it doesn’t have to be. WYGIWYH (pronounced "wiggy-wih") is based on a simple principle: Use what you earn this month for this month. Any savings are tracked but treated as untouchable for future months. By sticking to this straightforward approach, you avoid dipping into your savings while still keeping tabs on where your money goes. While this philosophy is simple, finding tools to make it work wasn’t. I initially used a spreadsheet, which served me well for years—until it became unwieldy as I started managing multiple currencies, accounts, and investments. I tried various financial management apps, but none met my key requirements: Multi-currency support to track income and expenses in different currencies. Not a budgeting app — as I dislike budgeting constraints. Web app usability (ideally with mobile support, though optional). Automation-ready API to integrate with other tools and services. Custom transaction rules for credit card billing cycles or similar quirks

Tags money finance tracking accounting self-hosted bookkeeping expense-tracker django python
License Affero GPLv3
State stable

Recent Releases

0.12.009 Mar 2025 03:15 minor feature: lt;h1 gt;Multi-tenancy is here lt;/h1 gt;. lt;p gt;This update brings the much requested multi-tenancy feature, i.e. different users having different accesses to accounts and transactions. lt;/p gt;. lt;h2 gt;How it works lt;/h2 gt;. lt;p gt;Whenever a user creates a new Account, Account Group, Category, Tag, Entity or Rule, it will, by default, be attached to the originating user and viewable only by him. The owner them can share their items at any time with any user or all users as they see fit. lt;/p gt;. lt;p gt;For simplicity, Currencies, Exchange Rates, and Import Profiles are shared by all users. lt;/p gt;. lt;p gt;Admins can see and edit anything from any user via the Django Admin, so keep in mind who you give admin access to. lt;/p gt;. lt;h2 gt;Migration Guide lt;/h2 gt;. lt;p gt;Any existing objects created before this update will be owner-less, meaning they will have the same behavior from before: editable and viewable by all users. Under the Management pages you can take ownership of any object you desire, this is not required, but recommended if you plan to add new users to your WYGIWYH instance down the line. lt;/p gt;. lt;hr gt;. lt;h2 gt;What's Changed lt;/h2 gt;. lt;ul gt;. lt;li gt;feat(insights): add Emergency Fund simulator by lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eitchtee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eitchtee" gt;@eitchtee lt;/a gt; in lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2893036447" data-permission-text="Title is private" data-url="https://github.com/eitchtee/WYGIWYH//201" data-hovercard-type="pull_request" data-hovercard-url="/eitchtee/WYGIWYH/pull/201/hovercard" href="https://github.com/eitchtee/WYGIWYH/pull/201" gt;#201 lt;/a gt; lt;/li gt;. lt;li gt;feat: multi tenancy support by lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url=
0.11.805 Mar 2025 03:15 minor feature: lt;h2 gt;What's Changed lt;/h2 gt;. lt;ul gt;. lt;li gt;(automatic-exchange-rates): unable to set 24 hour interval by lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eitchtee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eitchtee" gt;@eitchtee lt;/a gt; in lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2889273510" data-permission-text="Title is private" data-url="https://github.com/eitchtee/WYGIWYH//198" data-hovercard-type="pull_request" data-hovercard-url="/eitchtee/WYGIWYH/pull/198/hovercard" href="https://github.com/eitchtee/WYGIWYH/pull/198" gt;#198 lt;/a gt; lt;/li gt;. lt;/ul gt;. lt;p gt; lt;strong gt;Full Changelog lt;/strong gt;: lt;a class="commit-link" href="https://github.com/eitchtee/WYGIWYH/compare/0.11.7...0.11.8" gt; lt;tt gt;0.11.7...0.11.8 lt;/tt gt; lt;/a gt; lt;/p gt;.
0.11.601 Mar 2025 03:15 minor feature: lt;h2 gt;What's Changed lt;/h2 gt;. lt;ul gt;. lt;li gt;(rules): Update or Create Transaction rule unable to match against dates and other types by lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eitchtee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eitchtee" gt;@eitchtee lt;/a gt; in lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2878460248" data-permission-text="Title is private" data-url="https://github.com/eitchtee/WYGIWYH//193" data-hovercard-type="pull_request" data-hovercard-url="/eitchtee/WYGIWYH/pull/193/hovercard" href="https://github.com/eitchtee/WYGIWYH/pull/193" gt;#193 lt;/a gt; lt;/li gt;. lt;li gt;locale(de): update translation - thanks to lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CocaCola2701/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CocaCola2701" gt;@CocaCola2701 lt;/a gt; by lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eitchtee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eitchtee" gt;@eitchtee lt;/a gt; in lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2878474127" data-permission-text="Title is private" data-url="https://github.com/eitchtee/WYGIWYH//194" data-hovercard-type="pull_request" data-hovercard-url="/eitchtee/WYGIWYH/pull/194/hovercard" href="https://github.com/eitchtee/WYGIWYH/pull/194" gt;#194 lt;/a gt; lt;/li gt;. lt;/ul gt;. lt;p gt; lt;strong gt;Full Changelog lt;/strong gt;: lt;a class="commit-link" href="https://github.com/eitchtee/WYGIWYH/compare/0.11.5...0.11.6" gt; lt;tt gt;0.11.5...0.11.6 lt;/tt gt; lt;/a gt; lt;/p gt;.
0.11.323 Feb 2025 03:15 minor feature: lt;h2 gt;What's Changed lt;/h2 gt;. lt;ul gt;. lt;li gt;feat(insights): add late and recent transactions by lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eitchtee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eitchtee" gt;@eitchtee lt;/a gt; in lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2864873486" data-permission-text="Title is private" data-url="https://github.com/eitchtee/WYGIWYH//183" data-hovercard-type="pull_request" data-hovercard-url="/eitchtee/WYGIWYH/pull/183/hovercard" href="https://github.com/eitchtee/WYGIWYH/pull/183" gt;#183 lt;/a gt; lt;/li gt;. lt;li gt;feat(tools:currency-converter): show 1:1 rates for all available currencies by lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eitchtee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eitchtee" gt;@eitchtee lt;/a gt; in lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2867759435" data-permission-text="Title is private" data-url="https://github.com/eitchtee/WYGIWYH//184" data-hovercard-type="pull_request" data-hovercard-url="/eitchtee/WYGIWYH/pull/184/hovercard" href="https://github.com/eitchtee/WYGIWYH/pull/184" gt;#184 lt;/a gt; lt;/li gt;. lt;/ul gt;. lt;p gt; lt;strong gt;Full Changelog lt;/strong gt;: lt;a class="commit-link" href="https://github.com/eitchtee/WYGIWYH/compare/0.11.2...0.11.3" gt; lt;tt gt;0.11.2...0.11.3 lt;/tt gt; lt;/a gt; lt;/p gt;.
0.11.220 Feb 2025 03:15 minor feature: lt;h2 gt;What's Changed lt;/h2 gt;. lt;ul gt;. lt;li gt;(export): unable to import decimals by lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eitchtee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eitchtee" gt;@eitchtee lt;/a gt; in lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2864137526" data-permission-text="Title is private" data-url="https://github.com/eitchtee/WYGIWYH//181" data-hovercard-type="pull_request" data-hovercard-url="/eitchtee/WYGIWYH/pull/181/hovercard" href="https://github.com/eitchtee/WYGIWYH/pull/181" gt;#181 lt;/a gt; lt;/li gt;. lt;li gt;(insights:category-explorer): wrong sums by lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eitchtee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eitchtee" gt;@eitchtee lt;/a gt; in lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2864171064" data-permission-text="Title is private" data-url="https://github.com/eitchtee/WYGIWYH//182" data-hovercard-type="pull_request" data-hovercard-url="/eitchtee/WYGIWYH/pull/182/hovercard" href="https://github.com/eitchtee/WYGIWYH/pull/182" gt;#182 lt;/a gt; lt;/li gt;. lt;/ul gt;. lt;p gt; lt;strong gt;Full Changelog lt;/strong gt;: lt;a class="commit-link" href="https://github.com/eitchtee/WYGIWYH/compare/0.11.1...0.11.2" gt; lt;tt gt;0.11.1...0.11.2 lt;/tt gt; lt;/a gt; lt;/p gt;.
0.10.117 Feb 2025 03:15 minor feature: lt;h2 gt;What's Changed lt;/h2 gt;. lt;ul gt;. lt;li gt;(insights): sankey diagrams nodes too far from destination by lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eitchtee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eitchtee" gt;@eitchtee lt;/a gt; in lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2855892044" data-permission-text="Title is private" data-url="https://github.com/eitchtee/WYGIWYH//165" data-hovercard-type="pull_request" data-hovercard-url="/eitchtee/WYGIWYH/pull/165/hovercard" href="https://github.com/eitchtee/WYGIWYH/pull/165" gt;#165 lt;/a gt; lt;/li gt;. lt;li gt;feat(insights): category explorer by lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eitchtee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eitchtee" gt;@eitchtee lt;/a gt; in lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2856182688" data-permission-text="Title is private" data-url="https://github.com/eitchtee/WYGIWYH//166" data-hovercard-type="pull_request" data-hovercard-url="/eitchtee/WYGIWYH/pull/166/hovercard" href="https://github.com/eitchtee/WYGIWYH/pull/166" gt;#166 lt;/a gt; lt;/li gt;. lt;/ul gt;. lt;p gt; lt;strong gt;Full Changelog lt;/strong gt;: lt;a class="commit-link" href="https://github.com/eitchtee/WYGIWYH/compare/0.10.0...0.10.1" gt; lt;tt gt;0.10.0...0.10.1 lt;/tt gt; lt;/a gt; lt;/p gt;.
0.9.413 Feb 2025 03:15 minor feature: lt;h2 gt;What's Changed lt;/h2 gt;. lt;ul gt;. lt;li gt;refactor: don't display currency code by lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eitchtee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eitchtee" gt;@eitchtee lt;/a gt; in lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2841003040" data-permission-text="Title is private" data-url="https://github.com/eitchtee/WYGIWYH//155" data-hovercard-type="pull_request" data-hovercard-url="/eitchtee/WYGIWYH/pull/155/hovercard" href="https://github.com/eitchtee/WYGIWYH/pull/155" gt;#155 lt;/a gt; lt;/li gt;. lt;li gt;(transactions): paying transaction doesn't trigger update rules by lt;a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eitchtee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eitchtee" gt;@eitchtee lt;/a gt; in lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2841178507" data-permission-text="Title is private" data-url="https://github.com/eitchtee/WYGIWYH//156" data-hovercard-type="pull_request" data-hovercard-url="/eitchtee/WYGIWYH/pull/156/hovercard" href="https://github.com/eitchtee/WYGIWYH/pull/156" gt;#156 lt;/a gt; lt;/li gt;. lt;/ul gt;. lt;p gt; lt;strong gt;Full Changelog lt;/strong gt;: lt;a class="commit-link" href="https://github.com/eitchtee/WYGIWYH/compare/0.9.3...0.9.4" gt; lt;tt gt;0.9.3...0.9.4 lt;/tt gt; lt;/a gt; lt;/p gt;.
0.9.209 Feb 2025 10:00 minor feature: What's Changed. lt;ul . lt;li feat(rules): add Update or Create Transaction action by @eitchtee in #142. lt;li (logging): procrastinate job logs not showing up by @eitchtee in #143. lt;li feat: account and currency cards will no longer display unneeded zeros, only for totals by @eitchtee in #144. lt;li feat(import