"No accounts found in Xero" — when there was nothing wrong with your Xero
If you pressed Sync Chart of Accounts and were told no accounts were found, nothing was wrong with your Xero organisation. The sync was running, and usually finishing successfully. The screen simply had no idea.
Since our July platform migration, syncing has run as a background job — you press the button, the work is queued, and it completes moments later. But the screen was still written for the old behaviour, where results came back immediately. It received a "job started" reply, found no counts in it, and displayed zeroes. Then it explained those zeroes by telling you your Xero had no active accounts.
That explanation was invented. The app had not checked, and could not have known.
Now the screen follows the job while it runs and shows you the real result: how many records were fetched, created and updated, and what failed if anything did. If a sync is still running you are told it is still running. If the result cannot be read, you are told that instead of being shown a confident number.
This affected every Xero sync control — the chart of accounts, client sync, and invoice syncing — so if you had concluded that Xero integration simply did not work, it is worth another look.
Syncing a selection of invoices now tells you if some were left
Selecting 25 invoices and pressing sync would push the first 10 and then report "Successfully synced 10 invoices to Xero" — with no mention of the other 15, which were never attempted.
The count was accurate and the message was still misleading. It now names what is left, so you know to run it again rather than assuming the job is done.
Why this took a while to spot
Every one of these screens was reporting success. Nothing errored, nothing appeared in a log, and the numbers looked plausible — they were simply zeroes with a reassuring sentence attached.
That is the failure we now design against: a screen that says nothing is wrong is only useful if it is capable of saying something is. Several of the changes in this release exist to make sure a Current screen never again reports a fact it has not actually measured.