Import a Bank Statement into Wave
Wave Accounting lets you upload bank statements manually as CSV or OFX/QFX (it also reads QBO and ASO), which is perfect when a live bank connection is unavailable, drops off, or skips older transactions. Wave itself notes the structured formats are easier to import than CSV, so the cleanest route is to convert your bank's CSV or Excel export to an OFX file first, then upload that, because OFX imports without column mapping, date guessing, or debit/credit clean-up. Here is the full workflow.
Why upload OFX instead of a raw CSV?
Wave accepts CSV plus several structured statement formats (OFX, QFX, QBO and ASO) for manual upload, and its own help docs say the structured formats are easier to use than a CSV. The two are not equal. A CSV is just a grid of text, so Wave has to interpret which column is the date, which is the amount, and whether money out is a negative number or a separate value. An OFX file is structured financial data, dates, amounts, descriptions and a unique ID per transaction are already tagged, so it imports cleanly with nothing to map.
If you have a CSV or Excel export from your bank, you do not have to hand-edit it into Wave's expected layout. Drop it into the converter, get a valid .OFX back in seconds, and upload that instead. Everything runs in your browser, your statement is never sent to a server.
Step 1: Convert your bank CSV or Excel file to OFX
- Download your transactions from online banking as CSV or Excel (XLSX/XLS). A printable PDF statement is not import-ready, so export the data format. If your bank only gives you a text-based PDF, see our PDF-to-QBO guide for extracting the rows first.
- Open QBO Maker and drop the file into the tool.
- Map the columns once, typically Date, Description, and Amount (or separate Debit/Credit columns). The tool previews the parsed rows so you can confirm them before exporting.
- Choose OFX as the output format and download. Wave also reads QFX, so QFX works too, but plain OFX is the simplest choice.
Because the conversion happens client-side, there is no upload step and no file-size queue. Free covers a single file, a full statement with unlimited transactions; Pro adds batch multi-file conversion and saved reusable templates per bank.
Step 2: Upload the file into Wave
- In Wave, open Accounting > Transactions from the left-side menu.
- At the top right, click More and choose Upload transactions.
- Click Choose File and select your
.OFXfile, then in the Payment account field pick the bank or credit-card account the statement belongs to. The statement must be in the same currency as that account. - For an OFX/QFX file, Wave reads the dates, amounts and descriptions directly, so there is no field-mapping screen. For a CSV, Wave adds a step where you match your columns to Date, Description and Amount.
- Review the imported rows, then categorize each transaction so it lands in the right account before reconciling.
If the account is not already in Wave, add the payment account first; manual upload is the fallback for accounts you have not linked to a live bank feed.
If you upload a raw CSV into Wave instead
You can import a CSV directly, but Wave is particular about the data, which is exactly why OFX saves time. If you go the CSV route, make sure:
- Columns: include a Date column, a Description column, and an Amount column. Wave's column-matching step lets you tell it which is which, but all three must be present.
- Amount signing: money out should be negative and money in positive. Mixed or unsigned amounts cause expenses to import as income.
- Descriptions: the description column can be blank, but if a row has a description it must contain words, not only numbers, or Wave may reject the file.
- One header row: remove any bank-added summary rows, running-balance footers, or blank lines above the data, they confuse the column matcher.
- Consistent dates: keep a single, consistent date format throughout the file so every row parses the same way.
Converting to OFX sidesteps all of these, since the format carries unambiguous dates and signed amounts internally, with nothing for you to match by hand.
Avoiding duplicates and reconciling
- Do not double-import: if an account is already connected to Wave by a live feed, uploading a statement that overlaps the same dates will create duplicate transactions. Upload only the gap, or use manual upload for accounts that are not linked.
- Watch overlapping exports: when you export month by month, avoid overlapping date ranges between files so the same transaction is not imported twice. Our guide on avoiding duplicate transactions covers the same principle for any accounting app.
- Categorize, then reconcile: after import, assign each transaction to the correct income or expense account, then compare Wave's running total to your bank's closing balance for the period. They should match once every line is accounted for.
- Validate first: you can sanity-check a generated OFX on our validator before uploading, so a malformed file never reaches Wave.
Quick comparison: OFX vs CSV for Wave
- OFX/QFX, no column matching, unambiguous dates and signed amounts built into the file. Best for clean, repeatable monthly uploads, and the format Wave recommends over CSV.
- CSV, works, but you own the data: correct columns, properly signed amounts, a single clean header, and consistent dates. Fine for one-offs if your export is already tidy.
For anyone doing monthly bookkeeping in Wave, converting once and uploading OFX is faster and far less fiddly than wrestling a CSV through the column matcher. Convert your statement now and upload a clean file into Wave.
Frequently asked questions
Does Wave accept OFX files?
Yes. Wave supports manual upload of bank statements in OFX, QFX, QBO and ASO as well as CSV, and notes the structured formats are easier to import than CSV. OFX imports without any column matching or reformatting.
Can I import a PDF bank statement into Wave?
Not directly. Wave needs structured data, not a printed PDF. Export your transactions as CSV or Excel from online banking, then convert them to OFX and upload that. For text-based PDFs, see our PDF statement guide first.
Where do I upload a bank statement in Wave?
Go to Accounting > Transactions, click More at the top right, and choose Upload transactions. Then select your file and pick the account in the Payment account field.
Will uploading a statement create duplicate transactions in Wave?
It can, if the same dates are already covered by a connected bank feed or a previous upload. Upload only non-overlapping date ranges, and use manual upload for accounts that are not linked to a live feed.
Is my bank data uploaded anywhere during conversion?
No. The conversion runs entirely in your browser. Your CSV or Excel file is parsed and turned into an OFX locally, nothing is sent to a server.