Wave is one of the few accounting tools that still gives real bookkeeping away for free, which is why a lot of freelancers and small shops land on it. The catch shows up fast: the automatic bank connection is unreliable and often plain unavailable. Some banks never link. Others link for a week and then silently stop pulling transactions. Wave's own bank feed sits behind a paid tier in many regions, and even when it is offered, the connection can drop without warning.
That leaves the manual CSV upload as the route that actually works. It costs nothing, it works with any bank, and once you have a clean file it takes about a minute. The only real work is getting your transactions into the exact shape Wave wants before you upload.
What Wave actually accepts
Wave imports CSV, OFX, QFX, and QBO files. It does not read PDF. If your bank hands you statements as PDFs (most do), you cannot drag that file into Wave and expect anything to happen. You have to produce a CSV first.
The CSV Wave wants is refreshingly plain. Three columns cover it:
- Date for each transaction
- Description of what the transaction was
- Amount, where money out is negative and money in is positive
Wave can work with a separate debit and credit column layout too, but the single signed Amount column is the cleanest and the one that maps without fuss. If your file already has that, you are most of the way there. A Balance column, if it comes along, is harmless. Wave just ignores columns it does not need during mapping.
Getting a clean CSV out of a PDF statement
This is the step that trips people up. Copying rows straight out of a PDF and pasting them into a spreadsheet almost never works. The columns collapse into one, the date fuses with the description, negative signs vanish, and you spend forty minutes fixing a statement by hand. Do that across a year of statements and the free plan stops feeling free.
A converter that reads the PDF layout is the shortcut. ConvertFin takes a PDF statement and gives you back an Excel or CSV file with the columns already separated into Date, Description, Amount, and Balance. Card statements without a running balance simply leave that column blank, which is fine because Wave does not use it anyway.
One detail matters more than usual with Wave, since Wave users tend to be handling their own finances rather than a client's. ConvertFin parses the PDF entirely in your browser using pdf.js. The file never gets uploaded to a server. Your statement, with your account number and every transaction on it, stays on your own machine. If you want the specifics of how that works, the security page lays it out.
Be honest with yourself about one limitation before you start. This only works on PDFs that contain real, selectable text. Open your statement and try to highlight a line with your cursor. If the text highlights, you are good. If it behaves like a photo and nothing selects, the statement is a scanned image, and a text-based converter has nothing to read. That is common with statements you photographed or with older paper statements someone scanned. In that case you need OCR, or better, a fresh PDF downloaded straight from online banking, which is almost always real text. There is no OCR built into ConvertFin, so a scanned image will not convert cleanly.
ConvertFin reads the page layout rather than a fixed template per bank, so Chase, Bank of America, Wells Fargo, Capital One, Citi, Amex, US Bank, and PNC all come through the same way. The convert bank statement to CSV page walks through the conversion itself if you want to see it before committing a file.
Uploading the CSV into Wave
Once you have the CSV, the Wave side is short.
Log in and open the business you are working in. Go to Accounting, then Transactions. Near the top you will find an Upload a bank statement option (in some Wave layouts it sits under a More or upload icon on the Transactions screen). Pick the account the transactions belong to, whether that is a checking account, a credit card, or cash, then choose your CSV file.
Wave then shows a column mapping screen. This is where a clean file pays off. You tell Wave which column is the date, which is the description, and which is the amount. If your converter gave you a single signed Amount column, choose the option for one amount column with positives and negatives together. If you happen to have separate debit and credit columns, point Wave at each one.
Watch the date format. If your statement writes dates as DD/MM/YYYY and Wave assumes MM/DD/YYYY, every transaction from the 13th onward will either error out or post to the wrong day. Set the format to match what is actually in your file. Preview a few rows, confirm the amounts have the right sign, and import. The transactions drop into your Transactions list, where you categorize them the same way you would categorize anything from a live feed.
Fixes for the usual upload errors
Most failed Wave imports trace back to a messy CSV rather than anything wrong with Wave.
- Wave rejects the file or reads no rows. There is usually a header block, a bank logo line, or an account summary sitting above the real transactions. Delete everything above the first transaction row so the data starts clean.
- Amounts import as zero or as text. Currency symbols and thousands separators confuse the parser. Keep numbers plain, so
1250.00, not$1,250.00. - Everything imports as a deposit, or every sign is flipped. Your Amount column is not signed the way Wave expects. Confirm money out is negative before you upload.
- Dates land in the wrong month. Fix the date format on the mapping screen, and make sure no row is missing its date.
- Blank rows in the middle break the import. Page breaks and subtotal lines sometimes slip in. Clear those rows first.
Almost every one of these disappears when the starting CSV is already clean, which is the whole argument for converting the PDF properly instead of scraping it by hand.
The short version
Wave's free plan is genuinely useful, but you often cannot lean on its bank feed, so the manual upload is not a fallback, it is the main road in. Convert your PDF to a plain Date, Description, Amount file with ConvertFin, check the columns and the signs, then upload it under Transactions and map the fields. Whole thing takes a couple of minutes per statement once you have done it once.
If you also keep books in another tool, the same clean CSV works there too. The companion guide on importing a bank statement into QuickBooks covers that flow, and the conversion step is identical.
