Sonomir

Convert PDF bank statement to CSV for Xero

Turn a PDF or scan into a Xero CSV, then review the transactions before importing. If Xero's own PDF import is available for your organisation, try that first.

Bring your file.

  1. Add your file
  2. Check the result
  3. Download

No upload or account needed. Sample downloads are free.

Get more from your statements.

Choose the source before choosing a converter

Start with your bank's own CSV or OFX download for the period. It contains transaction data from the source and avoids reading a PDF. Conversion helps when a client supplies only statements, an account is closed, or the bank no longer offers the older download. It does not connect to a bank feed or replace reconciliation in Xero.

Xero also offers native PDF statement import in US and Canadian organisations, with plan and document restrictions. Check whether that option suits your account before buying a conversion. Its requirements include an English statement, an unlocked PDF and a straight scan. For eligible statements, a separate converter may be unnecessary. Xero's PDF-import guidance was checked on 7 October 2026.

Hubdoc and bank feeds address collection and bookkeeping workflows; this page provides a reviewed file when your starting point is a statement. It does not synchronise Xero or claim to replace your existing document-management service.

What the Xero CSV contains

Choose Xero in the CSV layout selector below the result; this page preselects it. The columns are Date, Amount, Payee, Description and Reference. Dates use DD/MM/YYYY consistently. Amount is signed: purchases and other money out are negative, deposits and card payments are positive. Numbers have a decimal point and no currency symbols or thousands separators.

The statement narration is preserved in Description. Payee and Reference stay blank because the extractor does not separately identify contacts or cheque references. Inventing a contact name could create an unwanted contact in your books. Balances, account numbers, source-page notes and summary rows are excluded from this import layout; keep the Excel workbook or full transaction CSV for those review details.

Each statement gets a separate CSV, including when several PDFs were converted together. Multiple statements download in one ZIP. Import each file into the matching account and currency. The converter does not calculate exchange rates or merge balances across currencies. A partial free preview contains only the rows actually read: finish the remaining pages before importing a full period.

Import and review (instructions checked 7 October 2026)

Use Accounting → Bank accounts, then the relevant account's menu → Import a Statement. Upload the CSV, map its columns if asked, and select day/month/year for these files. Inspect the preview before completing the import. Confirm a payment, a deposit, the row count and the date range, then reconcile in Xero.

These steps and the CSV field rules were checked against Xero's CSV import instructions. They are documentation checks, not a recorded import of a Sonomir file into Xero. The free fictional Xero sample lets you inspect the exact layout before sharing your own statement. No "tested in Xero" claim is made until a real import passes.

If dates land in the wrong month, revisit the selected date format rather than changing the transaction amounts. If an amount has the wrong sign, compare it with the source and your column mapping. If Sonomir says the accounting CSV needs unambiguous dates, use the full transaction table to locate the unclear date; the preset is refused before charging. Repeated imports can overlap existing bank-feed transactions, so review duplicates instead of treating a file as a new statement every time.

Prices, limits and alternatives

A three-page statement with today's two free pages unused needs one paid page: $0.25 at the $5-pack rate or $0.30 at the $3-pack rate, with Xero CSV included. If the free pages have been used, three paid pages cost $0.75 or $0.90 at those rates. The minimum purchase is $3 for 50 credits, and unused credits stay in your wallet. A result processed entirely for free charges 2 credits for CSV once; that purchase covers every CSV layout for the same result. Taxes are shown at checkout.

The tool supports up to 40 pages and 12 selected files per job. The Xero preset splits a large statement before its CSV exceeds 99,999 transactions plus a header. A frequent, high-volume user may prefer an unlimited subscription converter, and ProperSoft offers processing on the user's computer. Sonomir reads uploaded statements with a cloud model; review file handling first.

Matching balances are only an arithmetic check: incorrect descriptions and missing offsetting rows can still pass. The statement review workflow explains what to compare. Prefer PDF to OFX if that is your chosen import format, or bank statement to CSV for the full review table.

What this tool does

Upload a bank statement — the PDF your bank emailed, a scan, or phone photos of the pages — and every transaction comes back as a row: date, description, money out, money in, a signed amount and the running balance. Transactions from every page land in one table, so a twelve-page statement is one list, not twelve fragments to stitch together.

Then comes the part that matters: the tool checks its own work. It adds up what it read and compares the result with the balances printed on the statement. When they agree to the cent, the extracted amounts are consistent with those balances. Offsetting errors can still cancel out, so a passing check is a useful review aid, not proof of accuracy. When they do not, it tells you by how much and flags the rows where the running balance breaks, so you check three lines instead of three hundred.

How the balance check works

Two independent checks run on every statement.

  1. Opening + money in − money out = closing. The opening and closing balances are read from the statement's summary or its first and last lines. If the transactions read in between do not produce the closing balance exactly, something is missing or wrong, and the difference is shown.
  2. Row by row. Where the statement prints a running balance, each one must equal the previous balance plus that line's money in minus its money out. A break points straight at the problem: the flagged row, or the one just above it.

