File: README.rst

package info (click to toggle)
ofxstatement 0.9.3-0.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 340 kB
  • sloc: python: 1,664; xml: 179; makefile: 26
file content (324 lines) | stat: -rw-r--r-- 16,837 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
OFX Statement
-------------

.. 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`_ or `homebank`_. 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.

.. _GnuCash: https://gnucash.org/
.. _homebank: https://www.gethomebank.org/



Rationale
=========

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: https://gnucash.org/
.. _OFX: https://en.wikipedia.org/wiki/Open_Financial_Exchange

Mode of Operation
=================

The ``ofxstatement`` tool is intended to be used in the following workflow:

1. 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.

2. Run ``ofxstatement`` on each exported file to convert it to OFX.
   Shell scripts or a Makefile may help to automate this routine.

3. Import the generated OFX file into your personal accounting system.

Installation and Usage
======================

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 <plugin> bank_statement.csv statement.ofx

The resulting ``statement.ofx`` is then ready to be imported into a personal
accounting system.

Known Plugins
=============

There are several user-developed plugins available:

================================= ============================================
Plugin                            Description
================================= ============================================
`ofxstatement-mt940`_             Swift MT940 statements
`ofxstatement-iso20022`_          Generic ISO-20022 format
`ofxstatement-paypal-2`_          PayPal, ``*.csv`` for private accounts
`ofxstatement-transferwise`_      Transferwise CSV (international)
`ofxstatement-nordigen`_          Plugin for GoCardless and Nordigen data parsing

`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-skippaycz`_         Plugin for Skip Pay s.r.o. (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-partnersbankacz`_   Partners Banka, a.s. (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) (by @woutbr)
`ofxstatement-be-argenta-nick`_   Argenta (Belgium, also supports french version) (fork by @Nick-DT)
`ofxstatement-be-crelan`_         Crelan (Belgium)
`ofxstatement-be-triodos`_        Belgian Triodos Bank CSV statements
`ofxstatement-be-newb`_           Belgian cooperative bank newB
`ofxstatement-be-vdk-fr`_         VDK (Belgium, French statements)
`ofxstatement-be-hellobank-fr`_   Hello Bank (Belgium, French statements)

`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-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-santander-es`_      Converts Santander ES 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-skippaycz: https://github.com/archont00/ofxstatement-skippaycz
.. _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-partnersbankacz: https://github.com/archont00/ofxstatement-partnersbankacz
.. _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-argenta-nick: https://github.com/Nick-DT/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-2: https://github.com/Alfystar/ofxstatement-paypal-2
.. _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-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
.. _ofxstatement-santander-es: https://github.com/M3lo00/ofxstatement-santander-es
.. _ofxstatement-be-vdk-fr: https://github.com/Jibuus/ofxstatement-be-vdk-fr
.. _ofxstatement-be-hellobank-fr: https://github.com/Jibuus/ofxstatement-be-hellobank-fr
.. _ofxstatement-nordigen: https://github.com/jstammers/ofxstatement-nordigen

Advanced Configuration
======================

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


Development / Testing
=====================

``ofxstatemnt`` uses `pipenv`_ to manage the development environment and
dependencies::

  $ pip install pipenv
  $ git clone https://github.com/<your_account>/ofxstatement.git
  $ cd ofxstatement
  $ pipenv sync --dev

.. _pipenv: https://github.com/pypa/pipenv

And finally run the test suite::

  $ pipenv shell
  $ pytest

When satisfied, you may create a pull request.

Writing your own Plugin
=======================

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