by modularidea
IHateMoney + Cospend Client: view/edit Bills, Auto-categorisation, stats, PDF/Excel-export.
IHM Tracker
An Obsidian plugin for IHateMoney — view and edit shared-expense bills, auto-categorize them, and get statistics/exports, without leaving your vault.
IHateMoney itself has no category field for bills (this has been an open upstream request since 2011). This plugin solves that client-side: it classifies bills automatically from their title (keyword/fuzzy matching, trainable), and stores the category mapping as a plain JSON file inside your vault — which means it syncs across your devices for free, using whatever sync you already use for Obsidian (Obsidian Sync, iCloud, Syncthing, Git, ...). No account, no extra server.
Beta. Expect bugs. Please report them via GitHub Issues. Provided as-is, without warranty or liability.
Features
- Bills — list, create, edit, delete bills against any IHateMoney project (or a self-hosted Nextcloud Cospend project, or a fully local vault-only project with no server at all); payment methods and repeating bills where the backend supports them (Cospend, the server fork, local projects)
- Auto-categorization — classifies bills from their title, learns from your corrections, fully custom categories (label + emoji) per project. The built-in keyword list is tuned for German-speaking households (shop names) plus generic English terms; training from your own corrections works for any language
- Cross-device category sync — the category mapping lives in your vault, not in
.obsidian/'s plugin storage, so it rides along with your normal Obsidian sync - Statistics — overview (totals/trend/monthly), by category, by person (paid vs. share vs. net balance), a person × month pivot table, and a settle-up view (who owes whom, ported from IHateMoney's own internal debt-settling algorithm)
- Export — PDF and Excel export, filtered or full, saved into your vault
- Responsive UI — single-column on phones, master-detail split on tablets/desktop panes
- Home screen shortcut — register an
obsidian://ihm-tracker-open?...deep link to jump straight into a project from an iOS Shortcut / Android shortcut icon - Works on desktop and mobile (
isDesktopOnly: false) — no Node-only APIs, all network access goes through Obsidian's ownrequestUrl() - UI in English; numbers, currency and dates follow your system locale
Installing
Install via Obsidian Community Plugins, or manually:
- Download
main.js,manifest.jsonandstyles.cssfrom the latest release - Create a folder
<your-vault>/.obsidian/plugins/ihm-tracker/and put the three files in it - Reload Obsidian and enable "IHM Tracker" in Settings → Community plugins
Getting started
- Open Settings → IHM Tracker → add a project
- Pick a backend:
- IHateMoney — server URL, project slug, project password (the same ones you'd use to log into the IHateMoney web UI)
- Cospend — log in to your Nextcloud via the in-app browser flow, then pick/create a Cospend project
- Local — no server; bills and members live entirely in a vault file
- Open the IHM Tracker view (ribbon icon or command palette) and hit sync
Categories are inferred automatically from bill titles; correcting one trains the classifier for next time. Nothing here is sent anywhere except your configured backend.
Server fork (optional): categories, payment methods, repeating bills on the server
Stock IHateMoney has none of these — this plugin's vault-file category sync works fully without them. If you self-host, the fork modularidea/ihatemoney-cat adds them to the server, wire-compatible with Cospend/MoneyBuster: categories set by one user show up (and train the classifier) for everyone, payment methods and repeat rules become available in the bill form, and the IHM web UI gets a page to manage categories and payment methods. The plugin detects the fork automatically after the first sync.
See server-patch/ for a Dockerfile and what exactly the plugin uses.
Development
npm install
npm run dev # esbuild watch
npm run build # typecheck + production build
npm test # vitest
Symlink this folder into a test vault's .obsidian/plugins/ihm-tracker/, run npm run dev, and
reload the plugin in Obsidian (Cmd+R or the plugin-reload command) to see changes live.
See CONTRIBUTING.md for the project structure and module ownership rules.
License
0BSD — do whatever you want with it.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.