The arithmetic is done in whole cents, never in floating point, so a check cannot pass by rounding. Statements listed newest-first are recognised, and so are card and loan statements, where the balance is money owed and runs the other way.

A passing check shows that the extracted amounts agree with the balances that were read. It cannot rule out offsetting errors, omitted pairs of transactions, or incorrectly read balances. Check dates and descriptions, compare the row count with the source, and review important amounts before importing.

What you get in the spreadsheet

The Excel workbook has three sheets:

  • Transactions — one row per transaction, in the order printed, with the page it came from and a Check column that says why a row was flagged.
  • Balance checks — each check, whether it passed, and the numbers behind it.
  • Statement summary — bank, the last four digits of the account, period, currency, opening and closing balances, totals, and whether it reconciles.

Amounts are stored as numbers, not text, so SUM works straight away. Dates are written as year-month-day when the statement makes the year clear, which sorts correctly everywhere. Choose the full transaction CSV to keep the review columns, or a QuickBooks Online, Xero or YNAB CSV layout for its documented import fields. All layouts share one CSV purchase for the same result. Accounting layouts leave out balances and check notes; each statement has a separate file, and multiple files download as a ZIP.

Upload several PDFs at once — twelve monthly statements, say — and they come back in one workbook with a Statement column, plus a summary row for each.

Text PDFs, scans and photos

A PDF downloaded from online banking often already contains its text. That text is read with its printed column positions before a model turns it into records. This avoids recognising letters and digits from pixels, but the model can still misinterpret a column or a wrapped description.

A scanned statement, or photos of printed pages, is read from the image. That works well on a flat, straight, well-lit page. It struggles with faint thermal-style printing, pages shot at an angle, and folds across the amount columns. The balance check is your safety net here: if a digit was misread, the running balance breaks at that row.

Photos uploaded together are treated as the pages of one statement, in the order you chose them. Each PDF is its own statement.

What it supports, and what it does not

It is built for current, checking and savings account statements, and reads card and loan statements too. It is not built for investment or brokerage statements, where a row is a holding rather than a movement of cash. If your bank locks its statements with a password, enter it when the page asks: the PDF is unlocked in your browser, the password never leaves your device, and only the unlocked copy is uploaded. Without the password the tool cannot open it and will not try to get around it.

It has not been tested against a named list of banks, and this page will not pretend otherwise. Statement layouts vary enormously; what the tool offers instead is a result you can verify. If the checks pass, the extracted numbers agree with the balances read from the source. If they fail on your bank's layout, the job tells you so plainly.

What has actually been tested (6 October 2026)

We compared the model's extracted rows with labelled, fictional statements: separate debit and credit columns, signed amounts, German decimal commas, Indian number grouping, wrapped descriptions, a dense multi-page list, a credit card, scans and phone photos. These are synthetic examples, not a certification for any named bank.

The eight text-PDF cases and two scanned-PDF cases matched every labelled date, description, amount and direction in this run. A photographed statement lost a digit from two transaction descriptions even though its balance checks passed. Review the source rows, especially long reference numbers in photos. Results can vary between runs; this test does not establish an accuracy percentage for your files, mixed-currency support or successful imports into accounting software.

Choose a format for your next step

Compare QBO, QFX, OFX and QIF before importing. The Xero CSV page explains its preset, while password-protected statements covers opening a PDF with your own password. For spreadsheet review, use Google Sheets. Each route uses the same converter; no accounting-app import pass is claimed.

Privacy

Statements are sensitive, so here is exactly what happens. The uploaded file is sent to the reading model and deleted from storage when the job ends, whether it succeeded or not. Only the last four digits of an account number are kept. The transactions you see are stored with your job so the download still works if you come back later; use Delete this result to remove it sooner. Nothing you upload is ever published.

How the free tier works

The first 2 pages a day are free, with the balance checks, and you can copy every row you see. That is enough to see whether the tool reads your bank's layout correctly before you pay anything.

Past that, pages are $0.25 each (5 credits, at the $5-pack rate), and a statement with paid pages gets every download free: Excel, CSV, QBO, QFX, QIF and OFX. With the two free pages still available, a six-page statement costs 20 credits for the other four pages, workbook included. If you have no credits, the smallest purchase is $3 for 50 credits, before any applicable tax; the statement uses $1.20 of it and 30 credits remain. A statement that fits inside the free pages pays only for its download: 4 credits for the workbook, 2 for the other formats, once per job. Credits never expire, there is no subscription, and a job that fails is not charged.

Example result

Your source

Page 1 of a current-account statement (PDF from online banking) Opening balance 1,250.00 02 Mar CARD PAYMENT CITY GROCER 42.35 1,207.65 03 Mar SALARY ACME LTD 2,100.00 3,307.65 05 Mar STANDING ORDER RENT 950.00 2,357.65 Closing balance 2,357.65

