Skip to content

Using Taiga Finance

How Taiga Finance detects recurring charges

What makes Taiga Finance treat a charge as recurring, and what you can change when it gets one wrong.

Every commitment on Recurring that you didn’t add by hand was found by a detector that runs each time your accounts sync. It groups your transactions by merchant and account, measures the days between charges, and keeps the groups whose gaps fit a cadence. Each one arrives with a confidence tag, a score, and the evidence behind it. The evidence sits in the commitment’s drawer and in the transaction’s Why recurring? section. When the detector is wrong, the correction is yours to make, and it holds through every later scan. Editing, adding, and reading commitments is covered in Recurring.

A candidate is a group of charges the detector believes repeat: five Netflix charges about a month apart, or a run of paychecks two weeks apart. The detector keeps the charges as the candidate’s Occurrences, works out the amount it expects and the next expected date, and tags it likely or possible. A likely candidate already counts toward the summary rail’s totals. A possible one stays out of the totals until you confirm it.

How does Taiga Finance decide something repeats?

Section titled “How does Taiga Finance decide something repeats?”

The detector reads every transaction in the household and first drops what can’t be a commitment:

  • anything categorized under Transfers or Food & Dining
  • charges on an account whose name says brokerage, IRA, 401(k) or the like
  • charges on an account you have excluded from totals
  • the receiving side of a credit-card payment

A split transaction counts as its original charge, not its parts. The detector measures the posted date, so editing a transaction’s date never moves it in or out of a series.

What remains is grouped by merchant, account, and direction. For each group:

  1. Amount cluster. With enough charges, the detector looks for a dominant amount. When most of the charges sit close to the median, the rest are set aside as Off-pattern and don’t affect the cadence. This is how a $130 Costco renewal stays separate from the grocery runs at the same merchant.

  2. Cadence. The median gap between consecutive charges is fitted to a band: Weekly, Biweekly, Semi-monthly (a mid-month and a month-end charge each month), Monthly, Quarterly, Semi-annual, or Annual. Each band sets how many charges it needs and how far back it looks. A merchant Taiga Finance already knows bills on a schedule needs one charge fewer, and a known monthly merchant needs only one. Semi-annual and annual amounts must also stay close to each other across the series. A wider spread drops the group.

  3. Regularity. The share of gaps that land inside the band. A group below the detector’s regularity threshold is dropped. This is the Regularity figure in a transaction’s Why recurring? section.

  4. Recency. Days since the last charge, against the band’s own window. Inside it the commitment is active. Past it the commitment is stale, and the tag starts down the ladder described under What do the confidence tags mean?.

  5. Score. Several inputs weighted together: how many charges it has seen (up to a cap), regularity, how steady the amount is, recency, and whether the merchant is on Taiga Finance’s known-recurring list. A score at or above the detector’s threshold is tagged likely; anything lower is possible.

A group that fits no band can still come through as Irregular when the merchant is on the known-recurring list and has enough recent charges and enough spend. An Irregular candidate is always possible and has no next date until you confirm a cadence.

Two more passes run beside the cadence detector. Credit-card annual fees come from a card-fee table matched on the issuer and the fee amount; a fee the profile expects but the card hasn’t charged yet is tagged predicted. Membership fees with opaque descriptions, like Amazon Prime, come from a membership catalog matched on merchant text and amount range.

The kind is decided in a fixed order, and the first rule that matches wins. Money coming in, a parent category of Income, or paycheck and payroll wording makes it Income. A description carrying “annual fee” or “membership fee”, or an annual charge from a card issuer in the range card fees fall in, makes it a Fee. Otherwise the transaction’s parent category picks the kind: Housing and Giving map to themselves, Utilities to Bill, Money & Fees to Debt, and any other parent to Other. Income, transfers, and card fees are fixed by the transaction itself and can’t be remapped. The parent-category mapping is yours to change, for one commitment or for every commitment in a category.

