Pourquoi cette migration est importante
SWIFT retire les formats de messages MT historiques au profit de la norme ISO 20022, plus riche. Pour les équipes de trésorerie et de finance, cela signifie que vos pipelines de traitement des relevés bancaires doivent évoluer de MT940 vers CAMT.053 avant les échéances fermes.
Calendrier de migration SWIFT
| Date | Jalon | Impact |
|---|---|---|
| Novembre 2025 | Fin de la coexistence MT-MX pour les paiements transfrontaliers | Les messages PACS sont désormais exclusivement ISO 20022 |
| Novembre 2026 | Adresses structurées/hybrides obligatoires ; MT101 multi-instructions rejeté ; Phase 1 gestion des cas | Les formats d'adresses doivent être conformes ; certains messages MT seront rejetés |
| Fin 2026 | Début de l'opt-in pour la réception de CAMT.052/.053/.054 | Les institutions financières peuvent commencer à recevoir les relevés ISO natifs |
| Novembre 2027 | Toutes les IF doivent recevoir nativement CAMT.053 | SWIFT cesse de convertir le format MT en ISO ; vos systèmes doivent analyser directement le CAMT |
| Novembre 2028 | Retrait complet de MT940/MT942/MT950/MT900/MT910 | Les formats de relevés historiques ne sont plus disponibles ; CAMT.052/.053/.054 sont la seule option |
Ce qui change dans votre code
Avant : MT940 uniquement
from bankstatementparser import Mt940Parser
parser = Mt940Parser("statement.mt940")
df = parser.parse()
Après : les deux formats avec détection automatique
from bankstatementparser import create_parser, detect_statement_format
fmt = detect_statement_format("statement.xml") # ou .mt940
parser = create_parser("statement.xml", fmt)
df = parser.parse() # Meme schema DataFrame quel que soit le format
La fonction detect_statement_format() identifie si le fichier est MT940, CAMT.053, PAIN.001 ou tout autre format pris en charge. La fonction create_parser() renvoie le bon parseur. Votre code en aval fonctionne de manière identique quel que soit le format source.
CAMT.053 vs MT940 : différences clés
| Caractéristique | MT940 | CAMT.053 |
|---|---|---|
| Richesse des données | Champs limités | 3-5x plus de données par transaction |
| Jeu de caractères | Limité (charset SWIFT) | Unicode complet |
| Structure | Texte plat avec balises | XML avec espaces de noms |
| Reporting des soldes | Ouverture/clôture uniquement | Plusieurs types de soldes |
| Références | Champ de référence unique | Plusieurs types de références |
| Gestion des devises | Basique | Multi-devises complet avec taux de change |
Comment Analyseur de relevés bancaires vous aide
- API unifiée : Analysez MT940 et CAMT.053 avec la même méthode
parse(), produisant des schémas DataFrame identiques. - Détection automatique : Inutile de connaître le format à l'avance.
detect_statement_format()l'identifie automatiquement. - Agnostique des espaces de noms : Gère toute variante CAMT.053 (001.02, 001.04 ou wrappers spécifiques aux banques) sans configuration.
- Streaming : Traitez de gros fichiers CAMT (50 Mo+, 50K+ transactions) avec une mémoire constante.
- Tests de migration : Exécutez les deux parseurs en parallèle sur la même période pour vérifier la cohérence des sorties avant la bascule.
Premiers pas
pip install bankstatementparser
from bankstatementparser import create_parser, detect_statement_format
# Fonctionne avec MT940 aujourd'hui, CAMT.053 demain
for file in bank_statement_files:
fmt = detect_statement_format(file)
parser = create_parser(file, fmt)
df = parser.parse()
process(df) # Votre code ne change pas