Two ways to get a bank CSV
Start free with the Chrome extension, or write the file straight from the CLI.
Chrome extension (free)
Install SheetLink for Chrome, connect your bank through Plaid, and sync to Google Sheets. From there, export the sheet as CSV in one click: File → Download → CSV.
- Free to install, no credit card
- Your last 7 days of history on the free plan (one bank)
- Every bank you connect syncs to one Google Sheet (more than one bank needs Pro)
- Download a CSV from Google Sheets anytime
The CLI
The SheetLink CLI writes a .csv file directly from your terminal: scriptable, and with Max, schedulable with cron. By default it writes ./sheetlink-transactions.csv; use --file to choose the path. Each run overwrites the file.
sheetlink sync --output csv- A .csv file directly, no Google Sheets
- Automate it with cron or a CI pipeline (Max)
- The same schema every run
- Up to 2 years of history
CSV columns you get
The CLI’s CSV has 35 columns per transaction, consistent across every bank you connect: the 34 columns SheetLink writes to Google Sheets, plus category. The ones you’ll use most:
| Column | What it holds |
|---|---|
transaction_id | Unique ID for deduplication |
date | Transaction date (YYYY-MM-DD) |
description_raw | Raw transaction description from the bank |
merchant_name | Cleaned merchant name (Plaid) |
amount | Amount (positive = money out, negative = money in) |
iso_currency_code | Currency (e.g., USD) |
category_primary | Plaid’s primary category |
category_detailed | Plaid’s detailed category |
account_id | Unique account identifier |
account_name | Account display name |
account_mask | Last 4 digits of the account |
source_institution | Bank name (e.g., Chase) |
pending | true / false |
payment_channel | in store / online / other |
location_city | City of the merchant (if available) |
location_region | State or region |
location_country | Country code |
logo_url | Merchant logo URL (Plaid enriched) |
The rest: persistent_account_id, authorized_date, datetime, authorized_datetime, merchant_entity_id, unofficial_currency_code, pending_transaction_id, check_number, transaction_type, transaction_code, location_address, location_postal_code, location_lat, location_lon, website, category (Plaid’s older category list) and synced_at.
Why SheetLink CSV beats your bank’s CSV export
Your bank’s own CSV export
- Different column names per institution
- Different date formats (MM/DD vs. YYYY-MM-DD)
- One file per bank, so manual merging is required
- No merchant name enrichment
- Often no category data
- No deduplication key
- Logging in to each bank every time
SheetLink CSV
- The same columns every time, for every bank
- Consistent ISO dates (YYYY-MM-DD)
- All banks in one file
- Clean merchant names from Plaid
- Plaid’s primary and detailed categories included
- transaction_id as a unique dedup key
- One sync covers all connected accounts
What people use SheetLink CSV for
Tax preparation
Export a full year of transactions in one CSV. Hand it to your accountant or import it into your tax software. Consistent columns mean no reformatting.
Accountant handoff
Send your bookkeeper a monthly CSV instead of a stack of bank statements. One file, every account, clean merchant names: hours of reconciliation saved.
Import to QuickBooks or Wave
Both QuickBooks and Wave support CSV transaction imports. SheetLink’s consistent schema and clean merchant names make the import straightforward.
Spreadsheet analysis
Open it in Excel or Google Sheets, filter by category, pivot by month or build a budget tracker, all from a clean, pre-formatted CSV that needs no cleanup.
Automate CSV export with cron and the CLI
With Max, add a cron job to write a fresh CSV on your own schedule.
# Write a daily bank CSV and upload it to S3
# Add it to your crontab (crontab -e) as one line:
0 7 * * * sheetlink sync --output csv --file ~/bank.csv && aws s3 cp ~/bank.csv s3://my-bucket/bank-data/$(date +\%Y-\%m-\%d).csvA scheduled run needs a Max API key, since there’s no browser to sign in with: save it once with sheetlink auth --api-key sl_..., or set SHEETLINK_API_KEY. The CSV is rewritten on every run; for a running history, sync to Postgres or SQLite instead (also Max).
Pricing
| Plan | Price | What you get |
|---|---|---|
| Free | $0 | 1 bank, your last 7 days, Google Sheets (download as CSV) |
| Pro | $4.99/mo or $39.99/yr | Every bank you connect, up to 2 years of history, Google Sheets and Excel, priority support |
| Max | $10.99/mo or $99/yr | Everything in Pro, plus CLI automation, Postgres and SQLite output, investments, and Claude |
Questions
How do I export bank transactions to CSV using Plaid?
Install the SheetLink Chrome extension (free), connect your bank through Plaid, and sync to Google Sheets. Then download the sheet as CSV with File → Download → CSV. For a CSV file straight from your terminal, use the SheetLink CLI: sheetlink sync --output csv.
Is CSV export free with SheetLink?
Through Google Sheets, yes: the Chrome extension is free for one bank and your last 7 days, and you can download the sheet as CSV. The CLI writes CSV files directly, and running it on a schedule (CLI automation) is part of Max at $10.99/mo.
What columns are in the SheetLink CSV?
The CLI’s CSV has 35 columns: transaction_id, account_id, persistent_account_id, account_name, account_mask, date, authorized_date, datetime, authorized_datetime, description_raw, merchant_name, merchant_entity_id, amount, iso_currency_code, unofficial_currency_code, pending, pending_transaction_id, check_number, category_primary, category_detailed, payment_channel, transaction_type, transaction_code, location_address, location_city, location_region, location_postal_code, location_country, location_lat, location_lon, website, logo_url, source_institution, category and synced_at. A CSV downloaded from Google Sheets has the same columns except category.
Why is SheetLink CSV better than my bank’s own CSV export?
Bank CSV exports vary by institution: different column names, different date formats, often no category data. SheetLink produces a consistent schema across all your banks in a single CSV, with clean merchant names and a deduplication key.
Can I automate the CSV export?
Yes, with Max. Run sheetlink sync --output csv from a cron job or CI pipeline, authenticated with a Max API key (saved once with sheetlink auth --api-key sl_..., or set as SHEETLINK_API_KEY), so it runs without a browser.
What banks are supported?
SheetLink uses Plaid, which connects to 10,000+ banks and credit unions in the US and Canada, including Chase, Bank of America, Wells Fargo, Citi, Capital One and most credit unions.