Import a bank statement PDF into Wave: file formats, CSV layout and tie-out

You have bank or card statements as PDFs and the books are in Wave (waveapps.com). Maybe the bank connection only reaches back so far, or the account was never connected. This guide covers what Wave's statement upload will read, how to get each PDF into that shape, and how to check every month before it goes in.

Can Wave import a PDF statement directly?

No. Wave's help center says: "Wave does not support PDF files for transaction uploads" (Wave: what to do if Wave can't read your statement in CSV format). Each PDF has to become one of the file types below first.

What Wave's upload accepts

  • Wave lists Microsoft Money (.OFX), QuickBooks (.QBO), Quicken (.QFX) and Simply Accounting (.ASO). If your bank offers none of these, Wave also accepts CSV, but calls it "a more complex option" and recommends the other four where possible (Wave: upload bank and credit card statements).
  • If an OFX, QBO, QFX or ASO file shows "Wave needs you to make a small change to your file so we can read it", Wave says to open the file in a text editor and switch the encoding line: ENCODING:USASCII to UTF-8, or UTF-8 to USASCII, then save and upload again (Wave).
  • A spreadsheet saved as .XLS has to be re-saved as CSV (comma delimited) (Wave).
  • The statement must be in the same currency as the Wave account you import into (Wave). A file with more than one currency needs splitting into one CSV per currency (Wave).
  • The Wave articles we read (25 Oct 2026) don't state a file-size or row limit. If a long file fails, one statement-month per file is the simple fallback, and it is easier to check anyway.

The CSV layout Wave reads

All of these come from Wave's CSV troubleshooting article (Wave) unless marked otherwise.

  • Three or four columns: date; amount, either in one column or as one column each for deposits and withdrawals; and description. If a file with separate deposit and withdrawal columns won't upload, move the amounts into a single column.
  • No extra columns. A file with more than four columns can fail with "Wave is having difficulty reading the file you uploaded". Keep date, amount and description and delete the rest, including running balance and category columns. Wave also says a row of balance totals can cause a generic error, so remove it.
  • One date column, year first. Two date columns (for example transaction date and posting date) cause a date error, so delete one. Wave lists YYYY/MM/DD or YYYY-MM-DD, with the month as a number, a full name or a 3-letter name, and says dates can't be in the future. A bank export in MM/DD/YYYY needs converting first.
  • Amounts as numbers. Use a minus sign or brackets for negatives. No symbols other than the currency symbol, and the currency symbol can't come after the amount. The symbol doesn't set the currency; the payment account does.
  • Credit cards run the other way: purchases must be positive and payments negative. See credit card statement PDF to CSV for the sign rules.
  • A description column with words. It may be empty, but if it has text it can't be numbers only.
  • Headers at the top, no blank rows or rows without transaction information, and a short file name such as month-year-account.csv (Wave says a long file name can cause an error).
  • Wave offers a CSV template to compare your file against (Wave: upload a statement in .csv format).

Starting from a PDF, the extraction steps are in how to convert a bank statement PDF to CSV. If you'd rather upload a .qbo file, see convert a PDF bank statement to a QBO file.

1. Tie out each month before you upload

A successful upload only means Wave could read the file. It doesn't show that every transaction on the statement made it into the file. Check each statement-month first:

  1. Opening balance + deposits − withdrawals = closing balance, using the figures printed on the statement, to the cent.
  2. Compare your totals with the statement's summary box (total deposits, total withdrawals) so you know which side is short if it misses.
  3. Chain the months: each closing balance equals the next statement's opening balance.
  4. Spot-check the first and last days of the period and the largest few items against the PDF.

The full method, with a worked example, is in check a bank statement PDF is complete before you import it. Our free tie-out checker runs in your browser and shows the row where a CSV stops balancing.

2. Avoid duplicates with a connected bank account

  • Automatic bank imports are part of Wave's Pro plan. When you connect, Edit date sets how far back to import; Wave says that depending on your bank you may be able to import up to 18 months, and that older transactions can come in by uploading statements (Wave: import transactions by connecting a bank account).
  • Wave's list of duplicate causes covers reconnecting with a start date that overlaps transactions already imported, connecting the same account twice, and manually recorded invoice or bill payments or receipts that auto-update hasn't merged yet (Wave: resolve duplicate transactions). Wave's auto-merge matches a manually recorded payment or uploaded receipt with an imported transaction of the same account and amount (Wave).
  • The Wave articles we read don't say that an uploaded statement skips transactions the bank connection already brought in, so don't rely on it. Upload only the months before the connection's start date, and end the last file the day before the first transaction the connection imported.
  • If duplicates do get in, Wave lets you merge two transactions at a time on Accounting → Transactions (web version only), with a warning if the merge affects a completed reconciliation period (Wave: manually merge transactions).

3. Upload the file

  1. The Wave account must already exist. If it doesn't, add a payment account under your Chart of Accounts first (Wave).
  2. On the left-side menu, go to Accounting → Transactions, then More → Upload transactions.
  3. Choose the file and pick the Payment account the transactions belong to, then Upload.
  4. On Select date, pick the date column. Wave's guidance: the transaction date for a bank statement, the posting date for a credit card statement. Then Confirm date.
  5. On Select amounts, pick the amount column (for a checking account, the column with deposits; for a card, the column with charges), then Confirm amounts.
  6. On Select description, pick the description column.
  7. On Confirm import, check the highlighted columns, then Upload my statement. The transactions appear on the Transactions page (Wave; Wave).

Upload months oldest first. Wave says transactions from statement uploads are not automatically categorized (Wave), so plan time to categorize them.

4. Reconcile each month to its statement

  • Reconcile one statement at a time to its closing balance. The tie-out you did before uploading should make this quick.
  • Wave says a reconciled period can become unreconciled if a transaction in it is later edited or merged. To fix one, compare the transactions in Wave with the bank statement for the same period, and add missing ones, merge duplicates or correct the closing balance as needed (Wave: fix an unreconciled period).

Using LedgerReady files in Wave

  • Plain CSV: it has five columns: Date (YYYY-MM-DD), Description, Amount (one signed column), Running Balance and Category. Date format and the single amount column match what Wave lists, but Wave asks for three or four columns, so delete Running Balance and Category before you upload, then map date, amount and description in Wave's steps.
  • QBO file: Wave lists .QBO as an accepted type. We haven't tested our .qbo files in Wave; if Wave shows its encoding message, use the encoding fix above.
  • Xero CSV: don't use it for Wave. Its dates are DD/MM/YYYY, which is not a format Wave lists.
  • For card statements, check the signs against Wave's rule (purchases positive, payments negative) before you upload.

Other formats compared: QBO vs CSV vs OFX.

Using Zoho Books? See importing a bank statement PDF into Zoho Books.

Where LedgerReady fits

If you'd rather not convert and check each month yourself, LedgerReady turns digital statement PDFs into a QBO file, a Xero CSV, a plain CSV and a tie-out sheet showing every month matches its opening and closing balance. It costs $15 per statement-month, and we aim to deliver within 12 hours. Tie-out guarantee: if the output doesn't reconcile to the statement's opening and closing balances and we can't fix it, you don't pay for that statement.

Skip the manual work

We turn statement PDFs into QBO, Xero and CSV files plus a tie-out sheet. $15 per statement-month, $149 for a 12-month catch-up. Prefer to check it yourself? Our tie-out checker runs in your browser. See how pros do catch-up.

Try your first statement free

Bank menus change; labels here were accurate to our knowledge in Oct 2026, so check your bank's help pages if something differs.