W skrócie: SWIFT wycofa MT940 do listopada 2028. Bank Statement Parser obsługuje zarówno MT940, jak i CAMT.053 za pomocą jednego API, więc pipeline parsowania działa zarówno w okresie przejściowym, jak i po nim.
Dlaczego ta migracja ma znaczenie
SWIFT wycofuje starsze formaty komunikatów MT na rzecz bogatszego standardu ISO 20022. Dla zespołów skarbowych i finansowych oznacza to, że pipeline'y przetwarzania wyciągów bankowych muszą ewoluować z MT940 do CAMT.053 przed twardymi terminami.
Harmonogram migracji SWIFT
| Data | Kamień milowy | Wpływ |
|---|---|---|
| Listopad 2025 | Zakończenie współistnienia MT-MX dla płatności transgranicznych | Komunikaty PACS są teraz wyłącznie w formacie ISO 20022 |
| Listopad 2026 | Obowiązkowe adresy strukturalne/hybrydowe; odrzucenie MT101 z wieloma instrukcjami; faza 1 zarządzania przypadkami | Formaty adresów muszą być zgodne; niektóre komunikaty MT zostaną odrzucone |
| Koniec 2026 | Rozpoczęcie opt-in na odbieranie CAMT.052/.053/.054 | Instytucje finansowe mogą zacząć odbierać natywne wyciągi ISO |
| Listopad 2027 | Wszystkie instytucje finansowe muszą natywnie odbierać CAMT.053 | SWIFT przestaje konwertować MT do formatu ISO; systemy muszą bezpośrednio parsować CAMT |
| Listopad 2028 | Całkowite wycofanie MT940/MT942/MT950/MT900/MT910 | Starsze formaty wyciągów nie są już dostępne; jedyną opcją są CAMT.052/.053/.054 |
Co zmienia się w kodzie
Przed: tylko MT940
from bankstatementparser import Mt940Parser
parser = Mt940Parser("statement.mt940")
df = parser.parse()
Po: oba formaty z automatycznym wykrywaniem
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
Funkcja detect_statement_format() określa, czy plik ma format MT940, CAMT.053, PAIN.001 czy inny obsługiwany format. Funkcja create_parser() zwraca właściwy parser. Kod dalszego przetwarzania działa identycznie niezależnie od formatu źródłowego.
CAMT.053 vs MT940: Kluczowe różnice
| Cecha | MT940 | CAMT.053 |
|---|---|---|
| Bogactwo danych | Ograniczone pola | 3-5x więcej danych na transakcję |
| Zestaw znaków | Ograniczony (zestaw SWIFT) | Pełny Unicode |
| Struktura | Tekst płaski ze znacznikami | XML z przestrzeniami nazw |
| Raportowanie salda | Tylko otwarcie/zamknięcie | Wiele typów sald |
| Referencje | Jedno pole referencyjne | Wiele typów referencji |
| Obsługa walut | Podstawowa | Pełna wielowalutowość z kursami wymiany |
Jak Bank Statement Parser pomaga
- Ujednolicone API: Parsowanie MT940, CAMT.053 i wyciągów PDF tym samym przepływem pracy, z jednolitym wyjściem DataFrame.
- Automatyczne wykrywanie: Nie trzeba znać formatu z wyprzedzeniem.
detect_statement_format()identyfikuje go automatycznie. - Hybrydowy pipeline PDF: Banki udostępniające wyłącznie wyciągi PDF w okresie przejściowym są obsługiwane przez
smart_ingest()z automatyczną weryfikacją salda. - Niezależny od przestrzeni nazw: Obsługuje każdy wariant CAMT.053 (001.02, 001.04 lub wrappery specyficzne dla banku) bez konfiguracji.
- Weryfikacja wielowalutowa:
verify_balance_multi_currency()uruchamia Golden Rule dla każdej grupy walutowej — niezbędne dla wielowalutowych wyciągów CAMT. - Streaming: Przetwarzanie dużych plików CAMT (50 MB+, 50 tys.+ transakcji) przy ograniczonej pamięci.
- Eksport do księgi: Bezpośredni eksport do formatu dziennika hledger lub beancount dla księgowości skarbowej.
- Testowanie migracji: Uruchomienie obu parserów równolegle na tym samym zakresie dat w celu weryfikacji spójności wyników przed przełączeniem.
Pierwsze kroki
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
Dla wyciągów PDF z banków, które jeszcze nie oferują strukturalnych eksportów CAMT:
from bankstatementparser.hybrid import smart_ingest
result = smart_ingest("statement.pdf")
assert result.verification.status == "VERIFIED"
Porównaj z alternatywami ❯ | Zobacz rzeczywiste przypadki użycia ❯