The duplicate-entry problem is the most common complaint about recurring transactions in budget apps. Plaid imports rent on the 2nd. You also entered rent manually on the 1st. Now you have two $1,500 debits and a confused budget. Most apps offer “scheduled transactions” that create real rows — which makes the duplicate problem worse, not better.
The problem with “scheduled transactions”
Most budgeting apps handle recurring transactions one of two ways:
- Auto-generate a transaction row on a schedule (Mint, some YNAB workflows)
- Let you enter them manually and hope you remember (most apps)
Both approaches fail the same way: when Plaid imports the real transaction, you have two rows for the same bill. Option 1 is actually worse — the app put the fake row there.
The result is a transactions list that says you spent $3,000 on rent in May. Your budget numbers are wrong. Your reports are wrong. And you have to go manually delete the fake entry every single month.
The expectation model
LazeeFish uses a different model. A recurring template creates expectations, not transactions. Think of it as a calendar entry, not a bank entry.
- The expectation sits in your “upcoming” list: “Rent · May 1 · $1,500 · Expected”
- When you post a transaction (manually or via Plaid) that matches — same envelope, amount within ±10%, date within ±5 days — it links to the expectation and marks it fulfilled
- The expectation is still one row. The real transaction is one row. No duplicates.
The key distinction: recurring templates are forward-looking expectations. They describe what should happen, not what did happen. Real transactions are what happened. Keeping them separate is what prevents the duplicate-entry problem entirely.
Auto-detection — the part that actually saves you time
The setup is already better than most apps. But the really good part is phase 2: LazeeFish looks at your last 8 months of transaction history and flags patterns automatically.
When it finds 3+ transactions in the same envelope from the same payee at regular intervals (low variance in the gap between payments), it surfaces a suggestion card on your dashboard:
- “Netflix → Streaming · ~$15.99 monthly (6 occurrences) — [Mark as recurring] [Dismiss]”
One click. The template is created with all fields pre-populated from your actual history. Your next Netflix charge will auto-fulfill the expectation. You do nothing.
How to set up a recurring template in 60 seconds
Create the template
Go to Setup → Recurring Bills → New. Name it, pick an envelope, enter the expected amount.
Set the schedule
Pick a frequency (weekly / every 2 weeks / monthly / quarterly / yearly) and an anchor day (the 1st, every Friday, etc.). LazeeFish generates upcoming occurrences automatically from this point forward.
Save
That’s it. The upcoming occurrences appear in your “Upcoming Bills” dashboard widget immediately.
Connect a bank via Plaid (if you haven’t)
Imported transactions will auto-fulfill matching occurrences from this point forward. Set up bank sync →
The fuzzy matching tolerance
The match isn’t exact. Netflix charges $15.49 one month and $15.99 the next. Your landlord cashes your check 2 days late. The matcher uses:
- Amount tolerance: ±10% by default (configurable per template)
- Date tolerance: ±5 days by default (configurable per template)
If you need tighter or looser matching for a specific bill, open the template and expand Advanced match tolerances. A bill with a fixed exact amount (like rent via ACH) might warrant tightening to ±0%. A utility bill with wide variance might need ±25%.
What about skip and unfulfill?
Skip: You’re skipping a month of the gym because you’re traveling. Open the occurrence and mark it skipped. The template stays active and generates the next occurrence on schedule. The skipped occurrence is logged but doesn’t wait for a matching transaction.
Unfulfill: A transaction was linked to the wrong occurrence — maybe the wrong month, or the wrong template entirely. Unfulfill resets the occurrence back to “expected” and leaves the real transaction intact in your transaction list. You can then re-link it correctly or let auto-matching try again.
The upcoming bills dashboard widget
Every time you open your dashboard, a small “Upcoming Bills” card shows the next 5 expected occurrences in chronological order. At a glance: what’s coming, when, and how much. This is forward-looking budgeting — not just a ledger of the past.
Most budget apps show you what you spent. LazeeFish also shows you what’s coming. The difference matters on the 28th of the month when rent, insurance, and three subscriptions are all due in the next 4 days.
A 5-minute setup for a typical household
Here’s a realistic example. Four templates, all set up in about 5 minutes:
- Rent — monthly, 1st, $1,500, Housing envelope
- Gym membership — monthly, 5th, $24.99, Fitness envelope
- Netflix — monthly, 12th, $15.99, Streaming envelope
- Car insurance — quarterly, 1st, $280, Auto Insurance envelope
Done. These four templates give you months of forward visibility. The car insurance one is especially useful — quarterly bills are easy to forget entirely until the charge appears in your account and ruins your budget for the month. Now you see it coming three months out.
LazeeFish is free. Recurring bill tracking is included on every plan, no upgrade required. Create a free account → or see the recurring bills feature overview →
More on recurring bills and budgeting