Getting the CSV out of Chase
- Sign in at chase.com and open the account.
- On the activity list, look for the download icon or a link worded like Download account activity.
- Pick CSV as the file type and set the date range. Chase lets you reach back a lot further than a bank feed does — that's why file export is the normal route when you're catching up on old months.
- Drop the file above, check the first transaction, download the
.qbo. - In QuickBooks Desktop: Banking › Bank Feeds › Import Web Connect File.
Chase's site design shifts around. If the wording above doesn't match what you see, the thing you're looking for is a download control on the transaction list itself, not in settings.
What a Chase checking export actually looks like
Seven columns, header row on line one:
| Column | Example | What we do with it |
|---|---|---|
Details | DEBIT | A second, independent check on the direction |
Posting Date | 01/05/2024 | The transaction date |
Description | GAS STATION 4471 | The payee line in QuickBooks |
Amount | -45.20 | Already negative for money out |
Type | ACH_DEBIT | Becomes a real QBO transaction type — see below |
Balance | 1954.80 | Used to verify the amounts, not just displayed |
Check or Slip # | 1042 | Becomes a numbered CHECK transaction |
Three things about Chase files specifically
1. That Type column is worth keeping
Chase labels every row: ACH_DEBIT, ACH_CREDIT,
DEBIT_CARD, CHECK, ATM. A QBO file can carry real
transaction types, and those map straight across:
| Chase says | QBO gets | QuickBooks shows |
|---|---|---|
ACH_DEBIT | DIRECTDEBIT | A direct debit |
ACH_CREDIT | DIRECTDEP | A direct deposit |
DEBIT_CARD | POS | A card purchase |
CHECK | CHECK | A check, with its number |
ATM | ATM | An ATM withdrawal |
Most converters throw this away and mark everything DEBIT or CREDIT,
because most banks don't provide it and it's easier to have one code path. Chase does provide
it, so we use it.
2. The direction is confirmed twice, not guessed once
Getting debits and credits backwards is the failure that costs an afternoon at reconciliation, because the file imports cleanly and only the totals are wrong. A Chase export gives us two independent ways to be sure:
- The
Detailscolumn saysDEBITorCREDITin words, next to an amount that's already signed. - The
Balancecolumn means each row can be checked arithmetically — this balance minus the previous one should equal this row's amount, for every row.
When both agree, the results panel says the sign convention was confirmed rather than inferred, and tells you which check proved it. When they disagree, it says so instead of quietly handing you a file.
3. The trailing comma on almost every line
Open a Chase CSV in a text editor and most lines end with a comma:
| Normal row | DEBIT,01/05/2024,GAS STATION 4471,-45.20,ACH_DEBIT,1954.80, |
| A paid check | DEBIT,01/10/2024,CHECK PAID #1042,-1200.00,CHECK,3192.40,1042 |
That's the empty Check or Slip # field, and it's perfectly valid CSV — but a
parser that counts fields carelessly reads it as a broken row. It's a common reason a Chase
file gets rejected somewhere else with no explanation. Here it's just an empty field.
On QuickBooks Online? Try the CSV first
Online reads bank CSVs natively, so you may not need to convert anything. The catch with
Chase is that Online only accepts a three or four column layout and Chase gives you seven —
so you'd delete Details, Type, Balance and
Check or Slip #, and keep date, description and amount in that order.
Full details on what Online accepts.
On QuickBooks Desktop there's no CSV import at all, so converting is the
only way in — and you keep the Type column instead of deleting it.
Chase savings and credit cards
Chase savings exports use the same layout as checking, so they go through the same way — just set the account type to Savings in the settings panel after you drop the file.
Chase credit card exports are a different shape: fewer columns, no running balance, and purchases listed as positive numbers rather than negative. That last one matters, because it's the opposite of a checking account. The converter detects it and flips the signs, then asks you to confirm the first transaction — with no balance column there's nothing to check the arithmetic against, so a human look is the last line of defence.
Other banks
- All six banks compared columns, dates and traps side by side
- Wells Fargo no header row, and the payee column is empty
- Any other bank nothing is hardcoded — the layout is read from the file
Frequently asked questions
Can I import a Chase CSV straight into QuickBooks?
On Online, in principle — but you'd have to cut Chase's seven columns down to the three or four Online accepts. On Desktop, no: there's no CSV import for bank transactions, which is the whole reason this converter exists.
Why does my Chase file end every line with a comma?
The last column is Check or Slip #, empty on every row that isn't a paid
check. An empty final field is valid CSV — some importers just handle it badly.
My Chase download opened in Excel and the dates look wrong now
Excel rewrites dates using your machine's regional settings the moment it opens a CSV, and
again when you save. If you've been through Excel, check one date against the Chase website
before importing. You can also drop the .xlsx here directly —
we read Excel files without the save-back step where
dates get rewritten.
How far back can I export from Chase?
Considerably further than a bank feed reaches — feeds typically pull around 90 days, while the download on chase.com goes back years. That's the usual reason someone converts files instead of connecting a feed: catching up on months that the feed can't reach any more.
Will importing the same Chase statement twice create duplicates?
No. Every transaction in the .qbo carries a unique ID derived from its date,
amount and description, so re-importing an overlapping date range gets matched and skipped
by QuickBooks. Keep the account number field the same each month and the matching stays
consistent.
Is my Chase statement uploaded anywhere?
No. The conversion runs in your browser, and this page ships a Content Security Policy with
connect-src 'none' — the browser itself refuses to let the page make a network
request. Open developer tools and watch the Network tab while you convert; it stays empty.