Subscriptions
Recurring charges detected from your linked Plaid accounts, grouped by category with month-to-month pricing and a heads-up the moment a subscription's price goes up.
The Subscriptions tab finds the recurring charges on the bank or card accounts you've linked through Plaid and groups them by category — Media, Software, Utilities, and so on — so you can see what you're paying for at a glance. Each section has its own monthly subtotal. Each row shows the current per-charge price, the prior month's price, a sparkline of the last few months, and a price up badge on anything whose latest charge is materially higher than the one before it.
Categories
Every detected subscription falls into one of eight buckets, in order of typical monthly spend:
- Media & Entertainment — streaming, music, news, video games
- Software & Services — SaaS, cloud, productivity tools
- Utilities — phone, internet, energy, water, cable
- Health & Fitness — gyms, telehealth, supplements
- Food & Drink — meal kits, coffee subscriptions
- Transportation — transit passes, parking, EV charging
- Shopping — retail subscription boxes, memberships
- Other — anything we couldn't bucket confidently
Bucketing uses Teleperson's companies.industry first when available
(it's the most specific signal — a company tagged "Streaming Media"
goes to Media even if Plaid called it General Services), and falls
back to the Plaid personal_finance_category.primary value otherwise.
The section header shows the per-month subtotal for that category. Quarterly subscriptions are pro-rated (a $30 quarterly charge counts as $10 / month) so the subtotal answers the question users actually ask: "How much do I spend per month on this category?"
What counts as a subscription
A vendor is treated as a confirmed subscription when all of these are true over the lookback window:
- At least 3 charges from the same vendor (matched on Teleperson's company id when we have one, or on Plaid's normalized merchant name when we don't).
- The median time between charges is between 25 and 95 days — covers monthly, every-4-weeks, and quarterly plans. Annual subscriptions intentionally don't surface here yet.
- The amount is stable — coefficient of variation below 0.40. A vendor whose charges swing wildly month-to-month (a utility, say) won't appear even if it bills you regularly.
Pending and refund transactions are excluded. Vendors with no identifiable name on the underlying transaction are skipped rather than pooled into a single "unknown" group.
Almost a sub
A vendor with exactly two charges roughly a month apart — not yet enough to confirm a pattern — shows up in the Almost a sub card at the bottom of the tab. This is most useful right after you link Plaid for the first time: your monthly Netflix has only billed once or twice so it can't be confirmed yet, but you can still see it sitting there waiting for the next billing cycle to graduate it into the main list.
The card shows the vendor name, category, days between the two charges, and the latest amount. Once a third charge arrives, the vendor moves into the appropriate category section above.
Reading the row
Each row shows:
- Vendor name + logo. The matched company's canonical name and logo when we have one, otherwise Plaid's merchant name.
- Category + cadence. "Streaming Media · ~30 days between charges · 6 in 6M" tells you the bucket, how often it bills, and how many charges fell in the window.
- Latest price. The most recent charge's per-charge cost. When a vendor has billed twice in one month at the same price, we show the per-charge amount, not the doubled total — billing-cycle slips don't make a subscription look more expensive than it is.
- Prior price. Shown when it differs from the latest by at least one cent.
- Sparkline. One bar per calendar month in the window. Gaps render as thin grey marks so you can spot a missed month at a glance. The most recent month is highlighted; if it's a price increase, it's amber.
Price-up badge
A subscription is tagged ↑ price up when the latest month's per-charge price is at least 5% and $0.50 higher than the prior month with charges. The dual gate keeps micro-rounding off the list — a $9.99 → $10.00 change isn't an alert, but $9.99 → $14.99 is.
A summary banner at the top of the tab counts how many price-ups there are across the whole list, so you don't need to scroll to know whether anything needs attention. Within each category section, price-up rows still sort to the top.
Window control
You can flip the window between 3M / 6M / 12M:
- 3M is the most volatile. A new subscription might not have enough history to clear the gates yet.
- 6M is the default. Long enough to show price changes and quarterly cadences without burying the timely items.
- 12M is best for an audit — "what am I actually paying for every month right now?". Annual price reviews show up here even if the monthly cadence test wouldn't normally surface them.
When the tab looks empty
Instead of a generic "nothing here" message, the empty state tells you which of the four likely reasons applies:
- No transactions yet — Plaid hasn't returned any data for your linked account. Most banks populate within a few minutes; some take up to a day. Hit Sync now or come back tomorrow.
- Everything is still pending — your bank has reported recent charges as pending. We don't include pending charges because the amounts can change before they post; they typically settle in 1–3 days.
- Not enough billing cycles yet — you have transactions, but no vendor has hit 3 charges yet. Probable subscriptions still show up in Almost a sub below.
- Variable amounts — vendors are billing on a cadence but the amounts swing too much to call a subscription. The Financial Summary tab has a fuller breakdown of those.
Why not Plaid Recurring?
Plaid offers a paid RECURRING_TRANSACTIONS product that does similar
detection on their side. We use the regular transaction stream we
already pull for Financial Summary
— no extra API call, no extra cost. The trade-off is that very-new
subscriptions (under 3 charges) show up in Almost a sub rather
than the main list, and very-irregular ones won't surface until they
stabilize.
What we don't do
- We don't cancel anything for you. Subscriptions are read-only; the vendor's own portal is still where you go to change a plan.
- We don't share your transaction list. The detection happens server-side inside one Supabase edge function and only the aggregated rows ship to the panel — never the underlying charges.
- We don't show every recurring vendor. The cadence and stability gates intentionally trade some recall for a clean list. If a subscription is missing, the empty state will tell you whether it's a "needs more cycles" problem or a "variable amount" problem.
Related
- Financial Summary — same Plaid data, broader breakdowns (top vendors, categories, sectors).
- Company Hub — manage which companies are matched to which subscriptions.
- Privacy — what we store and where.
Financial Summary
A snapshot of your spending across every linked bank — top vendors, monthly trend, category and sector breakdown, and recurring charges.
Recent email from companies in your Hub, sorted into ten plain-English categories, with missed payments and security alerts called out — plus a review queue for new vendors discovered in your inbox.