July 4th, 2026
This one is for the things you've been asking for the longest. Reviewing imported transactions no longer lives on a separate page, it happens right inside the register. And goals have been rebuilt from the ground up to be far more flexible: every goal now pairs a schedule with a behavior, so annual bills, spend-as-you-go trips, and top-up buffers each work the way you'd expect. If you set up goals a while ago, it's worth a fresh look, there may be a better fit for what you want now.
New: review happens in the register. The separate pending page is gone. Unapproved imports now sit in an In-Review section at the top of your transactions, split into Pending and Posted, with Approve, Reject, and Unlink available everywhere: row menus, bulk selection, mobile cards, and the action sheet. Editing an in-review row offers Save & Approve in one step, and the "N transactions need review" banner now filters the register down to just those rows, with a clear way back.
See what the bank actually sent. When the import pipeline renames a payee, the original bank text stays one hover (or one tap) away, and unmatched imports show the raw name instead of a blank payee.
Teach payee names from anywhere. Renaming a payee on an imported transaction now offers a "Remember" action, on every surface, so next time the bank's text maps straight to your name.
Your filters apply to the In-Review section too, so a filtered register stays filtered top to bottom.
New: an Untagged option in the tag filter, for finding everything you haven't tagged yet.
β Transactions
Rebuilt: every goal is now a schedule plus a behavior. Pick how often the goal asks (weekly, biweekly, monthly, yearly, by a date, or open-ended), then pick how it counts: Budget another counts what you budget so you can spend along the way, Fill up to tops the category back up each period and lets carryovers count, and Reach a balance tracks the balance itself toward a date.
Annual bills finally behave. A repeating by-date goal now resets every cycle on schedule: whatever is left carries into the next cycle, and once the bill is paid, the next cycle starts asking again. No more "achieved" hangover on money that was always earmarked.
Save for a trip and spend as you go. A by-date goal with Budget another keeps asking the same monthly slice no matter what you spend, so booking flights early doesn't reopen the goal.
Weekly and biweekly goals can now Fill up to, with leftover money covering the earliest weeks first, and monthly funding caps work on them too.
A simpler goal dialog. Frequencies are a clean card grid, each behavior explains itself in a sentence, and a live summary spells out exactly what you're creating before you save.
Honest statuses and a little celebration. Funded means this period's budgeting is done, Achieved means the money is actually there, and a reached goal now celebrates on the card without hiding what the goal is.
Check your existing goals. Everything migrates automatically, but with the new behaviors available, some of your goals may now have a shape that matches your intent better than what existed when you created them.
β Goals (fully rewritten, with worked examples and an FAQ)
New: one Underbudgeted action that fixes everything short. It covers overspending, funds goal asks, and tops up categories with an upcoming bill, in one Ready-to-Budget-constrained pass, with a preview grouped by reason. It's honest when money runs out: partially funded and skipped rows are shown, not hidden. Also available from the command palette.
Upcoming bills count every occurrence. A bill that fires twice in a month now counts twice in the yellow "short for upcoming" math, and scheduled transfers to tracking accounts or loans count too when they carry a category.
The previous month shows its real Ready to Budget. Last month's number no longer hides what folded forward, so budgeting in the past finally adds up.
"Unhide all" on partially hidden groups, one click to bring a group's hidden categories back.
New: reconcile a loan. Enter the real balance from your lender and Zerosum records the adjustment as a proper loan entry, undoable like everything else.
A faster app across the board. The main budget payload is a fraction of its former size, credit-card-heavy budgets compute smoother, and merging many payees is dramatically faster.
File imports got smarter. Re-importing the same QIF/CSV no longer duplicates rows, deleted rows stay deleted on re-import, and imported transactions keep the bank's cleared status.
TWD and HUF display without decimals, matching how those currencies are used.
CSV exports of split children carry the parent's cleared status.
Reconciling closes its dialog on success, accepts a genuine $0.00 balance, and the mobile reconcile sheet's actions are easier to reach.
Thank you for being here. β€οΈ