CSV import

Drag in a CSV.
We'll figure out the rest.

Every US bank exports CSVs. Every US bank does it differently. Our smart column detection handles the difference, so you don't have to learn each bank's format before you can track your money.

chase-checking-2026.csv

847 rows · detected as Chase format

DatePayeeAmount
Apr 18Trader Joe'sGroceries-$84.21
Apr 17ShellGas-$42.10
Apr 15PayrollIncome+$3,200.00
Apr 14ComcastUtilities-$89.00
847 transactions categorized

How it works

Three steps. No spreadsheet wrangling.

Every column gets identified automatically. Review the mapping before you commit — or just click import.
Step 1

Drop the file

Any statement from any US bank. CSV, XLSX, OFX, or QFX.

chase-checking-2026.csv

847 rows · 43 KB

Step 2

We map the columns

Smart column detection identifies dates, payees, amounts, debits, and credits — even when the headers don't use standard names.

Trans DateDate
DescriptionPayee
AmountAmount
Ref #External ID
Step 3

Categories land automatically

Payee learning reuses categories you've set before. New payees stay uncategorized until you decide.

Trader Joe'sGroceries
ShellGas
New Merchant CoNew — needs category

Under the hood

Why ours works when others don't.

Three things our import pipeline does that matter in the real world — where bank CSVs are messy, inconsistent, and sometimes hostile.

Header detection that survives prefix rows

Some banks (looking at you, Schwab and TD) prefix their CSVs with account-info rows before the real header. We scan the first 15 rows to find where the real columns start.

Sample-value sniffing

Columns literally named 'Trans' or 'Ref' get the right role because we look at what the values actually are — dates parse like dates, amounts parse like amounts, tickers match ticker patterns.

Sign-flip toggle for weird conventions

Some banks export debits as positive numbers. Flip the sign with a single toggle — with a 2-row live preview so you can confirm the direction before you commit.

Your file never leaves the browser until you confirm.

Parsing happens entirely on your machine. You review the parsed rows, you choose what to import, and only then do any transactions make the trip to Verdant. Nothing goes to a third party — no OpenAI, no scraper, nothing.

File formats

Four formats. One pipeline.

Whatever your bank exports, it probably lands here.

CSV

Every US bank exports them. Comma, semicolon, or tab delimiters all work.

XLSX

Excel exports straight from your bank's web portal. First sheet is used.

OFX

Open Financial Exchange — used by Quicken and older bank portals.

QFX

Quicken's variant of OFX. Same parser, pre-mapped for Quicken's schema.

Indicator-mode CSVs (Dr/Cr columns, as used by Navy Federal and some credit unions) are detected automatically — no toggle required.

Works with your bank

Tested with every major US bank.

Smart detection means you don't need a template. These are the formats we've verified — yours probably just works, even if it's not on the list.

Banking

  • Chase
  • Bank of America
  • Wells Fargo
  • Citi
  • Capital One
  • Discover
  • American Express
  • Ally
  • USAA
  • Navy Federal
  • + your bank

Brokerage

  • Charles Schwab
  • Fidelity
  • Vanguard
  • E*TRADE
  • Robinhood
  • TD Ameritrade
  • Merrill Edge
  • Interactive Brokers
  • + your bank

If your bank's export breaks something, tell us — we treat format issues as bugs, not limitations.

Coming soon

Plaid too, if you want it.

Auto-refreshing bank and brokerage connections are on the way. Plaid production approval takes a few weeks and we'd rather do it right than ship a broken link flow. When it lands, it'll be an option on the same account — not a requirement, not a gate.

Until Plaid lands, you can still go the full distance on CSVs — every feature in Verdant works with manually imported data.

Pick a CSV. Drag it in. See what happens.

Free during the invite-only beta. No credit card, no bank login.