Skip to main content
BankFlow logoBankFlow

Bank statement to Wave

Upload a statement, not a spreadsheet.

Wave takes OFX, QBO, QFX, ASO, or CSV, and recommends anything over CSV. Convert your statement PDF to OFX and upload the format Wave actually prefers.

50 free page credits · No card · Cancel anytime

  • OFX, Wave's preferred route
  • Balance-checked rows
  • Cards and closed accounts

Export transactions

1,284 rows

Format

CSVExcelJSONOFXQuickBooks
DateDescriptionAmount
2025-10-24STRIPE PAYOUT 4af2c9+4,820.00
2025-10-23AWS EMEA SARL−1,204.00
2025-10-22WHOLE FOODS MKT−112.88
1,284 rows · 3 columnsExport OFX

PDF statement you upload

scanned_statement_047.pdfUnstructured

24/10 STRIPE PAYOUT 4af2c9........4,820.00

23-10 AWS EMEA SARL us-east-1 1,204.00-

22 OCT WHOLE FOODS MKT #214 112.88

21/10 UBER *TRIP..............24.40

20-OCT-2025 GUSTO PAY 9931 18,440.00

[illegible: scan quality]

OFX file Wave uploads

transactions_oct.ofxOFX / QBO

<STMTTRN>

<TRNTYPE>CREDIT

<DTPOSTED>20251024

<TRNAMT>4820.00

<NAME>Stripe

<MEMO>STRIPE PAYOUT 4af2c9

</STMTTRN>

<STMTTRN>

<TRNTYPE>DEBIT

<DTPOSTED>20251023

<TRNAMT>-1204.00

<NAME>Amazon Web Services

<MEMO>AWS EMEA SARL us-east-1

</STMTTRN>

… 3 more transactions

Upload under the account's Upload a bank statement
A statement PDF in, an OFX ledger out: one <STMTTRN> block per transaction, typed and signed. Illustrative data.

Wave would rather have a file than a spreadsheet.

Wave's own guidance is to upload OFX, QBO, QFX, or ASO if your bank offers one, and to treat CSV as the more complicated fallback, because a CSV has to be shaped correctly before Wave will read it, and every bank shapes theirs differently. The trouble is that plenty of banks offer none of the four, especially on credit cards and older accounts. What they do offer is a statement PDF.

How it works

From statement PDF to Wave, screen by screen

  1. 01

    Upload the statement

    Scanned, multi-page, and password-protected PDFs all work, up to 50 MB each.

    BankFlow dashboard with the empty state offering a statement upload or an email import address.
    Drop the file in, forward the bank's email to a private import address, or post it to the API.
  2. 02

    Confirm the import

    Review what is queued and decide whether statements carrying warnings still count in your analytics. Nothing is read until you confirm.

    Import dialog with chase.pdf selected, the warning policy listed, and an Import button.
    The warning types that will still count toward analytics are named before anything is extracted.
  3. 03

    Let it parse and reconcile

    Rows are extracted and checked against the statement's own opening and closing balances, so what reaches Wave is a complete month rather than most of one.

    Activity panel showing a Chase statement processing, with the current stage and elapsed time.
    The activity panel names the stage and the seconds elapsed as the statement moves through the queue.
  4. 04

    Clean the descriptions

    Wave categorizes on what the description says, so a narration corrected here is a transaction Wave can place. Fix a whole range in one action.

    Three transactions selected, with the Actions menu open on the category picker.
    Select a range and correct the merchant or description in one pass rather than a row at a time.
  5. 05

    Export OFX

    Choose OFX rather than QuickBooks. Wave reads both, but plain OFX is the one with nothing Intuit-specific attached.

    Export dialog with OFX selected, the field list on the right, and a live preview of the rows.
    OFX and QuickBooks sit side by side in the format list. Either uploads to Wave; the left one is cleaner.

Once you have the file

Uploading the statement to Wave

Wave's upload lives on the account it belongs to.

  1. 1

    Open Accounting, then Transactions

    Statement uploads attach to a specific bank or credit card account, so have that account set up first.

  2. 2

    Choose to upload a bank statement

    Wave accepts OFX, QBO, QFX, and ASO files, plus CSV when none of those are available.

  3. 3

    Select the exported .ofx file

    Pick the account the statement covers, then the file. Wave reads it without any column mapping step.

  4. 4

    Review, then categorize

    The transactions land in Wave's review list, where you assign categories and confirm them into the books.

If Wave reports it cannot read a file, that is nearly always a malformed export from a bank rather than the format itself: a standards-compliant OFX avoids the usual causes.

Why the upload goes in cleanly

The format Wave asks for first

Wave lists OFX, QBO, QFX, and ASO ahead of CSV, and calls CSV the more complex option. The export produces the first of those, standards-compliant.

Balance-checked before upload

Opening and closing balances are reconciled against the parsed rows, so a statement missing a page is flagged before it becomes a total that will not agree.

FITIDs for overlap

Every transaction carries the identifier OFX defines for de-duplication, so uploading an overlapping month adds only what is new.

Descriptions worth categorizing

The merchant is resolved out of the raw card narration and both travel with the row, which is what makes Wave's categorization land on the right account.

The accounts with no download

Credit cards and smaller banks routinely offer no OFX or QFX at all. Every one of them still issues a statement.

Scanned statements handled

Statements that only exist as scans or photographs go through OCR before parsing, so paper archives upload like anything else.

What Wave accepts

Five formats, in the order Wave itself recommends them.

FormatWhere it stands
OFXOpen Financial Exchange, and what this export produces. Typed dates, signed amounts, identifiers.
QBOOFX with an Intuit web-connect header. Wave reads it; nothing here needs it.
QFXIntuit's Quicken variant, only issued by banks in Intuit's programme.
ASOThe Simply Accounting format, still accepted for banks that emit it.
CSVWave's own fallback, and the one it calls more complex: the file has to be shaped right before it will read.

FAQ

Common questions

How do I upload a bank statement to Wave?

Wave accepts OFX, QBO, QFX, and ASO files, and CSV as a fallback. Convert the statement PDF to OFX, open the account in Transactions, upload the file, and Wave reads it without a mapping step.

Can Wave read a PDF statement?

No. Wave's uploader takes OFX, QBO, QFX, ASO, and CSV, so a PDF has to be converted first, which is what this does, into the format Wave recommends.

Why not just use CSV?

You can, and Wave supports it, but Wave itself describes CSV as the more complex option and suggests one of the four file formats where the bank offers it. A CSV has to be shaped correctly; an OFX file carries typed fields and needs no shaping.

Wave says it cannot read my file. What now?

That message usually means the file is malformed rather than the wrong format: banks emit some genuinely broken OFX. A standards-compliant export avoids the common causes, and the balance check catches a truncated statement before you upload it.

Will uploading an overlapping month duplicate transactions?

Each transaction carries a FITID, the field OFX defines for exactly this, so an overlapping upload is matched on the identifier rather than on the amount and date.

Does this work for credit cards?

Yes, and they are the common case. Card issuers are the least likely to offer a downloadable OFX, and card statements convert the same way current-account ones do.

Converting a statement from a specific bank?

Written up for the format each of these banks prints.

Skip the CSV mapping.

Convert the statement, check the balances tie, and upload the format Wave recommends first.