Skip to main content

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 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.
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.
For Selenium-based scrapers that require multi-factor authentication (MFA), configure a persistent profile_dir in your scraper configuration. Chrome will save session cookies and MFA state to that directory between runs, so you won’t need to re-enter authentication codes on every scrape. See the Quickstart for a full configuration example.

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.

Build docs developers (and LLMs) love