What breaks UK bank feeds in Zoho Books?
UK bank feeds in Zoho Books run on Open Banking. Zoho never sees your banking login; the connection goes through a regulated provider (Token.io for most UK banks) which your bank grants read-only access to your transaction data. That access is built entirely on consent. Consent expires, gets revoked and occasionally gets granted against the wrong account, which is why feeds break.
In practice almost every dead UK feed comes down to one of five causes:
- The Open Banking consent has lapsed (the 90-day problem)
- The bank revoked consent at its end
- The feed shows as refreshed but imports nothing
- Reconnecting duplicated transactions you had already reconciled
- The bank is not supported for feeds at all
Work through them in that order. The first covers the clear majority of cases we see.
Has the 90-day Open Banking consent lapsed?
UK Open Banking consent has always had a shelf life. Under the original PSD2 rules you had to reauthenticate with your bank every 90 days without exception. The FCA softened that requirement in 2022, but in practice Zoho Books still prompts you to renew consent on roughly a 90-day cycle. Miss the prompt and the feed simply stops.
Nothing tells you it has. There’s no failed-sync email; you usually find out when someone opens the Banking module and notices nothing has arrived for a fortnight.
To check and fix:
- Open Banking in the left sidebar of Zoho Books.
- Look at the affected account. A lapsed consent shows a warning or a reconnect prompt against the account.
- Click through to reauthorise. You will be bounced to your bank’s login or mobile app to approve the renewed consent, then returned to Zoho Books.
- Transactions for the gap period should fetch automatically once consent is live again. Give it a few hours before assuming they won’t.
One habit worth adopting: every time you reauthorise, put the next renewal in the calendar about 85 days out. Feeds always seem to lapse mid-month, exactly when the bookkeeping is in full flow.
Did the bank revoke consent at its end?
Sometimes the consent dies at the bank’s end. Common triggers: someone at your business revoked it while tidying up connected services in the banking app, the bank ran a security review, or the account itself changed (switched, renamed or migrated to a new banking platform).
Check the bank side directly. Most UK banking apps list active data-sharing permissions under something like Settings > Open Banking or Manage data sharing. If Zoho’s provider isn’t listed there, the consent is gone at source and no amount of refreshing in Zoho Books will revive it.
The fix is always the same: start the reconnection from inside Zoho Books. The bank cannot push a connection to Zoho; the consent request has to originate from the Banking module.
Why does the feed say updated but import nothing?
This is the most confusing failure mode. The account shows a recent “last refreshed” time, yet no transactions appear. The feed is talking to the bank; the bank is sending back nothing useful.
Three things cause it:
- The consent was granted against the wrong account. If your bank login covers several accounts, the consent screen asks which ones to share. Pick the wrong one and Zoho Books happily refreshes an account with no activity. This is common with personal and business accounts under one login.
- The bank’s API is returning empty responses. Bank-side Open Banking outages happen more often than banks admit. They usually resolve within a day or two.
- The fetch window is wrong. A feed connected with a start date in the future, or after the transactions you expected, will refresh successfully and import nothing.
Compare the “last refreshed” date with the date of the newest transaction actually in the account. A big mismatch points at one of the above. The fix for the first and third is a clean reconnection.
How do I reconnect without duplicating reconciled transactions?
Reconnecting carelessly is how a broken feed turns into a duplicated ledger. Follow this sequence:
- Find your clean cut-off. Open the account in Banking, sort transactions by date and note the date of the last transaction that imported through the old feed.
- Finish what is already in. Categorise or reconcile anything outstanding before the cut-off, so the boundary between old feed and new feed is unambiguous.
- Deactivate the dead feed. From the account’s menu in Banking, deactivate the feed. This stops the fetch without deleting any transactions already imported.
- Reconnect through Open Banking. Add the bank again, complete the consent flow at your bank and at the account-selection step compare actual account numbers rather than trusting nicknames.
- Set the fetch-from date to the day after your cut-off. This single setting is what prevents duplicates. Too early and you re-import everything you have already reconciled.
If duplicates have already arrived, don’t panic. New imports land in the uncategorised list and never overwrite reconciled transactions. Identify the overlap window by date, select the duplicate rows in bulk and delete them. The clean-up is tedious but safe, provided nobody has started categorising the copies.
The exception is when duplicated income has already flowed into a filed VAT return. That is a different and more serious problem. Our guide to Zoho Books VAT return errors with HMRC covers how to correct figures after filing.
What if my UK bank is not supported?
Coverage through Open Banking is good for the major high street banks and the app-based banks, but it isn’t universal. Some building societies, certain savings products and a number of smaller business accounts do not expose the right APIs and will not appear when you search.
Check before assuming: go to Banking > Add Bank or Credit Card and search the exact bank name. Watch for separate personal and business entries for the same bank, because connecting the wrong variant gives you the empty-feed problem described above.
If the bank genuinely isn’t there, you’re in CSV territory, which is workable. One related note: feed coverage differs between accounting platforms, so a bank that fed perfectly into Xero may behave differently here. Checking feed coverage for every account is part of how we run a Xero to Zoho Books migration, precisely so nobody discovers a gap after go-live.
The CSV fallback workflow
Manual statement import is the reliable backstop, whether your bank is unsupported or you just need to bridge a feed outage. Done properly it takes a few minutes a week.
- Export the statement period from online banking as CSV. OFX or QIF also work if your bank offers them.
- In Zoho Books, open Banking, select the account, then choose Import Statement from the account’s menu.
- Map the columns: date, description or payee, reference and the amount. Banks vary here. Some give one signed amount column, others split debits and credits into two columns. The mapping screen handles both, but you must tell it which you have.
- Set the date format to dd/MM/yyyy. This is the step UK users get caught by. The importer won’t warn you if it’s wrong; a transaction dated 04/03 just becomes the 3rd of April and you won’t notice until reconciliation refuses to balance.
- Save the mapping when prompted, so next month’s import is a two-minute job.
Everything downstream behaves exactly as it does with a live feed. Categorisation rules still fire, matching still suggests matches and reconciliation works the same. The feed is just transport.
A feed outage should never stall the whole finance function. When we design Zoho finance setups we assume feeds will occasionally fail and build the statement-import fallback into the month-end routine from day one.
Quick diagnostic checklist
- Is there a reconnect warning against the account in Banking? Reauthorise and stop here.
- Has it been roughly 90 days since you last approved consent? It has lapsed. Reconnect.
- Does your banking app still list Zoho’s provider under data-sharing permissions? If not, consent was revoked bank-side. Reconnect from Zoho Books.
- Does “last refreshed” look current while the newest transaction is weeks old? Wrong account selected or empty bank responses. Deactivate and reconnect, checking account numbers.
- Reconnecting? Set the fetch-from date to the day after your last clean transaction.
- Found duplicates? They sit uncategorised. Bulk delete by date range and check whether any filed VAT period is affected.
- Bank not listed at all? Move to the CSV import workflow and put it on a weekly schedule.
When to stop and get help
A feed that died yesterday is a ten-minute fix. A feed that died six weeks ago, with duplicates half-categorised by three different people and a VAT deadline approaching, is the point where most people should stop and get help, because every further click makes the clean-up longer.
H4Z is a UK-based Zoho consultancy working with clients worldwide. Our Zoho Books service covers exactly this kind of untangling, from a single broken feed to a full rebuild of the banking and reconciliation workflow. If the books are blocked right now, our emergency Zoho developer service puts a senior developer on it within 30 minutes during UK business hours.
Get in touch for a free discovery consultation and we’ll tell you whether this is a quick reconnect or a proper clean-up job.