En bref : SWIFT retirera le MT940 d'ici novembre 2028. Bank Statement Parser gère à la fois MT940 et CAMT.053 avec une seule API. Votre pipeline d'analyse fonctionne pendant la transition et après.
Pourquoi cette migration est importante
SWIFT retire les formats de messages MT anciens au profit du standard 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 en ISO 20022 uniquement |
| Novembre 2026 | Adresses structurées/hybrides obligatoires ; MT101 multi-instructions rejeté ; Gestion des cas Phase 1 | Les formats d'adresse doivent être conformes ; certains messages MT seront rejetés |
| Fin 2026 | Début de l'opt-in pour recevoir CAMT.052/.053/.054 | Les institutions financières peuvent commencer à recevoir des relevés ISO natifs |
| Novembre 2027 | Toutes les IF doivent recevoir CAMT.053 nativement | SWIFT cesse de convertir le format MT en ISO ; vos systèmes doivent analyser CAMT directement |
| Novembre 2028 | Retrait complet de MT940/MT942/MT950/MT900/MT910 | Les formats de relevés anciens 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") # or .mt940
parser = create_parser("statement.xml", fmt)
df = parser.parse() # Same DataFrame schema regardless of format
La fonction detect_statement_format() identifie si le fichier est en MT940, CAMT.053, PAIN.001 ou tout autre format pris en charge. La fonction create_parser() renvoie le bon analyseur. 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 des 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 Bank Statement Parser vous aide
- API unifiée : analysez les relevés MT940, CAMT.053 et PDF avec le même flux de travail, produisant une sortie DataFrame cohérente.
- Détection automatique : pas besoin de connaître le format à l'avance.
detect_statement_format()l'identifie automatiquement. - Pipeline PDF hybride : les banques qui ne fournissent que des relevés PDF pendant la transition sont gérées par
smart_ingest()avec vérification automatique du solde. - Indépendant des espaces de noms : gère toute variante CAMT.053 (001.02, 001.04 ou enveloppes spécifiques aux banques) sans configuration.
- Vérification multi-devises :
verify_balance_multi_currency()exécute la Règle d'or par groupe de devises — essentiel pour les relevés CAMT multi-devises. - Streaming : traitez les gros fichiers CAMT (50 Mo+, 50 000+ transactions) avec une mémoire born��e.
- Export comptable : exportez directement au format journal hledger ou beancount pour la comptabilité de trésorerie.
- Tests de migration : exécutez les deux analyseurs en parallèle sur la même période pour vérifier la cohérence des résultats avant de basculer.
Commencer
pip install bankstatementparser
from bankstatementparser import create_parser, detect_statement_format
# Works with MT940 today, CAMT.053 tomorrow, PDF anytime
for file in bank_statement_files:
fmt = detect_statement_format(file)
parser = create_parser(file, fmt)
df = parser.parse()
process(df) # Your code doesn't change
Pour les relevés PDF de banques qui ne proposent pas encore d'exports CAMT structurés :
from bankstatementparser.hybrid import smart_ingest
result = smart_ingest("statement.pdf")
assert result.verification.status == "VERIFIED"
Lire la documentation complète
Comparer avec les alternatives ❯ | Découvrez des cas d'utilisation concrets ❯