> ## Documentation Index
> Fetch the complete documentation index at: https://breadbox-mintlify-7401d007.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Tracking your subscriptions

> Breadbox detects recurring charges automatically and groups them into Series — confirm or reject the candidates, tag a whole subscription at once, and auto-join future charges with a rule.

Subscriptions are the quiet budget-killer of every household. Streaming services nobody watches anymore, a forgotten cloud backup, a free-trial-turned-monthly-charge — they accumulate, and they're easy to miss because each one is small.

Breadbox tracks them under **Recurring** — the umbrella for *any* repeating charge, not just subscriptions: mortgage, rent, insurance, utilities, and loans land here too. A *series* groups the charges from one merchant so you can see the whole thing as one, track what it costs, and act on it in one place. A subscription is just the most familiar kind.

<Note>
  Recurring is in **Beta**. Find it in the admin dashboard under **Recurring** (the old `/subscriptions` URL redirects there), plus the REST API and MCP. The shapes below are stable, but expect the surface to keep growing.
</Note>

## What a series is

A series is a recurring charge pattern. Each one carries:

* **Cadence** — `weekly`, `biweekly`, `monthly`, `quarterly`, `semiannual`, or `annual` (plus `irregular` / `unknown` for charges that don't snap cleanly).
* **Expected amount** and its `iso_currency_code`, with an amount tolerance — so a $10.99 plan that ticks up to $11.99 stays the same series. Never sum expected amounts across currencies.
* **Next expected date** — when the next charge is due.
* **Status** — `candidate`, `active`, `paused`, or `cancelled`.
* **Occurrence count** and the detection signals behind it.

Every charge that belongs to the series is *linked* to it, so the series detail page shows the full history of that subscription at a glance.

## Automatic detection

You don't have to hand-build your subscription list. On each sync, Breadbox's detector looks for charges that repeat from the same merchant at a regular cadence and proposes them as **candidate** series. It normalizes merchant names to a stable signature and ignores generic descriptors — transfers, ACH, Venmo/Zelle, bill-pay, refunds, and the like — so one-off payments don't masquerade as subscriptions.

Candidates wait for a verdict. From the **Recurring** page you can:

* **Confirm** — yes, this is a subscription. The series becomes `active`.
* **Reject** (shown as *Not recurring*) — the rejection is *sticky*: the detector won't re-propose it at the same amount band.
* **Pause** or **Cancel** — for subscriptions you've stopped or are putting on hold.

<Note>
  A person's verdict outranks an agent's. If you confirm a series, a later agent run can't quietly reject it.
</Note>

## Tag a whole subscription at once

A series can carry its own tags, and **every linked charge inherits them automatically** — including charges that join later. Tag a series `streaming` once and all of its past and future transactions pick up that tag, no per-row tagging required.

Removing a tag from the series strips only the copies it added; a tag you put on an individual charge by hand survives.

## Auto-join future charges with a rule

To make every future charge from a merchant join a series on sync, use the [`assign_series` rule action](/transactions/rules#assign-a-series):

```json theme={null}
{
  "name": "Spotify → subscription series",
  "conditions": {
    "and": [
      { "field": "merchant_name", "op": "contains", "value": "Spotify" },
      { "field": "amount", "op": "gt", "value": 0 }
    ]
  },
  "actions": [
    { "type": "assign_series", "merchant_key": "spotify", "create_if_missing": true }
  ],
  "trigger": "on_create",
  "stage": "standard"
}
```

`create_if_missing` mints the series the first time a matching charge appears; after that, every future charge joins it. Provide `series_short_id` instead to target a series that already exists.

<Note>
  Applying the subscription rule **by itself** back-fills your existing charges into the series, not just future ones (see [applying a rule retroactively](/transactions/rules#applying-a-rule-retroactively)). The bulk "apply all rules" pass doesn't link series yet, so apply this rule on its own. You can also link a charge by hand or with the `assign_series` MCP tool.
</Note>

## Working with series from an agent

The same surface is available over MCP, which is how a scheduled reviewer agent can keep your subscription list tidy:

* `list_series` to scan the current series; `get_series` to inspect one.
* `assign_series` to mint a series an agent missed, or back-link transactions to an existing one.
* `update_series` to rename a series or change its type (`subscription`, `bill`, `loan`, `other`).
* `unlink_series_transactions` to detach charges that don't belong.

When you want every future charge from a merchant to land in a series automatically, encode that as an `assign_series` rule via `create_transaction_rule` rather than calling `assign_series` repeatedly.

See the [MCP tools](/mcp/tools#series-subscriptions) page for the agent-facing summary.

## Auditing what you spend

Once your subscriptions are series:

* **See the portfolio.** The **Recurring** page lists every active series with its cadence and expected amount.
* **Total the outflow.** Sum the expected amounts of your active monthly series (keep each `iso_currency_code` separate — don't mix currencies).
* **Spot creep.** A series tracks its last amount against the expected one, so a plan that quietly raised its price stands out.

## Deleting a series

Removing a series is non-destructive — its transactions stay exactly where they are and simply lose the series link. Your history is never deleted.

## Related reading

* [Rules](/transactions/rules) — the `assign_series` action and the full rule DSL.
* [MCP tools](/mcp/tools#series-subscriptions) — the series tools an agent can call.
* [On-demand analysis](/guides/on-demand-analysis) — ask Claude "which of my subscriptions are underused?" once they're tracked.
