Get a bank statement into Xero when there is no feed
Upload the PDF, get a clean CSV you can import into Xero. Any bank, any language, scanned or digital — with every row checked against the statement’s own balances before you download it.
5 free conversions, no signup, no credit card.
When a bank feed isn’t an option
A direct feed handles the easy months. These are the ones it doesn’t.
The bank isn’t covered
Smaller banks, credit unions and non-US/UK banks often have no feed and no statement extraction. A PDF is all you get.
The history is too old
Feeds reach back a limited period. Catch-up work, a first-year cleanup or a closed account leaves you with PDFs only.
The client sends PDFs
Whatever your workflow is, the client emails a PDF. Re-keying it by hand is where the hours and the transposed digits come from.
How it works
Upload the PDF
Drag in the statement — digital, scanned or photographed. There is no bank to pick from a list and no template to configure first.
We extract, then check the extraction
We parse the statement — and where the layout isn’t one we already handle, an AI pass reads it directly. Either way the reconciliation gate then re-derives the running balance and confirms each row agrees with the statement’s own figures.
Review the preview
You see the rows and the reconciliation result before anything is downloaded. Anything that did not reconcile is marked, not hidden.
Download the CSV and import it into Xero
Export as CSV, then use Xero’s own bank statement import and map the columns as part of that flow. The file is yours — we never touch your Xero account.
Why the numbers can be trusted
Reconciled, not guessed
The risk with any AI extraction is output that looks right and isn’t — and a wrong figure imported into Xero surfaces weeks later as a reconciliation that won’t close. So every row is checked against the statement’s own running balance: balance + previous amount = previous balance. If any row fails, the download is marked UNVERIFIED in the filename and carries a warning line inside the file.
The engine reads layouts, so an unusual bank is the normal case.
A scan must also match a printed opening or closing balance, not just chain internally.
Never written to disk. API, database and AI step all run in the EU.
On our reference statement — a real 743-transaction Handelsbanken PDF — all 742 balance checks pass. That is one statement’s result, not an accuracy rate for every bank, and we would rather show you the preview than ask you to take a number on faith.
Questions
Does this connect to Xero directly?
No — and we would rather say so plainly than imply otherwise. There is no Xero integration and no bank feed. You upload a PDF, we give you a clean CSV or Excel file, and you import that file into Xero yourself using its bank statement import, mapping the columns as part of that flow. Nothing touches your Xero account.
My bank isn’t on my current tool’s supported list. Will this work?
That is the case this page exists for. We do not work from a list of supported banks: where a statement’s layout isn’t one we already handle, an AI extraction pass reads it directly, so an unusual bank, a small credit union or a foreign bank is the normal case rather than an exception. If a statement does not reconcile, we tell you instead of handing you numbers that look plausible.
What file formats do I get?
Excel (.xlsx) and CSV on the free tier. JSON, OFX and a Fortnox-style CSV are Pro. For Xero, CSV is the usual choice. We do not produce a native .qbo file — that needs an Intuit-issued identifier we don’t have.
How do you know the numbers are right?
Every extracted row is checked against the statement’s own running balance: each balance, plus the previous amount, must equal the previous balance. If any row fails, the download is marked UNVERIFIED in the filename and carries a warning line inside the file itself — never handed over as if it were clean. On our reference statement, a real 743-transaction Handelsbanken PDF, all 742 balance checks pass. That is one statement’s result, not an accuracy rate for every bank.
Will it read a scanned or photographed statement?
Yes, and scans are held to a stricter standard than digital PDFs. A scan goes through the same reconciliation check, and on top of that we require a printed opening or closing balance to anchor it: a scan that merely chains internally, with no printed endpoint to check against, is marked as needing verification rather than passed. A scan’s text layer can hide dropped rows at the end, and internal consistency alone would not catch that.
Can I get the rows oldest-first for import?
Yes, and it is exact rather than a date sort — we reverse the statement’s own order, which preserves the sequence within a day that a date sort would scramble. Most accounting imports want oldest-first.
What happens to my file?
It is processed in memory and never written to disk. Conversion data is held only long enough to build your download and is dropped within minutes. The whole data path — API, database and the AI extraction step — runs in the EU.
Try it on a real statement
Five free conversions, no signup. Check the reconciliation preview before you download anything.