Subscription Detector¶
A CLI tool to detect recurring monthly subscriptions from bank transaction exports.
Features¶
- Automatic detection - Analyzes transaction patterns to find recurring monthly payments
- Multiple bank formats - Supports Handelsbanken XLSX and simple JSON (extensible)
- Built-in known subscriptions - 70+ common services (Netflix, Spotify, etc.) detected immediately
- Smart grouping - Combine transactions with varying names into single subscriptions
- Configurable - YAML config for descriptions, tags, exclusions, and custom patterns
- Active/Stopped status - Tracks which subscriptions are still active
Quick Example¶
$ subscription-detector --source handelsbanken-xlsx account.xlsx creditcard.xlsx --show all
Loaded 115 transactions from account.xlsx
Loaded 688 transactions from creditcard.xlsx
Total: 803 transactions from 2 file(s)
Loaded config from /home/user/.subscription-detector/config.yaml
Data range: 2025-01-02 to 2026-01-15
Complete months: 12
Found 17 subscriptions (12 active, 5 stopped)
Showing: all
+------------------+----------------------+---------------+---------+-----+------------+----------------+------------+----------+
| Name | Description | Tags | Status | Day | Started | Last Seen | Monthly | Yearly |
+------------------+----------------------+---------------+---------+-----+------------+----------------+------------+----------+
| NETFLIX.COM | Netflix | entertainment | ACTIVE | ~15 | 2025-01-15 | 2026-01-15 | 229 kr | 2748 kr |
| Spotify | Spotify Family | music | ACTIVE | ~1 | 2025-01-01 | 2026-01-01 | 189-199 kr | 2388 kr |
| Google Workspace | | work | ACTIVE | ~2 | 2025-01-02 | 2026-01-02 | 72-76 kr | 912 kr |
| GYM MEMBERSHIP | Fitness Center | health | STOPPED | ~20 | 2025-01-20 | 2025-09-20 | 399 kr | - |
| ... | | | | | | | | |
+------------------+----------------------+---------------+---------+-----+------------+----------------+------------+----------+
| | | | | | | TOTAL (ACTIVE) | 1852 KR | 22228 KR |
+------------------+----------------------+---------------+---------+-----+------------+----------------+------------+----------+
How It Works¶
- Parse transactions from bank export files
- Apply grouping rules (combine similar transaction names)
- Detect known subscriptions immediately (Netflix, Spotify, etc.)
- Analyze remaining transactions for monthly patterns
- Calculate statistics and determine active/stopped status
Development¶
This tool was hacked together in a couple of hours using Claude Code with Claude Opus 4.5. From initial idea to working CLI with tests, CI/CD, and documentation - all built through conversation.
Getting Started¶
See Installation to get started, or jump to Usage if you already have it installed.