konnectors/cragr

Saving accounts with a potentially loose `matchingAttributes`

Opened this issue · 3 comments

https://github.com/cozy/cozy-konnector-bank-cragr/blob/87423b1ed9b98b606aeceb419aab096454bae935/src/index.js#L235

Shouldn't the third parameter (matchingAttributes) of updateOrCreate be ['institutionLabel', 'number']?

I have the feeling that in this case, if the user has the misfortune of using two banks with an equal account number, updateOrCreate would mix them up.

Am I wrong?

If they have the same account number, they shall also have the the same institution label, no ?

Is it possible to have the same account number in two different banks?

Je vais switch-er au français, ce sera plus simple pour cette grosse excplication 😄

Après (beaucoup de) recherches (fastidieuse).

En France, l'organisme normateur des banques est la confédération française de l'organisation et de la normalisation bancaire (CFONB).
Leur document descriptif sur les identifiants bancaires explique qu'il existe 3 identifiants : Le RIB, l'IBAN et le BIC.

  1. Le RIB

Identifiant domestique de votre compte bancaire com- posé de 23 caractères alphanumériques comprenant le code de la banque (5 caractères), le code du guichet (5 caractères), le numéro du compte (11 caractères) et la clé de contrôle – clé RIB (2 caractères).

Autres sources : Wikipedia non sourcé, site commercial fr.iban.com

Le BBAN est une subdivision locale de l'IBAN délivré par la banque et que l'on remet à un débiteur ou un créancier dans le but d'opérer des virements bancaires ou des prélèvements bancaires à partir d'un compte courant. En France, on trouve souvent un RIB indiquant le BBAN à la fin des carnets de chèques ou en tête du relevé de compte.

BBAN est l'abréviation de Basic Bank Account Number. Le BBAN représente un numéro de compte bancaire de chaque pays. Le BBAN est la dernière partie de l'IBAN lorsqu'il est utilisé pour les transferts de fonds internationaux. Chaque pays a son format spécifique de BBAN et une longueur définie selon ses propres normes. Il n'y a actuellement aucune UE commune ou autre norme unifiant le BBAN. C'est pourquoi l'IBAN a été introduit afin de standardiser les virements bancaires internationaux.

En France, il y aurait une correspondance RIB-BBAN. Le BBAN serait l'identifiant unique d'un compte au niveau national (« domestique »).

  1. L'IBAN

Identifiant international de votre compte bancaire com- posé du RIB complété d'un préfixe comportant 2 éléments :

  • un code alphabétique de 2 lettres (norme ISO) per- mettant d'identifier le pays où est tenu votre compte (FR pour tous les comptes tenus en France).
  • 2 chiffres représentant la clé numérique qui permet de contrôler l'ensemble de l'IBAN suivant un mode de calcul universellement adopté.
  1. Le BIC

Pour Business Identifier Code. On trouve aussi le terme SWIFT pour Society for Worldwide Interbank Financial Telecommunication, qui gère ces enregistrements.

Identifiant normalisé de votre banque mondialemen reconnu. Il peut être représenté sur votre relevé d'identité bancaire indifféremment selon l'une ou l'autre de ses 2 versions.

Le BIC est utile pour identifier de manière unique votre banque

  1. Conclusion

Au niveau national, le RIB est l'identifiant d'un compte.
Il identifie la banque (entreprise), le guichet (l'agence en charge de la gestion des comptes) et le compte via son numéro.

Je ne peux plus que déduire de ces informations, n'ayant trouvé aucune source (fiable ou non) concernant la gestion des numéros de comptes bancaires en France.

Ma déduction est la suivante :
Pour identifier un compte en France, et pour être rigoureux, il nous faut au minimum les 3 informations suivantes : code banque, code guichet, numéro de compte (11 caractères alpha-numériques).
Les banques gèrent elles-même la numérotation des comptes. Certaines agences peuvent avoir leur propre numérotation (justification de l'utilisation du code guichet) et connaitre la banque (l'institution) ne suffit pas pour discriminer un compte sur son numéro seul.

Si à l'avenir nous pensons développer des connecteurs à des banques étrangères, il faudra identifier le compte sur son IBAN.

En base de comparaison j'ai quelques numéro de comptes obfusqués :

  • 31xxxxxxxxx Banque Populaire des Alpes
  • 04xxxxxxxxx Caisse Épargne
  • 004xxxxxxxx La Nef
  • 0002xxxxxxx Crédit Mutuel
  • 3810000000 Banque de France
  • 0003xxxxxxx Société Générale
  • 4xxxxxxxxxx ING Direct
  • 0002xxxxxxx CIC (Crédit Mutuel)

Sans invalider mon raisonnement précédent, dans ce que je viens de piocher, je ne vois pas de possibilité de croisement entre banque tel qu'elles ont adopté leur numérotation aujourd'hui.

Peut-être peut-on souligné la possibilité de croisement sur la même banque dans deux guichets séparés (deux exemples de même préfixe pour les banques Caisse Épargne dans deux régions différentes).