Skip to main content

Overview

The recurring transactions feature automatically identifies patterns in your transaction history to detect recurring charges like subscriptions, regular payments, and bills. Once identified, these transactions are displayed in your transaction list with projected upcoming charges. The Bills surface — which includes the pay-run overview, calendar view, paycheck planner, and AI helpers described below — is a preview feature. Each family member must enable preview features in Settings → Preferences before they can access it. The underlying recurring transaction detection and settings pages are available without the preview flag.

How it works

Automatic pattern detection

Pattern detection analyzes your transaction history to identify recurring patterns based on:
  • Merchant matching: Groups transactions by the same merchant
  • Amount consistency: Looks for transactions with the same amount
  • Date clustering: Detects transactions that occur on similar days each month (within a 5-day window)
  • Minimum occurrences: Requires at least 3 occurrences in the last 3 months
  • Recent activity: Last occurrence must be within the last 45 days
The pattern detection uses circular distance calculations to handle month-boundary cases (e.g., transactions on days 28, 29, 30, 31, 1, 2 are recognized as a single recurring pattern).

When patterns are identified

Pattern identification runs automatically after:
  • CSV imports complete (transactions, trades, accounts, etc.)
  • Any provider sync completes (Plaid, SimpleFIN, LunchFlow, etc.)
  • Manual identification via the recurring transactions settings page

Projected transactions

Active recurring transactions appear at the top of your transaction list showing:
  • Expected upcoming charges for the next month
  • Merchant name and logo
  • Projected amount
  • Expected date based on historical patterns
  • “Projected” badge to distinguish from actual transactions
Projected transactions only appear when no filters are applied to the transaction list. The projected recurring list is cached per user and refreshed automatically when any of the following change: your recurring transactions, account statuses, the merchants attached to your recurring transactions, or your account sharing access. The cache also resets at the start of each new day, since the list shows charges due within the next 10 days.

Account scoping

Recurring transactions respect account sharing and permissions: What you see:
  • Recurring transactions are scoped to accounts you have access to
  • Only recurring patterns from your owned and shared accounts appear in your list
  • Projected transactions only show for accounts you can view
Pattern detection:
  • Pattern identification analyzes only transactions from accounts you have access to
  • Shared accounts contribute to recurring pattern detection based on your permissions
  • Each family member may see different recurring transactions based on their account access
This ensures that recurring transaction detection respects your account sharing configuration and privacy settings.

Managing recurring transactions

Settings page

Access recurring transaction management at Settings → Recurring. The settings page displays:
  • Merchant: The merchant name and logo
  • Amount: The recurring charge amount
  • Expected day: The day of month when the charge typically occurs
  • Next date: The next expected occurrence date
  • Last occurrence: When the transaction last occurred
  • Status: Active or inactive
  • Actions: Toggle status or delete

Manual actions

Identify patterns

Click Identify Patterns to manually trigger pattern detection. This analyzes your transaction history and creates or updates recurring transaction records. Running this multiple times will not create duplicates.

Clean up stale

Click Clean Up Stale to mark recurring transactions as inactive if they haven’t occurred recently. Staleness is measured in the series’ own cycles — two missed cycles of the cadence — so quarterly and annual bills are not incorrectly retired just because they have long gaps between normal occurrences. The minimum floor is 2 months for automatically detected patterns and 6 months for manually marked patterns. Recurring transfers are matched by their transfer pair (an outflow on the source account paired with an inflow on the destination account) rather than by name, so transfers stay active as long as the pair keeps occurring and are retired only when the pair stops.

Toggle status

Use the play/pause icon to manually activate or deactivate a recurring transaction. Inactive transactions won’t show projected charges.

Delete

Use the trash icon to permanently remove a recurring transaction record.

Mark as recurring

You can manually mark any individual transaction as recurring from the transaction detail view. Click Mark as Recurring to create a manual recurring transaction. The system automatically calculates amount variance from the past 6 months of similar transactions, allowing it to track recurring charges that vary in amount (like utility bills). Two manual recurring entries for the same payee are allowed as long as their amounts differ (for example, a 3.00feeanda3.00 fee and a 19.68 charge from the same merchant). An exact duplicate — same account, payee, currency, and amount — is still blocked.

Schedules and cadences

