Aller au contenu

Sans synchronisation bancaire

Badlen ne se synchronise avec aucune banque, parce qu’il ne se connecte à aucune. Il n’y a ni agrégateur, ni robot qui aspire vos pages bancaires, ni connecteur open banking : aucun solde, aucune opération n’arrive jamais tout seul depuis un compte que vous détenez ailleurs.

Cette absence tient à la structure même du projet, et elle vaut pour tout logiciel auto-hébergé, pas seulement pour celui-ci. Quatre faits l’expliquent :

  • l’interface d’une banque européenne ne répond qu’à une entité enregistrée. Aucun logiciel n’accède seul à un compte, quel que soit le prix qu’il serait prêt à payer ;
  • aucun logiciel libre auto-hébergé ne détient cet enregistrement ;
  • ceux qui synchronisent reportent la conformité sur leurs utilisateurs, et l’offre gratuite qui rendait cela possible en Europe n’accepte plus d’inscriptions ;
  • enfin, ce produit est précisément conçu pour ne jamais demander à quelqu’un de confier l’accès à ses comptes à une société dont il découvre le nom à l’écran : ses identifiants chez certains fournisseurs, et dans tous les cas une copie de ses comptes sur leurs serveurs.

Seule exception : le portefeuille crypto. Il se déclare avec sa chaîne et son adresse publique, et le bouton Synchroniser, dans l’onglet Réglages du compte, interroge la blockchain pour savoir ce que détient l’adresse. Aucun identifiant ne vous est demandé, car une adresse publique n’en est pas un.

Dans l’Union européenne, consulter les comptes de paiement de quelqu’un pour son compte est une activité réglementée. La directive (UE) 2015/2366, dite DSP2, l’appelle un service d’information sur les comptes (article 4, point 16) et celui qui l’exerce un prestataire de services d’information sur les comptes. L’article 67 vous donne le droit de recourir à un tel service, mais il ne donne pas à un programme le droit d’en devenir un.

Le régime est volontairement allégé pour qui se limite à cette activité. L’article 33, § 1 écarte l’essentiel de la procédure d’agrément, y compris l’exigence de capital minimum : un pur prestataire d’information sur les comptes n’a aucun capital à constituer. Restent : une obligation d’assurance (article 5, § 3, assurance de responsabilité civile professionnelle ou garantie comparable), un dossier de gouvernance, de sécurité et de traitement des incidents, et un enregistrement auprès du superviseur national, qui est en France l’ACPR, au titre de l’article L. 522-11-2 du code monétaire et financier.

Jusque-là, ce n’est qu’une affaire de paperasse et de prime d’assurance. C’est une exigence technique qui rend la chose impossible.

Le règlement délégué (UE) 2018/389, qui fixe les normes techniques de la DSP2, précise ce qu’une banque vérifie quand on appelle son interface. L’article 34, § 1 impose un certificat eIDAS qualifié : cachet électronique, ou authentification de site internet. L’article 34, § 2 en fixe le contenu :

le numéro d’immatriculation […] est le numéro d’agrément des prestataires de services de paiement qui émettent des instruments de paiement liés à une carte, des prestataires de services d’information sur les comptes et des prestataires de services d’initiation de paiement […] disponible dans le registre public de l’État membre d’origine conformément à l’article 14 de la directive (UE) 2015/2366

Le certificat contient un numéro d’enregistrement, que l’on retrouve dans un registre public d’entités enregistrées. Sans numéro, pas de certificat, et sans certificat, aucune banque de l’Union ne répond, quelle que soit la qualité du logiciel qui l’interroge.

Le verrou ne s’arrête pas aux appels eux-mêmes. L’article 30, § 3 oblige la banque à fournir gratuitement, sur demande, la documentation technique de son interface aux prestataires agréés et à ceux qui ont déposé une demande d’agrément auprès de leurs autorités compétentes. Même savoir comment fonctionne l’interface est réservé à qui est enregistré, ou en passe de l’être.

Les banques le formulent elles-mêmes. OP Financial Group, qui publie son interface DSP2, prévient un développeur que passer en production suppose de demander « an AISP/PISP license from a financial authority » et d’obtenir « valid QWAC and QSEAL certificates » ; seul le bac à sable est ouvert à tous (op-developer.fi).

L’obstacle, c’est donc l’enregistrement lui-même. La DSP2 n’interdit nulle part à un logiciel libre de lire un compte. Elle organise l’accès autour d’une entité identifiée, enregistrée et assurée, et les normes techniques font de cet enregistrement un objet cryptographique que la banque vérifie à chaque appel.

Le certificat qu’un logiciel auto-hébergé ne peut pas détenir

Section intitulée « Le certificat qu’un logiciel auto-hébergé ne peut pas détenir »

Un certificat appartient à quelqu’un. Il désigne une entité, enregistrée, assurée et supervisée en continu, qui répond devant son superviseur de chaque accès effectué avec ce certificat.

