Multi-currency personal finance tracker that lives entirely inside your Obsidian vault. No accounts, no cloud, no subscriptions.
- Quick transaction capture — log expenses and income in seconds via modal or command palette; Enter to save on desktop
- Dashboard — monthly cash flow summary: income, expenses, savings, savings rate gauge, category donut chart, 6-month trend, per-category budget bars; Cash Flow Health panel (OCF/ICF/FCF)
- Budgets — set per-category monthly limits with over-budget indicators and fixed/variable classification
- Net worth tracker — bank accounts, investment accounts, and liabilities across multiple currencies with allocation chart and history chart
- Liability tracker — track loans, mortgages, credit cards; log payments with live balance preview; closure prompt when paid off
- Debt cost analysis — enter APR to see monthly interest cost, months to payoff, total interest, extra payment what-if, avalanche vs snowball priority order
- Property equity — link a mortgage to a property asset to track equity %, LTV ratio, and principal paid
- Financial statements — CPA-style Income Statement, three-section Cash Flow (Operating/Investing/Financing), Balance Sheet; K/M/B formatting
- Cash Flow Forecast — 3/6/12M projection, what-if simulator (up to 4 scenarios), Runway to Commit timing
- Savings goals — set a target amount, deadline, and linked account; see projected completion date and progress bar
- Daily countdown — budget remaining and daily allowance for the rest of the month
- Recurring templates — save fixed monthly expenses and income; apply in one click at month start
- Financial health index — scored 0–100 from 6 behavioral pillars (Discipline, Ballast, Provision, Composure, Momentum, Reserve)
- Shareable card — old money assay seal design, zero monetary amounts, exportable as PNG
- Forward projection — "At current trajectory, Established in ~4 months" based on score history
- Behavioral guidance — weakest pillars surface with deep-links to the relevant section
- Monthly review — generate a Markdown note summarizing any past month
- Ledgr Wrapped — annual year-in-review note
- Log international money transfers with fee, exchange rate, and received amount
- Dashboard widget with monthly and YTD totals, lifetime sent, history with period filter
- Sticky top tab bar — Dashboard | Net Worth | Statements | Standing — works on mobile and desktop
- Transaction edit and delete (2-step confirm on delete)
- Currency toggle — switch between base and secondary currencies instantly
- Old Money design system — charcoal, small caps, tabular numerals
- Guidance deep-links scroll to the relevant section in the target tab
- Fully responsive throughout
- Safe-area-inset support for iPhone notch and home indicator
- Compact controls in sticky zone on small screens
Manual installation:
- Download
main.js,manifest.json, andstyles.cssfrom the latest release. - In your vault, create the folder
.obsidian/plugins/ledgr/. - Copy the three files into that folder.
- Open Obsidian → Settings → Community plugins → enable Ledgr.
- The onboarding wizard runs on first launch.
From the community store (pending review): search "Ledgr" in Settings → Community plugins → Browse.
All data is stored as plain files in your vault under a configurable folder (default: Private/Finance).
- Transactions — monthly Markdown files (
transactions/YYYY-MM.md) as human-readable tables with Dataview inline fields - Budgets —
budgets.json - Net worth —
networth.json(accounts, brokerages, liabilities) - Goals —
goals.json - Transfers —
remittances.json(if transfer tracker is enabled)
No external services are contacted. No data ever leaves your device.
Open Settings → Ledgr or tap the gear icon on the dashboard.
| Setting | Description |
|---|---|
| Finance folder | Vault path where all Ledgr data is saved |
| Base currency | Your primary currency (JPY, USD, EUR, PHP, etc.) |
| Secondary currencies | Up to two additional currencies for display toggles |
| Exchange rates | Manual rates — update as needed; staleness indicator on dashboard |
| Enable transfer tracker | Opt-in module for international transfers |
| Append to daily note | Auto-append spending summary when opening a daily note |
Exchange rates use the format BASE_QUOTE — e.g. JPY_PHP means 1 JPY = X PHP.
Add liabilities (mortgage, car loan, credit card, personal loan, student loan, installment/BNPL) in the Net Worth tab. For each liability set:
- Original amount and current balance
- Monthly payment amount and due day
- Reminder days ahead (shows upcoming payment banner on the dashboard)
When a payment is due, a banner appears on the dashboard with a Pay button. Tapping it opens a payment modal showing a live preview (Balance → Payment → Remaining), logs the payment against the account balance, and records it as a transaction in the correct expense category.
Enable in settings. Log any international transfer with:
- Amount sent and received
- Service (Wise, Revolut, Bank Transfer, or custom)
- Fee and exchange rate at time of transfer
Dashboard shows monthly/YTD totals alongside regular spending. Full history with month/year/all-time filter.
Transactions are written with Dataview inline fields so they can be queried directly.
TABLE amount, currency, category, subcategory
FROM "Private/Finance/transactions"
WHERE type = "expense"
SORT date DESC
TABLE sum(amount) as Total
FROM "Private/Finance/transactions"
WHERE category = "Food & Drink"
GROUP BY date
Fields per transaction: date, type, amount, currency, category, subcategory, note.
<financeFolder>/
transactions/
YYYY-MM.md # One file per month — readable table + Dataview fields
budgets.json # Category limits
networth.json # Accounts, brokerages, liabilities
goals.json # Savings goals
remittances.json # Transfer history (if enabled)
ledgr-templates.json # Recurring transaction templates
ledgr-bearing.json # Bearing score history (per-pillar, monthly)
ledgr-nw-history.json # Net worth snapshots (monthly totals)
reviews/
YYYY-MM-review.md # Generated monthly review notes
YYYY-wrapped.md # Generated annual wrapped notes
Requirements: Node.js 18+, npm.
npm install
# Dev build with watch + auto-copy to vault
VAULT_PATH=/path/to/your/vault npm run dev
# Production build
VAULT_PATH=/path/to/your/vault npm run buildCreate a .env file in the repo root with VAULT_PATH=/path/to/vault to avoid setting it every time.
- CSV import / export
- Recurring transaction templates
- Historical exchange rate tracking
- Net worth snapshots over time
- Multi-household / multi-country view