Tag How a commitment gets it In the totals
confirmed You confirmed it, edited it, or added it by hand. Yes
likely Scored at or above the threshold and on schedule. Yes
possible Scored below the threshold, an Irregular candidate, or a likely series that has slipped past its expected date. Not until confirmed
predicted A card fee the card’s profile expects but hasn’t charged yet. Yes
dismissed You marked it Not recurring, or the series went silent long past its cutoff. No

A tag can move on its own when charges stop landing. Once the next expected date is overdue by more than the cadence’s cutoff, a likely commitment reads possible. Further past it, the commitment is dismissed automatically. The cutoff scales with the cadence. The heads-up alert for a charge that hasn’t landed fires in the same window. Answering Still active snoozes the alert for one cutoff and changes nothing on the commitment. The detector picks the series back up on its own when the next charge posts.

The confirm card shows the cadence, the estimated next date, and the confidence tag. Hover the tag for the reason: a count like 5 charges seen · ~30d gaps, or Strong, consistent signal across recent charges. on a likely candidate. A Card fee, Annual, or Semi-annual tag explains a charge that appears in only one or two months of history.

The commitment drawer’s Evidence band lists Last seen, Annualized, and Cadence gaps, then the detector’s reason in a sentence. Cadence gaps is the day count between each charge. The Occurrences band below it lists every charge in the series, the Next estimated row in italics, and any charge set aside as Off-pattern.

The transaction drawer shows the same series from the other side. Its Why recurring? section lists Cadence with the typical gap, Regularity as a percentage, the Amount range with its median, and the Score, written as 81% confident (likely). Under those, one line names where the commitment came from:

  • Detected from your transaction history is the cadence detector alone.
  • Merchant signal means the cadence fit and the merchant is on Taiga Finance’s list of merchants known to bill on a schedule. That list ships with Taiga Finance, and while AI is on it grows as Taiga Finance asks Claude to classify merchant names it hasn’t seen. Only the name is sent; see What we send to AI.
  • Known card-fee profile is the card-fee table.
  • LLM-inferred means AI named the card behind an annual fee it observed.
  • You confirmed this and You created this manually are your own doing.

What happens when I confirm or dismiss a candidate?

Section titled “What happens when I confirm or dismiss a candidate?”

Your answer is stored against that series and replayed on every scan, and that is the whole of what it teaches the detector. A confirmed commitment stays confirmed. If the charges stop and the detector drops the series, the row keeps its last details and reads stale rather than disappearing. A dismissed one stays dismissed, out of the strip and the totals, and no sync or Rescan brings it back. Confirming and dismissing don’t retrain the scoring, so the tags on other merchants don’t change. The steps are on Recurring.

An Irregular candidate needs a cadence before it can be confirmed, so its card offers the detector’s guess instead of a bare Confirm. The guess needs enough charges whose median gap fits a band. When the gaps are steady and most charges land on the same day, the guess is specific: Monthly on the 15th. Otherwise it is hedged: Roughly monthly, varies.

  1. In the Confirm recurring strip, the Irregular card shows the monthly average, its most recent dates, and the guess. Click Yes, monthly on the 15th to confirm with that cadence and anchor day.

  2. If the guess is wrong, click Not quite ▾. Pick a Cadence, then a Day of month, or the weekday under On for Weekly and Biweekly. Quarterly and longer need no anchor. Click Save.

When no guess could be made, the card opens straight to the picker, set to Monthly on the 1st. The same controls sit in the commitment drawer, in the Confirm cadence band above Evidence. The drawer’s footer shows no Confirm recurring button for an Irregular candidate.

How do I change which kind a category suggests?

Section titled “How do I change which kind a category suggests?”

A commitment’s kind can be overridden on that one row, or the override can become the default for every commitment in its parent category.

  1. On Recurring, open the commitment and change its Type in the Details band. Click Save. The band now reads Kind overridden.

  2. Click apply to all Utilities to make that type the category’s default. The toast reads Bill is now the default for Utilities. The row drops its own override and follows the default. Every other commitment in the category picks it up on the next scan.

  3. Click reset to category default instead to drop the row’s override and let the category decide again. Other overrides on the row, like its amount or cadence, are kept.