Your result
Date        Description                 Money out  Money in  Amount    Balance
2026-03-02  CARD PAYMENT CITY GROCER    42.35                -42.35    1207.65
2026-03-03  SALARY ACME LTD                        2100.00   2100.00   3307.65
2026-03-05  STANDING ORDER RENT         950.00               -950.00   2357.65

Reconciles to the cent: 1,250.00 + 2,100.00 in − 992.35 out = 2,357.65.
Running balance: all 3 printed balances follow from the row before.

Cost: free — one page, inside the daily 2. The workbook download would be $0.20 (4 credits); on a longer statement with paid pages it is included.

How this compares

Where another tool is the better choice, it says so.

DocuClipper

Better thereBuilt for accounting firms: bulk conversion, reconciliation workflows and connections into accounting software. If you convert statements every day, a dedicated platform is the better fit.

Better hereNo subscription. Try your own statement free, see the checked result before paying, and pay per page when you need it — suited to a few statements a month rather than a practice's whole workload.

Your bank's own CSV or OFX download

Better thereFree and exact, straight from the bank's system. If online banking offers a download for the period you need, use that — nothing beats the source.

Better hereWorks when all you have is the PDF: old statements beyond the download window, closed accounts, and statements a client or lender sent you.

Excel's Get Data from PDF

Better thereBuilt into Microsoft 365 Excel on Windows, free if you already have it, and fine for a clean PDF with one tidy table per page.

Better hereIt returns each page's tables separately and does nothing with scans or photos. This joins every page into one list, reads scans, and checks the balances.

Your questions, answered.

Can Xero import a PDF statement without a converter?

Xero documents PDF import for US and Canadian organisations, with plan and document restrictions. Check that option in your organisation first; your bank's own CSV or OFX download is also preferable when available.

Which columns are required for a Xero CSV?

Xero requires Date and Amount. This preset also includes Payee, Description and Reference. The narration fills Description; Payee and Reference are blank because they have not been extracted as separate fields.

Which date format should I choose?

DD/MM/YYYY for the Xero preset. For example, 03/04/2026 means 3 April. Confirm the date-format selection in Xero's preview before importing.

Does the Xero CSV include balance checks?

No. An import CSV must contain transactions only. The checks stay on the result page and in the Excel workbook; inspect them and compare source rows before importing.

Have these files been tested inside Xero?

Not yet. The generated format has automated checks against documented rules, but a real trial-account import remains open. Sample downloads are free and explicitly fictional.

Is it free?

The first 2 pages a day are free, with no account, including the balance checks, and you can copy every row. Longer statements are $0.25 a page (5 credits, at the $5-pack rate), and their downloads are then free. A statement inside the free pages pays $0.20 (4 credits) for the Excel download or $0.10 (2 credits) for CSV, QBO, QFX, QIF or OFX, once per job.

Which banks does it work with?

It reads the layout rather than matching a list of banks, so it is not limited to particular ones — but it has not been tested against a named list either. Try the first two pages free: inspect the rows and compare them with your statement, even when the balance checks pass.

What does it mean if the balance check fails?

The transactions read do not add up to the balances on the statement. The difference is shown, and rows where the running balance breaks are flagged; the problem is almost always on that row or the one above it. Common causes are a faint or folded scan, or a statement layout the tool does not read well yet.

Can it convert a credit card statement?

Yes. On a card statement the balance is what you owe, so purchases increase it and payments reduce it. The check recognises that and reconciles it the right way round.

Does it work with scanned or photographed statements?

Yes, read from the image. Flat, straight, well-lit pages work best. Balance checks show arithmetic consistency, not extraction accuracy. Compare dates, descriptions, amounts and row counts against the source even when every check passes.

Can I import the result into QuickBooks, Xero or another accounting app?

QBO and QFX files are offered for QuickBooks and Quicken workflows, but real imports have not yet been verified here. Quicken officially does not support third-party QFX conversions. Choose a QuickBooks Online, Xero or YNAB layout in the CSV selector, then verify the column mapping, dates and signs in the import preview. The full CSV is a separate review table. There is no direct connection to accounting software.

Is my statement stored?

The uploaded file is deleted when the job ends. The transactions are kept with the job so you can download them later, with only the last four digits of the account number. Choose 24 hours or 30 days before processing, or use Delete this result sooner.

Can you convert a batch for me?

Yes. For a large batch, or statements that fail the check, email hello@sonomir.com with how many statements and pages there are. It is $1 a page with a $20 minimum, quoted before anything is done, and every statement comes back either reconciled to the cent or with the difference explained. Details: https://sonomir.com/done-for-you.

Something else to work on?

Image to ExcelImage & handwriting to textAudio & video to textCitations