TL;DR: SWIFT kommer att avveckla MT940 i november 2028. Bank Statement Parser hanterar både MT940 och CAMT.053 med ett enda API, så din pipeline fungerar under övergången och därefter.
Varför denna migrering är viktig
SWIFT avvecklar äldre MT-meddelandeformat till förmån för den rikare ISO 20022-standarden. För treasury- och finansteam innebär detta att dina pipelines för kontoutdragsbearbetning måste utvecklas från MT940 till CAMT.053 före de hårda tidsfristerna.
SWIFT-migreringstidslinje
| Datum | Milstolpe | Påverkan |
|---|---|---|
| November 2025 | Samexistens MT-MX upphörde för gränsöverskridande betalningar | PACS-meddelanden är nu enbart ISO 20022 |
| November 2026 | Strukturerade/hybridadresser obligatoriska; MT101 multi-instruktion avvisas; Ärendehantering Fas 1 | Adressformat måste följa; vissa MT-meddelanden avvisas |
| Sent 2026 | Opt-in börjar för att ta emot CAMT.052/.053/.054 | Finansinstitut kan börja ta emot ISO-utdrag |
| November 2027 | Alla FI:er måste ta emot CAMT.053 direkt | SWIFT slutar konvertera MT till ISO; dina system måste tolka CAMT direkt |
| November 2028 | MT940/MT942/MT950/MT900/MT910 helt avvecklade | Äldre utdragsformat inte längre tillgängliga; CAMT.052/.053/.054 är enda alternativet |
Vad ändras för din kod
Före: Enbart MT940
from bankstatementparser import Mt940Parser
parser = Mt940Parser("statement.mt940")
df = parser.parse()
Efter: Båda formaten med autodetektering
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
Funktionen detect_statement_format() identifierar om filen är MT940, CAMT.053, PAIN.001 eller något annat format som stöds. Funktionen create_parser() returnerar rätt parser. Din nedströmskod fungerar identiskt oavsett källformat.
CAMT.053 vs MT940: Nyckelskillnader
| Funktion | MT940 | CAMT.053 |
|---|---|---|
| Datarikedom | Begränsade fält | 3–5x mer data per transaktion |
| Teckenuppsättning | Begränsad (SWIFT charset) | Full Unicode |
| Struktur | Platt text med taggar | XML med namnrymder |
| Saldorapportering | Enbart ingående/utgående | Flera saldotyper |
| Referenser | Ett enda referensfält | Flera referenstyper |
| Valutahantering | Grundläggande | Full multivaluta med växelkurser |
Hur Bank Statement Parser hjälper
- Enhetligt API: Tolka MT940, CAMT.053 och PDF-utdrag med samma arbetsflöde och få konsekvent DataFrame-utdata.
- Autodetektering: Inget behov av att veta formatet i förväg.
detect_statement_format()identifierar det automatiskt. - Hybrid-PDF-pipeline: Banker som enbart levererar PDF-utdrag under övergången hanteras av
smart_ingest()med automatisk saldoverifiering. - Namnrymdsagnostisk: Hanterar alla CAMT.053-varianter (001.02, 001.04 eller bankspecifika omslag) utan konfiguration.
- Multivaluta-verifiering:
verify_balance_multi_currency()kör Golden Rule per valutgrupp — viktigt för CAMT-utdrag med flera valutor. - Streaming: Bearbeta stora CAMT-filer (50 MB+, 50K+ transaktioner) med begränsat minne.
- Ledger-export: Exportera direkt till hledger- eller beancount-journalformat för treasury-bokföring.
- Migreringstest: Kör båda parsrarna sida vid sida på samma datumintervall för att verifiera utdatakonsistens innan du byter.
Kom igång
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
För PDF-utdrag från banker som ännu inte erbjuder strukturerade CAMT-exporter:
from bankstatementparser.hybrid import smart_ingest
result = smart_ingest("statement.pdf")
assert result.verification.status == "VERIFIED"