How to import a bank statement into Wave
Wave doesn't read PDF statements, but it accepts CSV uploads. Convert the PDF statement to CSV with Date, Description and Amount columns, then in Wave open Accounting → Transactions, choose Upload a bank statement, pick the account and match the columns. Withdrawals should be negative if you use one Amount column.
Updated
What you need before you start
You need two things: a CSV of the transactions and a matching account in Wave. Your bank usually gives you a PDF, so most of the work is the conversion.
- The statement as CSV. Wave can’t read the PDF. A CSV with one row per transaction is what it needs.
- A payment account in Wave. Create the bank account under Accounting → Chart of Accounts if it isn’t there yet. You pick it during the upload.
- The statement’s closing balance. You’ll use it to check the import at the end.
On Wave’s free Starter plan, automatic bank connections aren’t included, so statement uploads are how most free users keep their books current. They also cover months before a connection existed.
Step 1: Convert the PDF statement to CSV
Download the monthly PDF from online banking, then convert it. Each transaction becomes one row in the CSV.
- Upload the PDF to bank statement to CSV. Locked PDFs work; the password is used once and never stored.
- Compare the extracted rows with the PDF on screen.
- Download the CSV with a free account.
The file keeps the statement’s own columns, for example Date, Description, Amount and Balance. Some banks print Withdrawals and Deposits in separate columns, and that’s fine for Wave too. The first 5 pages convert free, and a free account gets 5 pages a day. See pricing for larger volumes.
Step 2: Tidy the CSV for Wave
Wave expects a plain table: one header row, then transactions. Open the CSV in Excel or Google Sheets and fix these before uploading.
- Delete everything above the header row, such as the account name or statement period.
- Delete summary rows like “Opening balance”, “Closing balance” or “Total”. Wave would import them as transactions.
- Delete the Balance column. Wave doesn’t need it, and an extra numeric column makes mapping mistakes more likely.
- Check the signs. With one Amount column, money out must be negative:
-84.50. Replace(84.50)or trailingDRmarkers with a minus sign. - Strip formatting from amounts.
1200.00, not$1,200.00. - Use one date format throughout. If you can, use
YYYY-MM-DD, which no software misreads.
Save as CSV (Excel: CSV UTF-8; Google Sheets: File → Download → Comma-separated values).
Wave reads either layout:
| Layout | Columns | When to use it |
|---|---|---|
| Single amount | Date, Description, Amount | Your statement already shows signed amounts |
| Split amounts | Date, Description, Withdrawals, Deposits | Your statement prints money out and money in separately |
Don’t convert one layout into the other unless you need to. Each conversion is a chance to flip a sign.
Step 3: Upload the statement in Wave
The upload starts from the Transactions page. Wave then asks which account the file belongs to and which column is which.
- Sign in to Wave and go to Accounting → Transactions.
- Choose Upload a bank statement. Depending on your screen size it may sit under a More menu next to Add income and Add expense.
- Pick the payment account the transactions belong to.
- Select your CSV file and continue.
- Match your columns to Wave’s fields: date, description and amount (or withdrawal and deposit).
- Review the preview, then confirm the import.
The transactions land in Transactions, usually as uncategorized income or expense. Categorize them, or let your bank rules do it.
Common Wave import errors and fixes
Nearly every failed Wave upload traces back to dates, signs or stray rows. This table covers the usual suspects.
| Problem | Likely cause | Fix |
|---|---|---|
| Upload rejected or no rows found | Title lines above the header, or the file isn’t really CSV | Delete lines above the header; re-save as CSV, not .xlsx |
| Dates land in the wrong month | DD/MM file read as MM/DD | Convert the Date column to YYYY-MM-DD and upload again |
| Rows with month names fail | Dates like 03 Sep with no year |
Add the year from the statement period |
| Withdrawals show as income | Positive numbers for money out | Make withdrawals negative, or use the split layout |
| A transaction for the full balance | Opening or closing balance row left in | Delete summary rows before uploading |
| Amounts missing | Currency symbols, commas or text in the amount | Keep digits, a minus sign and a decimal point |
| Duplicate transactions | Overlapping months, or the same file twice | Delete the extras in Transactions and keep a log of uploaded months |
Year-end trap. Many statements print dates as day and month only. On a December–January statement, rows from early January can pick up the wrong year. Check the first and last rows of every file.
Check the upload against your statement
Wave won’t warn you about a missing row, so do a quick check after each upload.
- Filter Transactions by the account and the statement dates.
- Count the rows and compare with the PDF.
- Add the deposits and subtract the withdrawals. Opening balance plus that net figure should equal the statement’s closing balance.
- If it’s off, compare page by page. Missing rows tend to sit at page breaks or on the last page.
For a cleaner audit trail, keep the original PDF next to the CSV you uploaded.
A monthly routine for freelancers
A ten-minute routine each month keeps Wave current without a bank connection.
- Download last month’s PDF on the same day each month.
- Convert it, delete the balance column and summary rows, and upload.
- Name files
wave-checking-2026-09.csvso you never upload a month twice. - Categorize right away while you still remember each payment.
- For a quarter or a catch-up year, convert up to 10 PDFs in one batch, then upload them in date order.
If you also need the data for your accountant, the same statement converts to Excel. Files are deleted automatically after 24 hours; see security.