Why exporting from your bank is such a pain
Every bank hides its export button somewhere different. Some cap the download at 90 days of history. Some hand you a QFX file that nothing but old accounting software understands. And whatever you get, you get it one account at a time.
If you have two banks, the formats won't match. One puts debits in a negative Amount column, the other splits Debit and Credit into separate columns. Date formats differ. Merchant names arrive as raw processor descriptors in all caps. You end up spending an hour in Excel fixing what the export gave you.
That hour is what this guide deletes.
The one-prompt version
Once your bank is connected to your agent through BankBridge, an export is one sentence:
Pull all my checking and credit card transactions from January 1 through March 31 and write them to a CSV with columns for date, merchant, amount, category, and account.
The agent calls list_transactions for the date range, reshapes the results into exactly the columns you asked for, and writes the file. In Claude Code or Cursor that's a real file on disk. In Claude Desktop or ChatGPT you get a downloadable file. Either way it opens directly in Excel, Google Sheets, or Numbers.
There's no cached copy involved. BankBridge fetches live on every call, so the export reflects your accounts as of the moment you asked.
What you need first
You need three things: a BankBridge account (it's $5 a month per connected bank, cancel anytime), a connected bank, and an MCP-capable host. Claude Code, Claude Desktop, ChatGPT, Cursor, Gemini CLI, Codex, Windsurf, and Zed all work, and the docs have a setup page for each.
Connection takes a couple of minutes. You sign in to your bank through a secure flow, BankBridge issues you an API key (or you use OAuth), and your agent gets read-only tools. Read-only matters here: nothing in this workflow can move money or change anything at your bank.
If you haven't done the setup yet, start with the guide on connecting your bank to Claude. The steps are nearly identical for every other host.
Pick your columns before you export
A bank decides your columns for you. Your agent doesn't. Say exactly what you want and you'll get it:
Export February's transactions to CSV with these columns: date (YYYY-MM-DD), merchant, description, amount, category, account name, and the last four digits of the account.
Two conventions are worth settling up front. First, signs: decide whether spending shows as negative or positive and tell the agent, because checking accounts and credit cards often disagree with each other. Second, dates: ask for YYYY-MM-DD so the spreadsheet sorts correctly without any format wrangling.
If you're exporting for an accountant, ask them which convention their software expects and pass that along verbatim.
Merge accounts banks won't merge
Here's the thing no bank portal will ever do: merge accounts across institutions into one sheet. Every bank you've connected shows up in the same list_accounts call, so the agent can pull them all in one pass.
Export Q1 transactions from all my accounts into a single CSV, sorted by date, with an account column so I can tell them apart.
The agent adds the account column, reconciles the sign conventions between banks, and hands you one coherent file. If you and a partner each have accounts connected, this is also the fastest way to build a shared household ledger.
Category labels that actually make sense
Bank exports either skip categories or bury them in codes. BankBridge transactions come with category labels from the bank-connection layer, and the list_categories tool shows the full set so you know what to expect.
You don't have to accept those labels as-is. Give the agent your own mapping and it'll relabel on the way out:
Use my categories in the export: put anything labeled FOOD_AND_DRINK under Eating Out unless the merchant is Instacart, which goes under Groceries. Everything from GENERAL_SERVICES goes under Business.
That kind of conditional remapping is trivial for an agent and impossible in a portal export.
Cleanup passes a bank export will never do
Raw exports are full of noise your spreadsheet inherits. The big one: credit card payments show up twice, once as a debit from checking and once as a credit on the card. Left alone, they inflate both income and spending.
Before writing the CSV, drop internal transfers between my own accounts and credit card payments, and flag anything still pending in a separate column.
You can also ask for merchant cleanup. Processors rename billing descriptors constantly (a subscription can appear under three different names in a year), and the agent can consolidate them with get_merchant_history when something looks split.
None of this requires a formula. You just describe the cleaning you want.
Getting it into Excel, Google Sheets, or Numbers
CSV is the universal answer: double-click and it opens in Excel or Numbers, or use File then Import in Google Sheets. For most exports, that's all you need.
If your host can run code (Claude Code, Cursor, Codex, and the other terminal agents can), you can ask for more: a real .xlsx with a tab per month, a totals row, currency formatting, or a pivot-ready layout. The agent writes and runs the conversion script itself.
Make it an .xlsx with one tab per month and a summary tab totaling each category.
Make it repeatable
The first export takes a few minutes of back-and-forth to get the columns and cleanup rules right. After that, save the final prompt somewhere and it becomes a one-liner you run on the first of each month.
Since BankBridge fetches live, there's no export lag and no stale file. Ask on March 1 and you get everything through the end of February, including whatever cleared overnight.
A small habit that helps: have the agent name files consistently, like transactions-2026-02.csv, so a year of exports stays sorted on its own. From there you're one step away from a full monthly money review, which we've written up separately.