Some bills don't fit a monthly cadence. An Amex annual fee, vehicle registration, a CPL renewal every 5 years, a passport every 10 years — these are real expenses that can wreck a single month's budget if you forget about them. Annual Events make them visible without polluting every month's recurring lineup.
Where to find it
Annual Events lives in its own page under Tools → Annual Events (or the Annual Events entry under Budgeting in the mobile More drawer). It used to be a right-rail panel on the Calendar — same data, just promoted to its own surface so it's easier to find and manage.
The Calendar still shows annual events on their occurrence days, and tapping one on the calendar grid opens the same editor.
Sorting and searching your renewals
The list is a table you can sort. Click any column header — Name, Next due, Amount, Category, or Repeats — to sort by it, and click again to reverse. It opens sorted by what's due soonest, which is usually what you want.
Sorting by Amount is the fast way to find the renewals worth planning for: a $949 vehicle registration deserves a sinking fund, an $80 club membership probably doesn't.
Use the search box to find a renewal by name or category, or the category dropdown to see just one bucket's renewals.
On a phone the table becomes a card list, with a Sort by dropdown and a direction button above it.
What the total means
Under the table you'll see Next 12 months — the total of the renewals currently shown that actually fall due between today and a year from now. It follows your search and category filter: narrow the list to one category and the total narrows with it, so it always matches what's on screen.
Multi-year renewals only count in the years they land. A passport that renews every ten years for $130 doesn't add $130 to this year's total; it shows up in the year it's actually due. That's deliberate: the number is meant to be what you need to set aside over the next twelve months, not an average.
Renewals with no amount saved are listed separately next to the total, so you can see the figure isn't counting them.
Add an event
Tap Add event at the top of the page. You'll set:
- Name — what to call it (e.g. Vehicle Registration, Amex Platinum Annual Fee, Passport Renewal).
- Amount (optional) — the dollar cost of the renewal.
- Month + day — the calendar date the renewal hits.
- Repeats — Yearly, Every 2 years, Every 3 years, Every 5 years, or Every 10 years. For multi-year intervals, also set Next renewal year so BudgetLabs knows which year to start the cycle on.
- Budget category — the expense bucket the renewal hits. Required for the Apply-to-budget chip to work on the Dashboard. Legacy events without one get a small "Set category" pill on each occurrence; tap to edit and set one.
- Notify me (optional) — 3, 7, 14, or 30 days before the renewal date.
The list sorts by the next actual renewal date and shows a year-aware countdown: in 7d, in 3mo, in 4y 1mo. A 5-year event won't clutter every May on the calendar grid — it shows up only in its real occurrence years.
Apply a renewal to your budget
When the renewal month arrives, open the Dashboard for that month. The linked category's row shows a small amber chip — "🔔 +$155 CPL Renewal". Tap it to bump that month's planned amount by the renewal amount.
The chip disappears and stays gone, even after a hard reload — so you won't double-count. If you ever want to undo, just edit the planned amount on the category row directly.
Log the payment when it's due
Next to the amber chip, a green Log it button appears on the same category row. The two aren't the same action:
- The amber chip only adjusts your plan — it bumps the category's planned amount so the budget expects the expense. It doesn't record that you actually paid anything.
- Log it records the payment. It opens the transaction form already filled in with the amount, category, date, and description from the event — review or adjust anything, then save.
The transaction form also includes a checkbox, checked by default, to add the same amount to that month's plan in the same step — so one tap covers both the plan bump and the real transaction. Uncheck it if you'd rather leave the planned amount alone (for example, if you already applied it earlier).
Either way — auto-linking a matching transaction, tapping the amber chip, or using Log it — the reminder stops showing up on the Dashboard for that cycle once you've handled it.
Where annual events show up
A single annual event surfaces in three places once you've configured it:
- The Annual Events page — the management list, sorted by next renewal.
- The Calendar — on its actual occurrence day, with a tap-to-edit shortcut.
- The Bills page — once the renewal month is close, the event joins the Pay-on-time queue in the Bills view alongside recurring categories, debt minimums, and one-off bills.
What it's good for
- One-time-feeling-but-recurring expenses — annual subscriptions, insurance premiums, professional license renewals.
- Multi-year renewals — passports (10 years), CPL / concealed-carry permits (often 5 years), driver's license renewals.
- Big once-a-year line items — holiday gifts, vehicle registration, an annual donation. Schedule it, link it to a category, and the Dashboard chip handles the rest in that month.
Auto-link: the event dismisses itself
When you add a transaction that matches an annual event — same budget category, an amount close to the event amount, and a date within the event's expected window — BudgetLabs links the transaction to the event automatically.
When that happens:
- The linked category row on the Dashboard shows a Fulfilled badge, and the "+$X — name" Apply chip hides itself (no need to tap Apply; the event is already covered).
- If the auto-link is wrong, tap Not this reminder on the Dashboard badge to clear the link and reset the chip for manual use.
This is entirely automatic — no action required on your part. The most common case is paying a registration or subscription fee and having the annual-event reminder quietly mark itself as handled.
Link a payment manually
Auto-link only fires for a fresh transaction landing close to the expected amount and date. For a payment that doesn't fit that window — you recorded it weeks ago, it's a partial payment, or the amount is genuinely different from what you budgeted — open the event and link it yourself.
Every event's editor has a Payments section, one per due cycle. It shows the cycle's current status — Nothing linked yet, Partially paid, or Fully paid — and any transactions already linked. Tap + Link a transaction, search by description or widen the date window (30 to 365 days), and pick the right row.
You're not limited to one transaction per cycle. Link a second payment toward the same renewal and the status updates against the running total — useful for a fee you paid in two installments, or for retroactively linking history from before this feature existed. Unlinking a transaction drops the status back down rather than getting stuck on Fully paid.
There's a shortcut if you're already looking at the transaction instead of the event: on the Dashboard, every transaction row has a small link icon. Tap it and search for the annual event (or any bill) it paid — same result, opposite starting point, no need to open the event first.
This same Payments panel and picker are also on the Bills page, so a recurring bill, a debt minimum, or a one-off bill can be linked to its paying transaction the same way — not just annual events.
Related
- Calendar View — annual events also render on the calendar grid on their occurrence days.
- Bill Reminders — annual events feed into the Pay-on-time queue once they're close to due.
- The Dashboard — the Apply-to-budget chip surfaces here in the renewal month.
- Categories — every annual event must link to a category so the Apply chip knows which row to bump.