ofxtools
Library for working with Open Financial Exchange (OFX) data
What it is and what it does
ofxtools is a Python library for reading, writing, and converting Open Financial Exchange (OFX) data—the standard format banks and brokerages use to deliver transaction and account information. It handles both OFX versions 1.6 (SGML markup) and 2.03 (XML), plus Quicken's QFX variant, converting serialized financial data into native Python objects while preserving structure. The library implements comprehensive coverage of the OFX specification including banking, bill pay, investments, and tax extensions (1099 forms), with particular strength in investment account support.
ofxtools requires only Python 3.10+ and the standard library, making it lightweight to install. It's built on a maintainable, standards-based data model that maps directly to OFX specification sections, and has been tested against over 10 years of real-world OFX feeds from various institutions. Use it to extract transaction data outside proprietary financial software, build Python applications that consume bank feeds, or generate OFX-formatted exports from your own systems.
Use it for:
- Extract bank and investment transactions from OFX downloads to build custom financial dashboards or analysis tools.
- Convert transaction data between OFX versions or from QFX (Quicken) format to standard OFX for interoperability.
- Generate OFX-formatted feeds from a custom accounting system for import into GnuCash, Quicken, or other financial software.
- Parse investment account statements (holdings, trades, dividends) from broker OFX feeds for portfolio tracking.
- Automate reconciliation workflows by reading OFX bank statements into Python for matching against internal ledgers.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Parses, generates, and converts Open Financial Exchange (OFX) data in both OFXv1 (SGML) and OFXv2 (XML) formats, including Quicken's QFX variant, for importing and exporting financial transaction data.
Yes, with a license caveat. ofxtools is stable (Production/Stable status), actively maintained, has no known vulnerabilities, and installs with zero external dependencies. It's the most comprehensive OFX implementation in Python and covers the vast majority of real-world use cases. However, its GPL-3.0-only license is a hard blocker for proprietary or closed-source applications—only install if your project can adopt GPL-3.0 or you have an alternative licensing arrangement.
Install
ofxtools on PyPI
pip
pip install ofxtoolsuv
uv add ofxtoolspoetry
poetry add ofxtoolsInstalling ofxtools
Before you install
Low friction—pure Python with no external runtime dependencies and a wheel distribution. Last release 63 days ago; repository active with recent commits and 344 stars.
License in practice
GPL-3.0-only (copyleft): any application that links or distributes this library must also be released under GPL-3.0 or a compatible copyleft license. Proprietary or closed-source projects cannot use it without negotiating an alternative license.
Quickstart
pip install ofxtools
import ofxtools.Parser
parser = ofxtools.Parser.OFXTree()
parser.parse(ofx_file_path)
ofx_data = parser.convert()
Requires Python 3.10 or later.
Verify before relying
- Whether the library handles all real-world OFX variants from major financial institutions without manual workarounds.
- Performance characteristics when parsing large transaction histories or complex investment portfolios.
- Whether Quicken QFX proprietary extensions are silently dropped or logged during conversion.
Package facts
| License | GPL-3.0-only (copyleft) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 63 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 99,055/month — #13,042 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: ofxtools-1.1.1-py3-none-any.whl
Keywords: ofx, Open Financial Exchange
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
ofxparseParses Open Financial Exchange (.ofx) format…
permissive · top 15,000 on PyPI
sepaxmlGenerates SEPA XML payment files for direct…
permissive · top 15,000 on PyPI
mt-940Parses MT940 bank statement files into fully…
permissive · top 15,000 on PyPI
simplefixSimplefix provides a lightweight FIX (Financial…
permissive · top 15,000 on PyPI
sdmx1Reads, writes, and exchanges statistical data…
permissive · top 15,000 on PyPI
tradingeconomicsProvides Python access to over 300,000 economic…
permissive · top 15,000 on PyPI
alpha-vantageFetches real-time and historical stock,…
permissive · top 15,000 on PyPI
bai2Parses and writes BAI2 files, a standard format…
permissive · top 15,000 on PyPI
edgartoolsEdgarTools parses SEC EDGAR filings into typed…
permissive · top 5,000 on PyPI
databentoOfficial Python client for accessing live and…
permissive · top 5,000 on PyPI