Skip to main content

OFXStatement plugin for french financial institutions like BanquePopulaire.

Project description

ofxstatement-french

This project provides custom ofxstatement plugin(s) for these french financial institutions:

ofxstatement is a tool to convert a proprietary bank statement to OFX format, suitable for importing into programs like GnuCash or Beancount. The plugin for ofxstatement parses the bank statement and produces a common data structure, that is then formatted into an OFX file.

The PDF is converted using the pdftotext utility.

Financial institutions

BanquePopulaire

This bank allows you to download OFX files but only for transactions not older than 90 days. In order to read the transactions older than 90 days, you need to download a PDF from their site: Mon espace -> Mes documents électroniques -> Comptes / Epargne et placements. This utility can convert such a PDF to an OFX file.

Having a PDF is also useful for a visual verification but it is only generated every month, so you may need to download the OFX file now and then too for the actual status. There rests one problem: the OFX file generated by BanquePopulaire contains FITIDs not equal to the default FITID generated by this utility. So my solution is to download the OFX from BanquePopulaire regularly and the PDF every month. In the Configuration setup you can specify wildcards for the location of OFX files so that this utility will use the FITID from the (downloaded) OFX instead of its own default and hence any financial program will see the same transaction whether it is from the downloaded OFX or from the OFX created from the PDF. The OFX and PDF may also differ in some details like DATE, PAYEE and MEMO fields and this will be handled too by processing downloaded OFX files for their FITID.

Installation

Preconditions

You have to install the poppler library first, see pdftotext

Using pip

$ pip install ofxstatement-french

Development version from source

$ git clone https://github.com/gpaulissen/ofxstatement-french.git
$ pip install -e .

Troubleshooting

This package depends on ofxstatement with a version at least 0.6.5. This version may not yet be available in PyPI so install that from source like this:

$ git clone https://github.com/gpaulissen/ofxstatement.git
$ pip install -e .

Test

To run the tests from the development version you can use the py.test command:

$ py.test

You may need to install the required test packages first:

$ pip install -r test_requirements.txt

Usage

Show installed plugins

This shows the all installed plugins, not only those from this package:

$ ofxstatement list-plugins

You should see at least:

The following plugins are available:

  ...
  fr-banquepopulaire BanquePopulaire, France, PDF (https://www.banquepopulaire.fr/)
  ...

Convert

Use something like this:

$ ofxstatement convert -t fr-banquepopulaire <file>.pdf <file>.ofx

Or you can convert the PDF yourself and supply the text as input:

$ pdftotext -layout <file>.pdf <file>.txt
$ ofxstatement convert -t fr-banquepopulaire <file>.txt <file>.ofx

See also the section configuration below.

Configuration

For BanquePopulaire you may download their OFX files and use them to provide you with their OFX FITID numbers instead of relying on FITID numbers generated by the ofxstatement tool. You can specifiy the OFX files to read first using the ofxstatement configuration. The OFX files configuration is a comma separated list of wildcard specifications relative to the PDF to convert.

$ ofxstatement edit-config

This is a sample configuration (do not forget to specify the plugin for each section):

[banquepopulaire]
plugin = fr-banquepopulaire
ofx_files = *.ofx, ../*.ofx

Now this statement will convert .pdf downloaded from BanquePopulaire (Mon Espace -> Mes documents électroniques -> Comptes) to .ofx while using the FITIDs found in the *.ofx files in the directory of .pdf or in its parent directory.

$ ofxstatement convert -t banquepopulaire <file>.pdf <file>.ofx

Change history

See the Changelog (CHANGELOG.md).

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[1.3.0] - 2020-05-23

Changed

- Replaced the ofxparse library by beautifulsoup4 since the former
does only read one bank account and a BanquePopulaire OFX file
may contain several bank accounts (conform the OFX standard).
- The ofx_files configuration may be a list of comma separated
file name specifications instead of just one file name
specification.
- The ofx_files cache will provide the OFX FITID for PDF statement
line ID if there is a match on any of the three dates (DATE
COMPTA, DATE OPERATION, DATE VALEUR) in the PDF. Usually DATE
COMPTA is equal to DTPOSTED from the OFX, but not always.
- The ofx_files cache will provide the PAYEE and MEMO fields if
there is a match since BanquePopulaire does not necessarily show
the same values for the same transaction in a PDF and OFX file.

[1.2.0] - 2020-05-02

Changed

- Added the ability to retrieve the OFX id (FITID) from OFX files
downloaded from BanquePopulaire instead of using an id generated
by the ofxstatement tool.

[1.1.1] - 2020-03-23

Changed

- The generation af a unique OFX id did only return a counter in
case of duplicates
- The Readme mentions now my fork of the ofxstatement instead of
https://github.com/kedder/ofxstatement.git
- The __about__.py file outputs the version number and that is
used in the Makefile
- The Makefile depends now on GNU make for tagging a release

[1.1.0] - 2020-03-22

Added

- This Changelog
- The Readme mentions test_requirements.txt for installing test modules
- More checks concerning the content (dates with start and end
date exclusive) that may result in a ValidationError exception
- Casden accounts also supported
- Negative balances recognized
- Added Makefile for keeping the important operations together

Changed

- The date will now be the accounting date (DATE COMPTA) instead of operation date (DATE OPERATION).
- Handling of 29 february improved
- Improved handling of graphics in the PDF which transforms to a
description starting with F and whitespace.
- The BIC is also recognized if the line does not end with a BIC
followed by only whitespace (hence BIC<ws><number><ws><.+> is now
allowed)
- Better determination of the statement header.

[1.0.0] - 2020-03-16

Added

- Converting the French BanquePopulaire PDFs to an OFX file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ofxstatement-french-1.3.0.tar.gz (18.1 kB view details)

Uploaded Source

Built Distribution

ofxstatement_french-1.3.0-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file ofxstatement-french-1.3.0.tar.gz.

File metadata

  • Download URL: ofxstatement-french-1.3.0.tar.gz
  • Upload date:
  • Size: 18.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

File hashes

Hashes for ofxstatement-french-1.3.0.tar.gz
Algorithm Hash digest
SHA256 72ca05771bc0f7c6f4c67a81a3cd0ce6fd540a6c20c79a5cac14c57dca81359b
MD5 de26ec27c6c1564ebb5a1e8a736a1f96
BLAKE2b-256 0c657db6577875662bc8c14ae30e7f5aef0ee262b0641b01ebfadd92938e1b56

See more details on using hashes here.

File details

Details for the file ofxstatement_french-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: ofxstatement_french-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

File hashes

Hashes for ofxstatement_french-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 96b57f18bdaecf39e9b83c2ffca061219236cd5c2265ab83f9317fc83ec43524
MD5 090a3c736a0aaa565b5441189fd51b4a
BLAKE2b-256 f5797a308fa0c4787ad1c89a66cb12d2c04bd48fb758beaea559ad49c858d091

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page