Home › PDF to Xero

Bank statement PDF to Xero CSV

To import a PDF bank statement into Xero, convert it to a CSV with Date and a single signed Amount column (income positive, expenses negative), which are the only fields Xero requires. CSVLedger writes that CSV with Payee, Description and Reference columns and no balance column, in your browser, after reconciling the totals.

Updated October 29, 2026

Xero can import a bank statement from a CSV file when a bank feed is missing or incomplete. CSVLedger turns the PDF into that CSV and checks the totals first.

Free beta: 10 pages per day in this browser.

Built around Xero's import rules

Xero's help article on importing a CSV bank statement says only the Date and Amount fields are required, that income and expenses must be in the same column, and that balance columns should be removed. The Xero CSV export follows those rules:

Full steps: import a bank statement into Xero.

Credit cards in Xero

For a credit card account in Xero, purchases are negative and payments to the card are positive. CSVLedger already uses that sign convention for credit card statements, so the same Xero CSV export works.

Bank-specific download formats

Before converting, check whether your bank already offers the file you need and how far back: US bank statement format guide (Chase, Bank of America, Wells Fargo, Citi, Capital One, U.S. Bank, PNC, Truist, TD Bank (US), American Express, Discover, Chime, Ally Bank, SoFi).

Frequently asked questions

Which date format should I use for Xero?

Use the format that matches your Xero organisation and browser region. Xero lists DD/MM/YYYY, MM/DD/YYYY and YYYY/MM/DD among the accepted formats and asks you to confirm the format during import if it is ambiguous.

Do I need to map columns in Xero?

The first time you import a CSV into a bank account, Xero asks you to assign each column to a statement field (Transaction Date and Transaction Amount are required). Xero remembers the assignment for later imports with the same headers.

Why is the payee different from the description?

Bank descriptions often include store numbers and reference codes. The Payee field gets a shortened version so Xero's matching suggestions work better; the full original text stays in Description.

Is my bank statement uploaded to a server?

No. The PDF is opened and converted by JavaScript running in your browser tab (using Mozilla's open-source pdf.js library). The file is not sent to CSVLedger or anyone else. You can confirm this in your browser's developer tools: the Network tab shows no request containing your file.

How do I know the conversion is correct?

Every conversion is checked against the statement itself: the opening balance plus credits minus debits must equal the closing balance printed on the statement, to the cent. If the statement prints a running balance, each row is checked too, and rows that do not match are highlighted in red. If the check fails you see it before you download anything.