The full map lives in Organize. In the Recurring kinds band, open Category defaults — which kind each spending category suggests. Every parent category has a row with a Default or Custom tag, a kind selector, and Reset on any custom row. Income and Transfers are read-only there, and the note beneath says why: those kinds are detected from the transaction itself.

A sync already re-runs detection. Rescan runs it now, over the whole ledger.

  1. On Recurring, open the ⋯ menu and click Rescan. The item is greyed out while a scan is running, and in a demo session, where the commitments you see are the detector’s output from seeding.

  2. Wait for the toast: Rescan complete. Found 12 candidates. Confirmed and dismissed commitments keep their state; new candidates land in the Confirm recurring strip. A failure reads Rescan failed: followed by the reason.

While AI is on, Rescan also asks Claude to classify merchant names Taiga Finance hasn’t classified before, ahead of the cadence pass.

One charge in a series may not belong: a refund, a one-off at the same merchant, a duplicate. Unmark it and the rest of the series is kept.

  1. On Transactions, open the charge. Its REC badge scrolls to the Why recurring? section, which lists the series under Charges in this series with this one marked THIS TXN.

  2. Click This charge isn’t recurring — unmark just this one. A toast reads Unmarked one Netflix charge with an Undo. The row now reads (unmarked), and the button reads This charge is already unmarked.

An unmarked charge stays unmarked through every later scan and is listed in the commitment drawer’s Excluded band, where it can be restored. To drop the whole series instead, click Unmark entire series, then Confirm on the Hide all 5 charges from totals? prompt. That is Not recurring, reached from the transaction side.

A merchant I pay every month never shows up.

Section titled “A merchant I pay every month never shows up.”

The detector skipped it or the pattern didn’t clear a band. Charges categorized under Transfers or Food & Dining, on an excluded account, or on an account named as an investment account are never scanned. Otherwise the series is short of the band’s minimum, its gaps are too uneven, or the amount swings too much for an annual band. Check the category on Transactions, or add the commitment with + Commitment on Recurring.

A commitment’s Type reverts to Income after a sync.

Section titled “A commitment’s Type reverts to Income after a sync.”

Income, transfers, and card fees are fixed by the transaction itself. A Type change on one of those rows saves, but the next scan restores the detected kind. The parent-category mapping can’t move them either.

An Irregular card has no Yes button, only the picker.

Section titled “An Irregular card has no Yes button, only the picker.”

The detector couldn’t guess a cadence: too few charges, or gaps too scattered to fit a band. Pick a Cadence and an anchor day, then click Save.

A likely commitment turned possible, or disappeared.

Section titled “A likely commitment turned possible, or disappeared.”

Its next expected date passed without a charge. Past the cadence’s cutoff it reads possible; further past it, it is dismissed and moves to Dismissed commitments under the ⋯ menu, where Confirm recurring restores it. If the charge is simply late, the next one that posts brings the series back on its own.

Does a dismissed series come back after a Rescan?

Section titled “Does a dismissed series come back after a Rescan?”

No. The dismissal is replayed on every scan, so the series stays in Dismissed commitments until you open it there and click Confirm recurring. Dismissing a candidate from the strip and marking a commitment Not recurring are the same action.

No. Cadence, regularity, and the score are rules on your own transactions. AI adds two things: classifying merchant names Taiga Finance hasn’t seen, which widens the known-recurring list, and naming the card behind an annual fee. With AI off, the list Taiga Finance ships still applies.

Does editing or splitting a transaction move it out of a series?

Section titled “Does editing or splitting a transaction move it out of a series?”

No. The detector measures the posted date, not the date you edit, and it reads a split transaction as its original charge. A category change does matter: a charge moved under Transfers or Food & Dining leaves the scan, and the newest charge’s parent category decides the series’ kind.

No. The gap windows, minimum counts, and weights are fixed. What you can change is the outcome: confirm or dismiss a candidate, set an Irregular one’s cadence, remap a category’s kind, run Rescan, or unmark a charge.