TL;DR
Wells Fargo Business exports a 5-column CSV with no header row. Columns 3 and 4 are always empty. Strip them, label the remaining three (Date, Amount, Description), and match against Wave’s invoice CSV. Wave’s Amount Due is your source of truth.
What breaks when reconciling Wells Fargo with Wave
This combo is the simplest of the ten, but it has its own gotchas:
The headerless CSV. Wells Fargo Business Online’s default export doesn’t write a header row. Open the file and you’ll see something like:
04/15/2026,4250.00,*,*,DEPOSIT ACME INDUSTRIES CHECK 1042
04/15/2026,-89.99,*,*,POS PURCHASE XYZ OFFICE SUPPLIES
The two * columns are reserved fields that Wells Fargo populates only for certain transaction types (and even then, sparsely). Most parsers choke on the missing header. Add one manually or skip header inference and apply column names by position.
The pseudo-empty columns sometimes have data. For check deposits, column 3 sometimes contains the check number; column 4 is reserved for memo overflow. For ACH, both are empty. Don’t drop them blindly — sample 20 rows and confirm they’re empty in your specific export.
Wave’s free tier export. Wave is free, which means the export is no-frills. You get a CSV with the basic invoice fields. There’s no “include payments” option — payment history is in a separate Sales → Payments report. For full bank-side matching, you need both.
Export the Wells Fargo statement
- Wells Fargo Business Online → Account Activity → pick the account.
- Download Account Activity (button at top-right).
- Format: CSV. (Other options: QFX, OFX, IIF for QuickBooks.)
- Date range: max 90 days per download. For longer periods, run multiple downloads.
- File saves as
Checking <last4> <date range>.csv.
After applying headers, you’re working with 5 columns: Date, Amount, Col3 (often empty / check number), Col4 (often empty / memo overflow), Description. Amount is signed: positive = credit, negative = debit.
Description is uppercase for legacy ACH and check transactions; mixed case for newer Zelle and wire transfers. Normalize to lowercase before matching.
Export the Wave invoice list
- Wave → Sales & Payments → Invoices.
- Filter to the period (use Date Range in the top filter bar; default is
All). - Export (top-right) → CSV.
Columns: Customer Name, Customer Email, Invoice Number, Issue Date, Due Date, Status, Total, Amount Due, Currency, Memo.
Status values: Draft, Sent, Viewed, Partial, Paid, Overpaid, Overdue. For reconciliation, exclude Draft only — everything else is in-play.
For payment-level detail (which payment cleared which invoice), pull Reports → Account Transactions filtered to your bank account. This shows individual payment records.
Match algorithm cheats for this combo
- Apply headers programmatically. If row 1 looks like a date, no headers were exported. Pre-pend:
Date,Amount,Col3,Col4,Description. - Drop the always-empty columns. Compute
Col3andCol4non-empty rates over the file; if both are < 5%, drop them. Keeps the downstream parser clean. - Description parsing per type. Heuristics for Wells Fargo:
- Starts with
"DEPOSIT "→ check deposit. Look for a check number after, e.g.,"DEPOSIT ACME INDUSTRIES CHECK 1042"→ payer ="ACME INDUSTRIES", check# =1042. - Starts with
"ACH CREDIT "→ ACH inbound. Payer name follows. Sometimes appended with" REF# 12345". - Starts with
"WIRE TRANSFER IN "→ wire. Originator info usually present. - Starts with
"ZELLE FROM "→ Zelle. Sender’s Zelle account name follows (often personal name, not business).
- Starts with
- Amount exact + name fuzzy. Match Wells
Amount↔ WaveTotalexactly first. Then fuzzy-match the parsed payer name against WaveCustomer Name(lowercase, strip suffixes). - Check number cross-check. If you extracted a check number from the Wells description, try matching against Wave
Memofield (some clients put the check number there) orInvoice Number(occasional overlap).
Real example
Wells Fargo row (with manually-applied headers):
04/22/2026,3200.00,,,ACH CREDIT GAMMA SOLUTIONS PAYMENT REF# INV-0518
Wave invoice:
Gamma Solutions,billing@gamma.io,INV-0518,04/05/2026,05/05/2026,Sent,3200.00,3200.00,USD,
Parse Wells description: payer = "GAMMA SOLUTIONS", reference = "INV-0518". Normalize → "gamma solutions". Fuzzy match against "Gamma Solutions" → 1.0. Amount exact. Reference exact match against Wave Invoice Number. Confidence: Exact.
Edge cases this combo hits
Check deposits with no payer info. Wells Fargo’s CSV sometimes shows check deposits as "DEPOSIT REF# 47291" with no payer name. Match on amount only and confirm visually. For high-volume rent collection businesses, this becomes the dominant failure mode — invest in physical check stubs or move payers to ACH.
Reversed transactions. If a deposit bounces (e.g., a returned check), Wells Fargo posts the original credit then a debit a few days later with Description = "RETURNED ITEM". Pair the two by amount + payer; treat net as unpaid.
Wave’s automatic invoice numbering. Wave auto-generates invoice numbers like INV-0001, INV-0002, in strict sequence. Clients sometimes type the number wrong in their wire reference — leading zeros dropped, or INV-1 for INV-0001. Try both formats when matching.
Wave’s “Mark as Paid” without payment record. Like FreshBooks, Wave lets users mark invoices paid manually. The Status = Paid and Amount Due = 0, but the bank-side cash event might be missing or late. Don’t trust Status alone.
Multiple bank accounts in Wave. If you have more than one Wells Fargo account in Wave, the Wave-side reconciliation already partitions per account. When exporting the Wells CSV, make sure you pulled the right account number — easy to grab the wrong one when both are checking.
When this combo breaks our tool
The headerless CSV format is auto-detected, but only when the first row clearly looks like transaction data. If you’ve manually added a partial header (just Date,Amount), our parser will treat your header as data. Either add a full 5-column header or none at all.
For high-volume Wells Fargo accounts (> 200 transactions / month), the lack of structured payer info in Description means a non-trivial fraction of inflows fall to “amount-only” matching. Plan for ~10–15 minutes of manual review per month.
If you’re using Wave’s payment processing for invoice collection, Wave automatically marks invoices Paid on the Wave side when the customer card clears. The Wells Fargo deposit hits 2 days later as a Wave-aggregated batch payout. Match against the batch, not per-invoice — the per-invoice cash event already happened in Wave’s books.
Faster way
Drop the Wells Fargo CSV + Wave invoice export into the reconciler on the homepage. Headerless format detection, the empty-column drop, and the description-type heuristics all run automatically.
For background on the basic flow, the bank reconciliation glossary entry covers what you’re doing conceptually.
If you ever outgrow Wave’s free tier and want to evaluate alternatives, the free bank reconciliation software post audits what’s still genuinely free in 2026.