.. image:: https://github.com/kedder/ofxstatement/actions/workflows/test.yml/badge.svg?branch=master :target: https://github.com/kedder/ofxstatement/actions/workflows/test.yml .. image:: https://coveralls.io/repos/kedder/ofxstatement/badge.png?branch=master :target: https://coveralls.io/r/kedder/ofxstatement?branch=master .. image:: http://www.mypy-lang.org/static/mypy_badge.svg :target: http://mypy-lang.org/ .. image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/psf/black
Ofxstatement is a tool to convert proprietary bank statements to OFX format,
suitable for importing into personal accounting systems like GnuCash. This
package provides a command line tool to run: ofxstatement
. Run
ofxstatement -h
for more help. ofxstatement
works under Python 3 and
is not compatible with Python 2.
Most internet banking systems are capable of exporting account transactions to
some sort of computer readable format, but few support standard data formats,
like OFX
. On the other hand, personal accounting systems such as GnuCash
support standard formats only, and will probably never support proprietary
statement formats of online banking systems.
To bridge the gap between them, this ofxstatement tool was created.
.. _GnuCash: http://gnucash.org/ .. _OFX: http://en.wikipedia.org/wiki/Open_Financial_Exchange
The ofxstatement
tool is intended to be used in the following workflow:
At the end of each month, use your online banking service to export statements from all of your bank accounts in a format known to ofxstatement.
Run ofxstatement
on each exported file to convert it to OFX.
Shell scripts or a Makefile may help to automate this routine.
Import the generated OFX file into your personal accounting system.
Before using ofxstatement
, you have to install a plugin for your bank (or
write your own!). Plugins are installed as regular python packages, with
easy_install or pip, for example::
$ pip3 install ofxstatement-lithuanian
Note that ofxstatement itself will be installed automatically this way. After
the installation, the ofxstatement
utility will be available.
Users of Ubuntu and Debian operating systems can install ofxstatement from official package repositories::
$ apt install ofxstatement ofxstatement-plugins
You can check that ofxstatement is working by running::
$ ofxstatement list-plugins
You should get a list of your installed plugins.
After installation, the usage is simple::
$ ofxstatement convert -t
The resulting statement.ofx
is then ready to be imported into a personal
accounting system.
There are several user-developed plugins available:
================================= ============================================
Plugin Description
================================= ============================================
ofxstatement-mt940
Swift MT940 statements
ofxstatement-iso20022
Generic ISO-20022 format
ofxstatement-paypal
PayPal, *.csv
for private accounts
ofxstatement-transferwise
Transferwise CSV (international)
ofxstatement-lithuanian
_ Plugins for several banks, operating in
Lithuania: Swedbank, Danske and common Lithuanian exchange format - LITAS-ESIS.
ofxstatement-czech
_ Plugin for Poštovní spořitelna
(maxibps
) and banks using GPC
format (e.g., FIO banka, module
gpc
).
ofxstatement-airbankcz
Plugin for Air Bank a.s. (Czech Republic)
ofxstatement-raiffeisencz
Plugin for Raiffeisenbank a.s. (Czech Republic)
ofxstatement-unicreditcz
Plugin for UniCredit Bank Czech Republic and Slovakia
ofxstatement-equabankcz
Plugin for Equa Bank a.s. (Czech Republic)
ofxstatement-cz-komercni
Komerční banka (Czech Republic)
ofxstatement-mbankcz
mBank S.A. (Czech Republic)
ofxstatement-otp
Plugin for OTP Bank, operating in Hungary
ofxstatement-bubbas
Set of plugins, developed by @bubbas:
dkb_cc
and lbbamazon
.
banking.statements.osuuspankki
Finnish Osuuspankki bank
banking.statements.nordea
Nordea bank (at least Finnish branch of it)
ofxstatement-seb
SEB (Sweden), it parses Export.xlsx for private accounts
ofxstatement-lansforsakringar
Länsförsäkringar (Sweden), it parses Kontoutdrag.xls for private accounts
ofxstatement-be-belfius
Belfius (Belgium)
ofxstatement-be-keytrade
KeytradeBank (Belgium)
ofxstatement-be-ing
ING (Belgium)
ofxstatement-be-kbc
KBC (Belgium)
ofxstatement-be-argenta
Argenta (Belgium)
ofxstatement-be-crelan
Crelan (Belgium)
ofxstatement-be-triodos
Belgian Triodos Bank CSV statements
ofxstatement-be-newb
Belgian cooperative bank newB
ofxstatement-germany
Plugin for several german banks (1822direkt and Postbank at the moment)
ofxstatement-dab
DAB Bank (Germany)
ofxstatement-consors
Consorsbank (Germany)
ofxstatement-de-triodos
German Triodos Bank CSV statements (also works for GLS Bank)
ofxstatement-sp-freiburg
Sparkasse Freiburg-Nördlicher Breisgau (Germany)
ofxstatement-de-ing
Ing Diba Bank (Germany)
ofxstatement-mastercard-de
Mastercard PDF statements (Germany)
ofxstatement-sparkasse-de
Sparkasse PDF statements (Germany)
ofxstatement-austrian
Plugins for several banks, operating in Austria:
Easybank, ING-Diba, Livebank, Raiffeisenbank.
ofxstatement-postfinance
Swiss PostFinance (E-Finance Java text based bank/credit statements).
ofxstatement-fineco
FinecoBank (Italy)
ofxstatement-intesasp
Intesa San Paolo xlsx balance file (Italy)
ofxstatement-chebanca
CheBanca! xlsx format (Italy)
ofxstatement-n26
N26 Bank (Italy)
ofxstatement-it-banks
Widiba and Webank (Italy)
ofxstatement-bancoposta
BancoPosta - Poste Italiane (Italy)
ofxstatement-hype
_ Hype - Banca Sella (Italy)
ofxstatement-betterment
Betterment (USA)
ofxstatement-us-first-republic
First Republic Bank (USA)
ofxstatement-simple
_ Simple (USA, defunct) JSON financial statement format
ofxstatement-mbank-sk
MBank.sk (Slovakia)
ofxstatement-latvian
Latvian banks
ofxstatement-ee-seb
SEB (Estonia), parses proprietary csv file
ofxstatement-ee-swedbank
Swedbank (Estonia), parses proprietary csv file
ofxstatement-polish
Support for some Polish banks and financial institutions
ofxstatement-russian
Support for several Russian banks: Avangard, AlfaBank, Tinkoff, SberBank (both debit and csv), VTB.
ofxstatement-is-arionbanki
Arion bank (Iceland)
ofxstatement-revolut
Revolut Mastercard
ofxstatement-al_bank
Arbejdernes Landsbank (Denmark)
ofxstatement-cd-tmb
Trust Merchant Bank (DRC)
ofxstatement-zm-stanbic
Stanbic Bank (Zambia)
ofxstatement-dutch
Dutch financial institutes like ICSCards and ING
ofxstatement-french
French financial institutes like BanquePopulaire
ofxstatement-schwab-json
Charles Schwab investment history JSON export
ofxstatement-bbva
BBVA (Spain)
ofxstatement-qif
Converts Quicken Interchange Format (QIF) formatted bank transaction files
ofxstatement-santander
_ Converts Santander transaction files
================================= ============================================
.. _ofxstatement-lithuanian: https://github.com/kedder/ofxstatement-lithuanian .. _ofxstatement-czech: https://gitlab.com/mcepl/ofxstatement-czech .. _ofxstatement-airbankcz: https://github.com/milankni/ofxstatement-airbankcz .. _ofxstatement-raiffeisencz: https://github.com/milankni/ofxstatement-raiffeisencz .. _ofxstatement-unicreditcz: https://github.com/milankni/ofxstatement-unicreditcz .. _ofxstatement-equabankcz: https://github.com/kosciCZ/ofxstatement-equabankcz .. _ofxstatement-mbankcz: https://github.com/SinyaWeo/ofxstatement-mbankcz .. _ofxstatement-otp: https://github.com/abesto/ofxstatement-otp .. _ofxstatement-bubbas: https://github.com/bubbas/ofxstatement-bubbas .. _banking.statements.osuuspankki: https://github.com/koodaamo/banking.statements.osuuspankki .. _banking.statements.nordea: https://github.com/koodaamo/banking.statements.nordea .. _ofxstatement-germany: https://github.com/MirkoDziadzka/ofxstatement-germany .. _ofxstatement-austrian: https://github.com/nblock/ofxstatement-austrian .. _ofxstatement-postfinance: https://pypi.python.org/pypi/ofxstatement-postfinance .. _ofxstatement-mbank-sk: https://github.com/epitheton/ofxstatement-mbank-sk .. _ofxstatement-be-belfius: https://github.com/renardeau/ofxstatement-be-belfius .. _ofxstatement-be-keytrade: https://github.com/Scotchy49/ofxstatement-be-keytrade .. _ofxstatement-be-ing: https://github.com/jbbandos/ofxstatement-be-ing .. _ofxstatement-be-kbc: https://github.com/plenaerts/ofxstatement-be-kbc .. _ofxstatement-be-argenta: https://github.com/woutbr/ofxstatement-be-argenta .. _ofxstatement-be-crelan: https://gitlab.com/MagnificentMoustache/ofxstatement-be.crelan .. _ofxstatement-be-newb: https://github.com/SDaron/ofxstatement-be-newb .. _ofxstatement-betterment: https://github.com/cmayes/ofxstatement-betterment .. _ofxstatement-simple: https://github.com/cmayes/ofxstatement-simple .. _ofxstatement-latvian: https://github.com/gintsmurans/ofxstatement-latvian .. _ofxstatement-iso20022: https://github.com/kedder/ofxstatement-iso20022 .. _ofxstatement-seb: https://github.com/gerasiov/ofxstatement-seb .. _ofxstatement-paypal: https://github.com/gerasiov/ofxstatement-paypal .. _ofxstatement-polish: https://github.com/yay6/ofxstatement-polish .. _ofxstatement-russian: https://github.com/gerasiov/ofxstatement-russian .. _ofxstatement-dab: https://github.com/JohannesKlug/ofxstatement-dab .. _ofxstatement-consors: https://github.com/JohannesKlug/ofxstatement-consors .. _ofxstatement-is-arionbanki: https://github.com/Dagur/ofxstatement-is-arionbanki .. _ofxstatement-be-triodos: https://github.com/renardeau/ofxstatement-be-triodos .. _ofxstatement-de-triodos: https://github.com/pianoslum/ofxstatement-de-triodos .. _ofxstatement-lansforsakringar: https://github.com/lbschenkel/ofxstatement-lansforsakringar .. _ofxstatement-revolut: https://github.com/mlaitinen/ofxstatement-revolut .. _ofxstatement-transferwise: https://github.com/kedder/ofxstatement-transferwise .. _ofxstatement-n26: https://github.com/3v1n0/ofxstatement-n26 .. _ofxstatement-sp-freiburg: https://github.com/omarkohl/ofxstatement-sparkasse-freiburg .. _ofxstatement-al_bank: https://github.com/lbschenkel/ofxstatement-al_bank .. _ofxstatement-fineco: https://github.com/frankIT/ofxstatement-fineco .. _ofxstatement-intesasp: https://github.com/Jacotsu/ofxstatement-intesasp .. _ofxstatement-de-ing: https://github.com/fabolhak/ofxstatement-de-ing .. _ofxstatement-germany: https://github.com/MirkoDziadzka/ofxstatement-germany .. _ofxstatement-us-first-republic: https://github.com/medovina/ofxstatement-us-first-republic .. _ofxstatement-cz-komercni: https://github.com/medovina/ofxstatement-cz-komercni .. _ofxstatement-cd-tmb: https://github.com/BIZ4Africa/ofxstatement-cd-tmb .. _ofxstatement-zm-stanbic: https://github.com/BIZ4Africa/ofxstatement-zm-stanbic .. _ofxstatement-dutch: https://github.com/gpaulissen/ofxstatement-dutch .. _ofxstatement-french: https://github.com/gpaulissen/ofxstatement-french .. _ofxstatement-mt940: https://github.com/gpaulissen/ofxstatement-mt940 .. _ofxstatement-it-banks: https://github.com/ecorini/ofxstatement-it-banks .. _ofxstatement-ee-seb: https://github.com/rsi2m/ofxstatement-ee-seb .. _ofxstatement-ee-swedbank: https://github.com/rsi2m/ofxstatement-ee-swedbank .. _ofxstatement-chebanca: https://github.com/3v1n0/ofxstatement-chebanca .. _ofxstatement-mastercard-de: https://github.com/FliegendeWurst/ofxstatement-mastercard-de .. _ofxstatement-sparkasse-de: https://github.com/FliegendeWurst/ofxstatement-sparkasse-de .. _ofxstatement-bancoposta: https://github.com/lorenzogiudici5/ofxstatement-bancoposta .. _ofxstatement-hype: https://github.com/lorenzogiudici5/ofxstatement-hype .. _ofxstatement-schwab-json: https://github.com/edwagner/ofxstatement-schwab-json .. _ofxstatement-bbva: https://github.com/3v1n0/ofxstatement-bbva .. _ofxstatement-qif: https://github.com/robvadai/ofxstatement-qif .. _ofxstatement-santander: https://github.com/robvadai/ofxstatement-santander
While ofxstatement can be used without any configuration, some plugins may
accept additional configuration parameters. These parameters can be specified
in a configuration file. The configuration file can be edited using the edit-config
command that opens your favorite editor (defined by environment variable
EDITOR or else the default for your platform) with the configuration file::
$ ofxstatement edit-config
The configuration file format is in the standard .ini format. The
configuration is divided into sections that correspond to the --type
command line parameter. Each section must provide a plugin
option that
points to one of the registered conversion plugins. Other parameters are
plugin specific.
A sample configuration file::
[swedbank]
plugin = swedbank
[danske:usd]
plugin = litas-esis
charset = cp1257
currency = USD
account = LT123456789012345678
Such a configuration will let ofxstatement know about two statement file
formats handled by the plugins swedbank
and litas-esis
. The litas-esis
plugin will load statements using the cp1257
charset and set a custom currency
and account number. This way, GnuCash will automatically associate the
generated .ofx file with a particular GnuCash account.
To convert the proprietary CSV file danske.csv
into the OFX file danske.ofx
, run::
$ ofxstatement -t danske:usd danske.csv danske.ofx
Note that configuration parameters are plugin specific. See the plugin documentation for more info.
To use a custom configuration file, pass the -c
/ --config
option::
$ ofxstatement convert -t pluginname -c /path/to/myconfig.ini input.csv output.ofx
ofxstatemnt
uses pipenv
_ to manage the development environment and
dependencies::
$ pip install pipenv
$ git clone https://github.com/
.. _pipenv: https://github.com/pypa/pipenv
And finally run the test suite::
$ pipenv shell $ pytest
When satisfied, you may create a pull request.
If the plugin for your bank has not been developed yet (see Known plugins
section above) you can easily write your own, provided you have some knowledge
about the Python programming language. There is an ofxstatement-sample
plugin project available that provides sample boilerplate and describes the
plugin development process in detail.
.. _ofxstatement-sample: https://github.com/kedder/ofxstatement-sample