Jul 16, 2026

Housekeeping

This update was all about cleaning up and housekeeping. There’s been a looooot of tidying up around here.

Oh, also, over 10 000 businesses are now on stub. Not exactly a new feature, but we’re totally celebrating the many awesome people hustling on stub every day. High fives to all you who make it happen.🥂


Improvements

Sync: Instead of waiting for the entire universe to update every time you click sync, each bank account or app updates individually. No more all-or-nothing fingers crossed syncing.

Performance: Optimized database queries, logging pipelines, and memory pools so stub is screamingly fast and rock-solid under pressure.

Transactions: Upgraded our cache architecture to guarantee you’re always seeing the freshest real-time data across the app.

Accounts: Standardized foreign currency journal imports so they match up by account name instead of codes.


Fixes

Bank Accounts: Fixed an issue where PDF and CSV statement imports would abruptly stop at the 15th of the month.

Invoices: Resolved a random condition that could occasionally drop line items from fresh invoices.

Invoices: Fixed a double-counting bug on deleted or voided invoice balances.

Transactions: Prevented duplicate bank account creations and resolved an issue where deleted duplicates would creepily reappear. 💀

Bank Accounts: Stopped a scenario where some bank syncs would silently drop or delay transactions.

Bookkeeping: Prevented uploaded bills from accidentally categorizing themselves as outbound invoices.

Chart of Accounts: Fixed a bug where setting an expense role to "None" would stubbornly revert back to "Cost of Sales".

Payments: Swept away sub-cent FX rounding residue that was getting split payments stuck in limbo.

Security: Fixed an issue where one-time PINs (OTPs) weren't sending.

Team: Business owners can now leave a business without getting trapped in a loop that sometimes pulled them back, like it was Hotel California.