Stop forgetting what you're paying for.
A subscription tracker built entirely inside Obsidian using the Bases plugin. Each subscription is a note. Bases does the math. You see the full picture.
- Tracks every subscription in one table — price, cycle, next payment, category
-
Auto-calculates next payment date,
$/month, $ /year, total spent since start - Multi-currency — pay in THB, VND, USD, whatever. Everything gets normalized to USD for comparison
- Calendar view — see what renews this week at a glance. No surprise charges
- One template — add a new subscription in 30 seconds
Every subscription is a plain Markdown note with frontmatter:
product: Netflix Premium
startDate: 2025-12-03
cycle: 1M
currency: VND
price: 273000
category: EntertainmentThat's it. No plugins beyond Bases. No code to run. The .base file contains all the formulas — next payment date, monthly cost in USD, total spent, active/ended status.
If you pay for things in multiple currencies (hello, digital nomads), there's a CurrencyRates.md file that holds exchange rates in frontmatter. Bases formulas pull them automatically and convert everything to USD.
Rates can update automatically via a Claude Code hook — a Python script hits a free API (no keys needed) on every session start. The script, the hook config, and the bash wrapper are all in .claude/. You can also just update the rates by hand once a month, no big deal.
One look and you know what renews this week.
Built with Bases Calendar, a community plugin that adds calendar views to Bases.
- Obsidian v1.8+ with Bases enabled
- Bases Calendar plugin (for the calendar view)
-
Clone or download this repo into your vault (or copy the files manually):
git clone https://github.com/fkonovalov/obsidian-subscription-tracker.git -
Open the folder as an Obsidian vault (or merge into your existing vault)
-
Open
Subscriptions.base— you'll see the table with example subscriptions -
Add your own subscriptions:
- Use the template in
Templates/Subscription.md - Or duplicate an example note in
Subscriptions/and edit the frontmatter
- Use the template in
-
Update currency rates (if you use non-USD currencies):
- Edit
Assets/CurrencyRates.mdfrontmatter manually, or - Set up the auto-updater (see below)
- Edit
The .claude/ folder includes a Python script + Claude Code scheduled task that fetches rates from a free API once a day. No API keys needed.
obsidian-subscription-tracker/
├── README.md
├── LICENSE
├── Subscriptions.base ← the main table (open this in Obsidian)
├── Templates/
│ └── Subscription.md ← template for new subscriptions
├── Assets/
│ └── CurrencyRates.md ← exchange rates (USD, THB, VND)
├── Subscriptions/
│ ├── Example - Netflix.md
│ └── Example - YouTube Premium.md
├── .claude/ ← auto-update hook for currency rates
│ ├── settings.json
│ ├── hooks/
│ │ └── update-currency-rates.sh
│ └── scripts/
│ └── currency-updater.py
└── Screenshots/
- Create a new note in
Subscriptions/ - Use the template (
Templates/Subscription.md) or copy-paste this frontmatter:
---
type: subscription
product: Service Name
platform: Company
category: Entertainment
startDate: 2026-01-01
endDate:
cycle: 1M
currency: USD
price: 9.99
url: https://example.com
account: your-email@example.com
account-holder: Your Name
notes:
tags:
- subscription
---Cycle format: 1M = monthly, 1y = yearly, 7d = weekly, 3M = quarterly
To cancel a subscription: set endDate to the last day of service. The tracker will automatically move it to "ended" status.
The Subscriptions.base file calculates everything automatically. Here's what each formula does:
| Formula | What it does |
|---|---|
next-payment-date |
Next renewal date based on start date + cycle |
status |
"renews in X days" / "ends in X days" / "ended" / "lifetime" |
pricePerMonthUSD |
Monthly cost normalized to USD |
pricePerYearUSD |
Annual cost normalized to USD |
totalCostUSD |
Total amount paid since start date |
usdRate |
Exchange rate pulled from CurrencyRates note |
enabled |
Whether subscription is currently active |
Built with Obsidian Bases — a ridiculously powerful plugin that deserves way more attention.
MIT — fork it, tweak it, track your subscriptions.