Subscriptions
Guide 49: Subscription Tracking
Automatically detect and manage your recurring payments
Overview
OtterLedger can automatically scan your transaction history and detect recurring payments like streaming services, gym memberships, insurance premiums, and utility bills. Detected subscriptions appear on your Dashboard and on a dedicated Subscriptions page where you can review, filter, and manage them.
What you'll learn:
- How subscription detection works
- Viewing subscriptions on the Dashboard widget
- Using the dedicated Subscriptions page
- Understanding subscription statuses and lifecycle
- Dismissing subscriptions you don't want to track
- Filtering and sorting your subscriptions
Time required: 2-3 minutes to review detected subscriptions
Prerequisites
- At least one account with imported transactions (3+ months of history recommended)
- Transactions should include recurring payments with consistent payee names
How Detection Works
OtterLedger analyzes your last 12 months of transactions looking for recurring patterns. It does not require any AI configuration or cloud services -- the detection is entirely rule-based and runs locally.
What the Algorithm Looks For
| Factor | How It's Used |
|---|---|
| Payee name | Groups transactions by normalized payee (e.g., "NETFLIX.COM" and "Netflix" are treated as the same) |
| Amount consistency | Identifies fixed-amount subscriptions (within 5% tolerance) and variable-amount subscriptions like utilities (within 50% tolerance) |
| Date intervals | Measures time between charges to determine frequency |
| Regularity | Checks that intervals are consistent -- sporadic charges are filtered out |
| Minimum occurrences | Requires enough data points to confirm a pattern (e.g., 3+ for monthly, 2+ for quarterly) |
Detected Frequencies
| Frequency | Typical Interval |
|---|---|
| Weekly | Every 5-9 days |
| Bi-weekly | Every 12-16 days |
| Monthly | Every 26-35 days |
| Quarterly | Every 80-100 days |
| Annual | Every 340-395 days |
Confidence Score
Each detected subscription receives a confidence score from 0 to 100%. Higher scores mean the pattern is more reliable. Subscriptions with very low confidence (below 50%) are not shown by default.
The score is based on:
- Number of occurrences (more = higher confidence)
- Interval regularity (consistent spacing = higher confidence)
- Amount consistency (same amount each time = higher confidence)
Dashboard Widget
The Subscriptions widget on your Dashboard gives you a quick overview without leaving the main screen.
What It Shows
- Monthly total -- estimated total of all active subscriptions per month
- Active count -- how many active subscriptions were detected
- Top 5 subscriptions -- your most notable recurring charges
Status Indicators
| Indicator | Meaning |
|---|---|
| Green | Active -- charges are arriving on schedule |
| Yellow | Variable amount -- the subscription amount fluctuates (like a utility bill) |
| Red | Overdue -- a charge was expected but hasn't appeared yet |
Actions
- View All -- opens the full Subscriptions page
- Dismiss (per subscription) -- hides the subscription from the widget
Subscriptions Page
For a complete view, navigate to the Subscriptions page from the sidebar under Planning.
Accessing the Page
- Click Planning in the sidebar navigation
- Select Subscriptions
The page automatically runs detection when you open it, ensuring results are current.
Summary Section
At the top of the page you'll see:
| Statistic | Description |
|---|---|
| Active | Number of subscriptions currently being charged |
| Paused | Subscriptions where a charge was expected but is late |
| Cancelled | Subscriptions that appear to have stopped |
| Monthly Total | Estimated monthly cost of all active subscriptions |
| Annual Total | Estimated yearly cost (monthly total x 12, adjusted for non-monthly frequencies) |
Subscription List
Each row in the list shows:
| Column | Description |
|---|---|
| Payee | The normalized merchant/service name |
| Amount | The typical charge amount (or range for variable subscriptions) |
| Frequency | How often the charge occurs (Monthly, Quarterly, etc.) |
| Next Expected | When the next charge is predicted |
| Status | Active, Paused, or Cancelled |
| Confidence | How confident the detection is in this pattern |
Filtering
Use the filter controls at the top of the list:
| Filter | Options |
|---|---|
| Status | All, Active, Paused, Cancelled |
| Frequency | All, Weekly, Bi-weekly, Monthly, Quarterly, Annual |
| Type | All, Business, Personal |
Manual Detection
Click the Detect Now button to force a fresh detection scan. This is useful if you just imported new transactions and want updated results immediately.
Subscription Lifecycle
Subscriptions move through statuses automatically based on whether charges continue arriving:
Active --> Paused --> Cancelled
^ |
| v
+-- (charge arrives) --+
Status Definitions
| Status | Condition | What It Means |
|---|---|---|
| Active | Charges arriving on schedule | The subscription is being billed normally |
| Paused | No charge for 1.5x the expected interval | The subscription may have been paused or the charge is late |
| Cancelled | No charge for 3x the expected interval | The subscription appears to have been cancelled |
| Dismissed | User chose to dismiss | Hidden from all views; will not reappear |
Automatic Transitions
- If a Paused subscription receives a new matching charge, it automatically returns to Active
- If a Paused subscription goes long enough without a charge (3x the interval), it transitions to Cancelled
- Dismissed subscriptions never change status -- they stay dismissed permanently
Dismissing Subscriptions
If OtterLedger detects a pattern that isn't actually a subscription (for example, regular grocery trips to the same store), you can dismiss it.
How to Dismiss
- Find the subscription on the Dashboard widget or Subscriptions page
- Click the Dismiss button on that row
- The subscription is immediately hidden
What Dismissal Does
- The subscription is marked as Dismissed in the database
- It no longer appears on the Dashboard widget or Subscriptions page
- Future detection runs will not recreate it (the dismissed record prevents re-detection)
- Past transactions are not affected
Note: Dismissal is permanent. There is no undo. If you dismiss a subscription by mistake, it will need to be manually removed from the database.
Subscriptions vs. Scheduled Transactions
OtterLedger has two related but distinct features for recurring payments:
| Feature | Subscriptions | Scheduled Transactions |
|---|---|---|
| Created by | Automatic detection from transaction history | Manual setup by user |
| Purpose | Visibility into what you're paying for | Automated transaction entry |
| Action | Passive tracking and forecasting | Creates transactions on schedule |
| Amount changes | Automatically updates when amounts change | Requires manual update |
| New services | Detected automatically after 2-3 charges | Must be set up manually |
Use Subscriptions to see what recurring charges you have. Use Scheduled Transactions to automate the entry of charges you expect.
When Detection Runs
| Trigger | What Happens |
|---|---|
| Open Subscriptions page | Auto-runs detection to show current results |
| After bank import | Detection runs to pick up any new patterns from imported transactions |
| Click "Detect Now" | Manual trigger for on-demand refresh |
| Dashboard widget loads | Uses results from last detection run (does not re-run) |
Detection typically completes in under a second, even with thousands of transactions.
Tips & Best Practices
Import regularly -- The more transaction history OtterLedger has, the better it can detect patterns. Three months is the minimum for reliable monthly subscription detection.
Review after import -- Check the Subscriptions page after importing new bank data to see if any new subscriptions were detected.
Dismiss non-subscriptions promptly -- If the algorithm picks up a pattern that isn't a subscription (like weekly grocery runs), dismiss it so it doesn't clutter your view.
Use the annual total for budgeting -- The annual total gives you a quick picture of your total subscription spend. Compare this against your budget to see if any services should be cancelled.
Check overdue items -- Red indicators on the dashboard widget highlight subscriptions where a charge was expected but hasn't arrived. This could mean the service was cancelled, or a payment failed.
Variable amounts are normal -- Utility bills, phone bills, and metered services show as variable-amount subscriptions. The amount range shown reflects the min/max of recent charges.
Troubleshooting
Q: No subscriptions detected even though I have recurring charges
A: Check that:
- You have at least 3 months of transaction history for the account
- Payee names are reasonably consistent (the algorithm normalizes common variations, but very different names won't match)
- The charges occur at a regular interval (sporadic charges are filtered out)
Q: A subscription shows the wrong amount
A: The amount shown is based on the most recent charges. If a subscription's price recently changed, the new amount will appear after the next detection run following the new charge.
Q: A subscription is marked as Cancelled but I'm still being charged
A: This can happen if:
- The payee name changed (e.g., the company rebranded)
- The charge interval changed (e.g., switched from monthly to annual)
- Detection hasn't run since the latest charge -- click Detect Now
Q: I see duplicate subscriptions for the same service
A: This can occur if the payee name varies significantly between charges (e.g., "SPOTIFY" vs "Spotify Premium USA"). The normalization catches most variations, but unusual naming can cause splits.
Q: Can I manually add a subscription?
A: Currently, subscriptions are detection-only. To track a recurring payment manually, use Scheduled Transactions (Guide 20).
What's Next?
- Guide 20: Scheduled Transactions -- Set up automated recurring entries
- Guide 21: Bill Reminders -- Track upcoming due dates
- Guide 19: Budgeting -- Plan your spending with budgets
Need help? Visit the OtterLedger community at github.com/openledger or check the FAQ.