Recurring transactions support a range of cadences beyond monthly: When a recurring transaction uses an interval-based cadence (biweekly, quarterly, semiannual), an anchor date is required to establish the phase of the schedule.

Weekend adjustment

When a bill falls on a weekend you can choose how the due date adjusts:
  • None: No adjustment; the bill is due on the scheduled date regardless of day of week
  • Skip: The occurrence is skipped entirely on weekends
  • Before: The due date moves to the preceding Friday
  • After: The due date moves to the following Monday

End conditions

A recurring transaction can be set to end in three ways:
  • Never: The series continues indefinitely
  • On date: The series ends on a specific calendar date
  • After count: The series ends after a fixed number of occurrences (up to 600)

Bill types

Each recurring transaction carries a type that describes the nature of the series: Transfers are typed automatically when the recurring transaction has a destination account.

Bill fields

Payment URL

You can store a payment link on a bill. When set, you can open the link directly from the bill’s detail view to navigate to the payment portal.

Autopay

Mark a bill as autopay to indicate that the payment is handled automatically. Autopay bills still appear in your bill list but are not flagged as requiring action.

Notes

Free-text notes stored on the recurring transaction for your own reference.

Status lifecycle

A recurring transaction moves through the following statuses: The API accepts only active and inactive on write. The other statuses are owned by the detection pipeline and the UI.

Bills

The Bills surface is a pay-run workspace that lets you see, pay, and plan around your recurring obligations. It is available to family members who have enabled preview features. The Bills page title, navigation tabs, and action buttons (Add bill, Add income, Review with AI) display in the language you have set in Settings → Preferences.

Views

The Bills page offers four views, switchable from the view switcher at the top of the page:
  • Overview — your current month at a glance: overdue bills, what’s due this month, what’s coming later, and what you’ve already paid. Bills are grouped by due date and, when you have declared income, marked with pay-period boundaries so you can see which paycheck covers which bill.
  • All — the complete list of active bill series, filterable by payment state (overdue, due, partial, paid) and lifecycle state (paused, ended).
  • Calendar — upcoming bills laid out on a monthly calendar.
  • Paycheck planner — upcoming bills apportioned across your next pay periods (see Paycheck planner below).
Each bill has a detail drawer showing payment history, price changes, cost analytics, and quick actions to pay, edit, or manage the series.

Occurrence drawer

Tapping a bill row in the Overview, Calendar, or Paycheck planner opens the occurrence drawer — the action surface for resolving that specific billing cycle. It is separate from the bill-level detail drawer and focused on what needs to happen right now. The occurrence drawer shows:
  • Due label — a context-aware label describing when the payment is due. The label adapts to the occurrence’s state: overdue (with the number of days past due), due today, due in N days, snoozed until a date, or the original due date if the cycle is already settled.
  • Payment progress — the amount paid so far, the expected amount, and a progress ring. The headline reads the current state: the paid amount if fully paid, “Skipped”, “Marked missed”, or the remaining balance.
  • Linked payments — any transactions already allocated to this occurrence, each with an unlink option.
  • Candidate matching — when the occurrence is still open, the drawer surfaces the most likely matching transaction from your accounts as a card with a single “Link payment” action. Other likely matches appear below it. You can also search all transactions by name.
  • Manual payment — if no matching transaction exists, a disclosure panel lets you record a payment by amount and date directly without linking a bank transaction.
  • Quick actions — mark paid (settles the remainder without recording a transaction), skip, snooze for one week, and reopen (for already-settled or skipped occurrences).
All labels and feedback messages in the occurrence drawer — including the due label states, payment summaries, and action confirmations — are displayed in your configured display language (set under Settings → Preferences → Language).

Recording payments

From the bill detail drawer you can apply a payment to the current occurrence in several ways:
  • Link a transaction — select an existing transaction from your accounts to record as the payment. If the transaction is in a different currency, the app converts at the exchange rate for that transaction’s date.
  • Manual payment — enter an amount and date directly, with no transaction linked.
  • Partial payment — enter a custom amount less than the full due amount to record a partial payment. You can add more payments until the occurrence is fully covered.
When the app cannot record a payment it shows an error message. Common reasons:
  • Over-allocation — the amount you entered would exceed the total of the linked transaction.
  • Missing exchange rate — the transaction is in a different currency and no exchange rate is available for that date. Enter the amount explicitly to work around this.
  • Already applied — the transaction has already been applied to this bill.