Badlen est un programme que mille personnes installent sur mille machines. Derrière ces mille instances, il n’y a aucune entité : donc pas de numéro d’enregistrement, pas de certificat, et personne pour répondre face à la banque. C’est le mode de distribution du logiciel qui l’exclut, quelle que soit la qualité du code. Livrer un connecteur prêt à l’emploi reviendrait à remettre à chaque utilisateur un secret appartenant à une entité enregistrée : exactement ce qu’un certificat sert à empêcher.

On pourrait placer une vraie entité au milieu. Il faudrait alors un opérateur unique entre chaque utilisateur et sa banque, qui détiendrait l’enregistrement, verrait passer les accès et en porterait la responsabilité. Ce serait un service centralisé déguisé en logiciel auto-hébergé, soit l’inverse de ce pour quoi on installe un logiciel sur sa propre machine.

Tous les logiciels comparables en arrivent au même constat : aucun logiciel libre auto-hébergé ne détient d’enregistrement de prestataire d’information sur les comptes. Ils se répartissent en trois cas.

Ils ne se connectent pas du tout. Ghostfolio n’annonce aucune synchronisation bancaire ; ses données entrent par import et export, et ses sources extérieures sont des fournisseurs de cours.

Vous apportez votre propre agrégateur. C’est ce qui donne à un projet l’air de synchroniser alors qu’il ne le fait pas lui-même. Firefly III fait passer son importateur par des fournisseurs tiers plutôt que par une banque, et Actual Budget énonce la règle sans détour : « This integration relies on you providing your own API credentials that you will need to get by signing up with the service provider ». Le projet fournit la tuyauterie ; c’est l’utilisateur qui devient client de l’agrégateur. L’enregistrement, le contrat et la responsabilité sont les siens.

Ils passent par un protocole client, là où il en existe un. GnuCash, via AqBanking, prend en charge FinTS/HBCI en Allemagne, EBICS en Autriche, en Suisse, en Allemagne et en France (« usually available for business customers »), et OFX Direct Connect aux États-Unis. Firefly III atteint FinTS de la même façon. Ces protocoles sont antérieurs à la DSP2 et authentifient l’utilisateur avec ses propres accès bancaires, et non un prestataire avec un certificat : c’est pour cela qu’ils fonctionnent encore. L’Allemagne fait figure de véritable exception : depuis le 1er août 2019, l’accès FinTS exige un produit enregistré, un enregistrement que la Deutsche Kreditwirtschaft accorde gratuitement en dix à quinze jours ouvrés (fints.org). Il concerne le logiciel client et non un statut de prestataire, et ne couvre qu’un protocole dans un seul pays.

Et la voie « apportez votre clé » s’est rétrécie

Section intitulée « Et la voie « apportez votre clé » s’est rétrécie »

Firefly III et Actual s’appuyaient tous deux sur GoCardless Bank Account Data, le seul agrégateur européen dont l’offre gratuite était accessible à un particulier. Il n’accepte plus de nouveaux inscrits, comme GoCardless l’écrit sur sa propre page : « New signups for Bank Account Data are currently disabled » (bankaccountdata.gocardless.com). La documentation de Firefly III écrit « GoCardless is sunsetting this free service and registration is unfortunately closed », et la liste des fournisseurs d’Actual indique pour GoCardless « not accepting new accounts ».

Ce qui reste exige d’être une entreprise. Enable Banking, l’agrégateur européen vers lequel ces projets pointent désormais, active une application de production « once you have signed a contract with Enable Banking and completed the KYB process for your company », et facture au volume avec un minimum mensuel (enablebanking.com). Un mode restreint permet de ne relier que ses propres comptes, mais il est prévu pour un outil personnel ou un prototype, pas pour un produit installé par des milliers de personnes.

Pour le public de Badlen, des foyers et non des entreprises, cette voie est aujourd’hui fermée.

Malgré tout cela, une option resterait possible : prévoir les champs, et laisser ceux qui peuvent s’inscrire chez un agrégateur y coller leurs identifiants. Firefly III et Actual Budget font exactement cela, et ils ont raison. Ce qu’ils vous promettent, c’est la maîtrise de votre budget, et passer par un agrégateur sert cette promesse.

La promesse de Badlen est différente : ce que vous enregistrez reste sur la machine où vous l’avez installé. Un écran demandant la clé d’un agrégateur vous demanderait d’autoriser une société dont vous découvrez le nom à cet instant à contacter votre banque à votre place, à lire chacun de vos comptes et à en transmettre le contenu. Chaque chiffre de ce produit existerait alors en double : sur votre serveur, et dans une base sur laquelle vous n’avez aucun droit.

C’est un choix délibéré. Livrer un connecteur reviendrait à renoncer à la raison d’être de ce produit : il ne figure donc sur aucune liste de travaux en attente. Si cela change un jour, ce sera à cause d’un texte de loi, et cette page le dira.

Chaque affirmation ci-dessus a été vérifiée dans la source citée à côté. Les textes de référence :

Les projets et les fournisseurs, chacun dans sa propre documentation : Ghostfolio, Firefly III, Actual Budget, GnuCash, FinTS, GoCardless, Enable Banking, OP Financial Group.