A budgeting app that has worked for months will suddenly stop importing transactions from one account. The cause is almost never the app's ledger and almost always the connection underneath it.
Two ways data gets in
Older aggregation works by logging into the bank's website with stored credentials and reading the pages a customer would see. This is screen scraping, and it is fragile by design.
Newer connections use a bank's application programming interface, where the institution publishes a structured feed and the customer grants access through a consent screen rather than by handing over a password.
Most aggregators run both, falling back to scraping where no interface exists. A single app can therefore be reliable for one bank and unreliable for another for reasons invisible to the user.
Why scraped connections fail
A scraper depends on the bank's pages staying where they were. A redesigned login flow, a new security prompt or a moved transaction table breaks the parsing until the aggregator updates it.
Multi-factor authentication is the more persistent obstacle. A one-time code sent to a phone cannot be supplied by a background job, so the connection stalls awaiting input.
This is why some feeds refresh only when the user opens the app and completes a challenge, and why they lapse quietly during any period of inattention.
Consent expires on purpose
Interface-based access is granted for a defined period. When it lapses, the aggregator loses permission and the feed stops, even though nothing has changed at the bank or the app.
Reauthorization restores it. The expiry exists so that access a household granted once does not persist indefinitely, and it is a feature of the consent model rather than a malfunction.
Some institutions also let account holders view and revoke active connections directly, which is worth checking when a feed has failed for no apparent reason.
Why history gaps and duplicates appear
When a connection is restored, the aggregator refetches a window of recent transactions. Items already in the ledger can reappear if the bank has changed their identifiers during settlement.
Deduplication relies on matching amount, date and descriptor. A pending charge that settles at a different amount can therefore survive as two entries in the app's records.
The reverse gap happens when the outage exceeds the refetch window. Transactions older than that window are never pulled, and the missing days have to be entered by hand.
What this means for the records
An aggregated ledger is a copy, not the account itself. Its accuracy depends on a chain of systems the household does not control, and reconciliation against the bank statement remains the only check.
The practical consequence is that categories, balances and trends drawn from an app should be treated as approximate until the period has been reconciled against a statement.
Most households discover this only when a tax or loan question sends them back to source documents, at which point a long-broken feed becomes a visible hole in the year.