To remove a payment, use the unlink action in the payment history section of the drawer. Suggested payments — the matching engine may automatically suggest a transaction for an open occurrence. You can confirm the suggestion to apply it or dismiss it. Dismissing a suggestion marks that transaction so it will not be suggested for the same bill again. All payment feedback messages — confirmations and errors — appear in your configured display language. When a transaction is linked to a bill, the Applied to section on the transaction detail view shows the bill name and occurrence due date. That date is displayed in your configured language as well.

Paycheck planner

The paycheck planner slices your upcoming bills across the pay periods defined by your declared income. Only manually declared income series (bill type income, set to manual) define pay periods; automatically detected inflows do not. For each pay period the planner shows:
  • The income arriving in that period
  • Bills due inside the period and their share of that paycheck
  • Bills due in a later period that are too large for their own paycheck and have a reserved slice held back from this period
  • Whether the period comes up short and by how much
A leading window covers the time between today and the next payday. It has no income, so shortfalls in that window are measured against your cash on hand (the sum of your visible depository accounts, excluding tax-advantaged accounts). When the balance cannot be determined, the window is shown without a shortfall judgment. To use the paycheck planner, create at least one recurring transaction with bill type income and the manual flag set.

Calendar feed

You can subscribe to your bills in any calendar app that supports ICS feeds (Google Calendar, Apple Calendar, Outlook, and others). To get your feed URL, go to Bills → Settings (or the bills feed section of your account settings) and copy the calendar link. The feed covers the next 90 days of open, active bill occurrences and updates automatically. Key properties of the calendar feed:
  • Sessionless and token-authenticated — the URL can be shared with a calendar app without logging in each time.
  • Per-member scoping — the feed reflects only the bills you can see based on your account-sharing permissions.
  • Revocable — resetting the feed token invalidates all previously shared URLs immediately. Any calendar app using the old URL will stop receiving updates until it is given the new URL.
  • Preview-gated — the feed endpoint returns 404 if preview features are disabled for your account or if recurring transactions are disabled for your family.

AI helpers

Two in-page AI helpers are available when an LLM provider is configured and you have AI features enabled in your account: Smart fill — when you add a new bill from the Bills page and pick an existing transaction as the starting point, the smart fill button analyzes that transaction’s charge history and proposes the bill name, amount, cadence, due day, and autopay status. You review and adjust the proposal before saving. Smart configure — on an existing bill’s detail view, the smart configure button reads the bill’s own charge history and proposes corrections to any fields that the history contradicts (for example, a different due day or amount). Only fields where the history suggests a change come back with a proposal; everything else is left as is. You review the proposal in a dialog and apply only the changes you accept. Both helpers require the family’s LLM provider to be configured. They are not available on self-hosted installs without a provider set up.

Assistant and MCP tools for bills

When preview features are enabled and an LLM provider is configured, the assistant and any connected MCP client can interact with your bills using a set of dedicated tools. The tools are absent from the tool list until preview features are turned on. All bill tools share a consistent error contract: if a call fails, the response includes an error message and a hint explaining how to recover or retry.

Read tools

get_bills — returns your bills, subscriptions, and other recurring obligations, each with its current occurrence’s payment state. Accepts optional filters: The response includes per-currency totals (active monthly equivalent spend, overdue count) computed over the full filtered set, not just the page shown. When the result is empty, get_bills checks whether bills exist under other statuses and returns a hint pointing there. get_bill_details — returns one bill’s full story: configuration, every open occurrence, the last 12 settled occurrences with their payments, upcoming due dates for the next 400 days (first 3), price-change history (24-month window), and cost analytics. Analytics are derived from confirmed payments only, never from estimates. Pass the exact bill_id returned by get_bills. get_bill_audit — a deterministic review of your bills that surfaces:
  • Possible duplicates — series with the same name, amount, and due day
  • Price changes — over a configurable lookback window (default 12 months, max 24)
  • Upcoming trials — trials converting within 30 days
  • Upcoming renewals — renewals due within 30 days
  • Long overdue — bills overdue by at least one full billing cycle in the series’ own cadence
  • Dormant — paused bills still carrying unpaid occurrences
  • Awaiting confirmation — detected series not yet confirmed by the user
  • Undeclared candidates — recurring outflow patterns not yet declared as bills
