finance-dl is an open-source Python package that automates the tedious work of downloading your personal financial data — transactions, balances, invoices, and statements — directly from financial institution websites and APIs. This page explains what finance-dl is, how it works under the hood, which data sources it supports, and how it fits into a broader personal finance workflow with beancount-import.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/jbms/finance-dl/llms.txt
Use this file to discover all available pages before exploring further.
finance-dl is specifically designed to work alongside beancount-import, a tool for automatically importing downloaded financial data into Beancount double-entry accounting files. While finance-dl is useful on its own as a data downloader, the two tools together form a complete pipeline from raw institution data to structured ledger entries.
How It Works
finance-dl uses two complementary mechanisms to retrieve data, depending on what each financial institution supports:OFX Direct Connect
For institutions that support the Open Financial Exchange (OFX) protocol, finance-dl uses ofxclient to connect directly to the institution’s server endpoint and download transaction data programmatically — no browser required, no screen scraping.
Selenium / ChromeDriver
For institutions without an OFX endpoint, finance-dl drives a real Chrome browser via Selenium and ChromeDriver to log in and scrape the data just as a human user would. Scrapers run headless by default and retry with a visible window if the first attempt fails.
Supported Data Sources
finance-dl includes scrapers for 18+ financial institutions and services:finance_dl.ofx
Uses the OFX Direct Connect protocol via ofxclient. Works with any institution that exposes an OFX endpoint — Vanguard, Discover, and many others. Institution parameters (id, org, url) can be looked up at ofxhome.com.
finance_dl.mint
Uses mintapi to download aggregated transaction and balance data from Mint.com.
finance_dl.venmo
Downloads transaction history and balance information from the Venmo.com website via browser automation.
finance_dl.paypal
Downloads transaction history from the PayPal.com website via browser automation.
finance_dl.amazon
Downloads full order invoices from the Amazon website, useful for itemized expense tracking.
finance_dl.healthequity
Downloads transaction history and balance information from the HealthEquity HSA website.
finance_dl.google_purchases
Downloads purchase records that Google has extracted from Gmail messages and stored in your account.
finance_dl.stockplanconnect
Downloads PDF documents — including release and trade confirmations — from the Morgan Stanley StockPlanConnect website.
finance_dl.pge
Downloads Pacific Gas & Electric (PG&E) utility bills in PDF format.
finance_dl.comcast
Downloads Comcast billing statements in PDF format.
finance_dl.ebmud
Downloads East Bay Municipal Utility District (EBMUD) water bills.
finance_dl.anthem
Downloads Anthem BlueCross insurance Explanation of Benefits (EOB) claim statements.
finance_dl.waveapps
Downloads receipt images and extracted transaction data from Wave, a free receipt-scanning app.
finance_dl.ultipro_google
Downloads Google employee payroll statements in PDF format from the Ultipro HR platform.
finance_dl.usbank
Downloads credit card transaction data from US Bank accounts in OFX format.
finance_dl.radiusbank
Downloads account transaction data from Radius Bank in QFX format.
finance_dl.schwab
Downloads transaction and position data from Schwab brokerage accounts in CSV format.
finance_dl.gemini
Downloads trades, transfers, and balances from the Gemini cryptocurrency exchange using the REST API, stored in a custom CSV format.
License
finance-dl is distributed under the GNU General Public License, Version 2.0 only. Copyright (C) 2014–2018 Jeremy Maitin-Shepard. See the LICENSE file in the repository for full terms.Next Steps
Installation
Install finance-dl from PyPI or source, and set up ChromeDriver for browser-based scrapers.
Quickstart
Create your first configuration and run a scraper in under 5 minutes.