Each section reports items, count, and truncated (capped at 20 items). The audit returns facts; the assistant narrates and prioritizes them. get_paycheck_plan — slices upcoming bills across pay periods defined by your declared income schedules. Returns up to 6 pay periods (default 3), each showing income, bills due, bills reserved for a later period, and safe-to-spend headroom. When confirmed series are excluded because they are still awaiting confirmation, the response notes how many were left out so the assistant can caveat the headroom figure. Only manually declared income series (bill type income) define pay periods. Automatically detected bank inflows do not.

Write tools

All write tools confirm their arguments strictly and return a clear error rather than guessing at ambiguous input. create_bill — creates a bill, subscription, installment plan, or income schedule. Required fields: name, amount (always a positive magnitude), and first_due_on (seeds the due-day anchor). Optional fields include frequency, is_income, bill_type, account_name, category_name, autopay, payment_url, and notes. Unrecognized frequency values are rejected with the list of valid cadences rather than silently defaulting to monthly. update_bill — updates one bill’s configuration. Pass only the fields being changed. Amount changes apply forward only; occurrences already due keep their original figure. Changing the frequency pins the schedule so automatic detection respects it as the user’s intent. status accepts active or paused. record_bill_payment — records a payment against a bill’s open occurrence. Omit amount to settle in full; pass amount for a partial payment. The tool rejects an amount that exceeds the remaining balance on the occurrence. Linking to a specific bank transaction is not possible here; the app’s matching engine owns that flow.

Prerequisites

  • Preview features must be enabled in Settings → Preferences
  • An LLM provider must be configured
  • Recurring transactions must not be disabled for the family (Settings → Recurring transactions)

Pattern clustering

The pattern detector uses circular distance calculations to handle month-boundary patterns:
  • Days are normalized on a circular scale (1–31)
  • Clustering accounts for wrap-around (e.g., day 31 to day 1 is distance 1)
  • Standard deviation threshold of 5 days for clustering
  • Median calculation on rotated day sequences for accurate expected day

Amount variance filtering

When building or refreshing a manual recurring entry’s expected amount range, only historical transactions whose amount is within 2× of the anchor amount (double or half) are included. This prevents unrelated charges from the same merchant — for example, a small fee and a larger monthly due — from being blended into a single projected amount that matches neither real transaction.

Cleanup logic

Recurring transactions are automatically marked inactive when no matching transaction has occurred within two cycles of the series’ own cadence, subject to a minimum floor:
  • Automatically detected patterns: minimum 2 months
  • Manually marked patterns: minimum 6 months
This means a quarterly bill is not retired after two months of silence — it is allowed two full quarters of inactivity before being considered stale. An annual bill is given two full years. For recurring transfers, matching uses transfer-pair detection (an outflow on the source account paired with an inflow on the destination account, within the usual amount and day-of-month tolerance) so transfers stay active while the pair recurs and are retired only when the pair stops.

Data storage

Each recurring transaction record stores:
  • Family, account, and merchant associations
  • Amount and currency
  • Bill type
  • Expected day of month (1–31)
  • Anchor date (required for interval-based cadences)
  • Last occurrence date
  • Next expected date
  • Status
  • Occurrence count
  • Payment URL, autopay flag, and notes
  • End condition (never, on date, or after count)
  • Weekend adjustment rule

Use cases

Subscription tracking

Monitor recurring subscriptions like:
  • Streaming services (Netflix, Spotify, etc.)
  • Software subscriptions (Adobe, Microsoft 365, etc.)
  • Membership fees (gym, clubs, etc.)

Payment and bill management

Track regular payments and bills such as:
  • Utilities (electricity, water, gas)
  • Insurance premiums
  • Rent or mortgage payments

Income tracking

Identify recurring income like:
  • Salary deposits
  • Freelance client payments
  • Investment dividends

Limitations

  • Requires at least 3 occurrences in the last 3 months for automatic detection
  • Last occurrence must be within 45 days for automatic detection
  • Amount variance for manual recurring entries is bounded to 2× the anchor amount; charges outside that range are treated as separate recurring entries
  • Projected transactions are hidden when filters are applied
  • Pattern detection is event-driven (runs after syncs or manual triggers), not continuous or real-time
  • Interval-based cadences (biweekly, quarterly, semiannual) require an anchor date
  • The API writes only active and inactive status; other statuses are managed by the detection pipeline