TL;DR: SWIFT прекратит поддержку MT940 к ноябрю 2028 года. Анализатор банковских выписок обрабатывает как MT940, так и CAMT.053 с помощью единого API, поэтому ваш конвейер анализа работает во время перехода и после него.
Почему эта миграция важна
SWIFT отказывается от устаревших форматов сообщений MT в пользу более расширенного стандарта ISO 20022. Для отделов казначейства и финансов это означает, что ваши конвейеры обработки банковских выписок должны перейти от MT940 к CAMT.053 до наступления жестких сроков.
График миграции SWIFT
| Дата | Веха | Влияние |
|---|---|---|
| Ноябрь 2025 г. | Сосуществование MT-MX прекращено для трансграничных платежей | Сообщения PACS теперь относятся только к ISO 20022. |
| Ноябрь 2026 г. | Структурированные/гибридные адреса обязательны; Мультиинструкция MT101 отклонена; Управление делами, этап 1 | Форматы адресов должны соответствовать; некоторые сообщения MT будут отклонены |
| Конец 2026 г. | Начинается подписка на получение CAMT.052/.053/.054. | Финансовые учреждения могут начать получать собственные заявления ISO |
| Ноябрь 2027 г. | Все финансовые учреждения должны получить CAMT.053 изначально. | SWIFT прекращает преобразование формата MT в ISO; ваши системы должны анализировать CAMT напрямую |
| Ноябрь 2028 г. | MT940/MT942/MT950/MT900/MT910 полностью выведены из эксплуатации | Устаревшие форматы операторов больше не доступны; CAMT.052/.053/.054 — единственный вариант. |
Какие изменения в вашем коде
Раньше: только MT940
from bankstatementparser import Mt940Parser
parser = Mt940Parser("statement.mt940")
df = parser.parse()
После: оба формата с автоматическим определением
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
detect_statement_format()Функция определяет, имеет ли файл формат MT940, CAMT.053, PAIN.001 или любой другой поддерживаемый формат.create_parser()функция возвращает правильный парсер. Ваш последующий код работает одинаково независимо от исходного формата.
CAMT.053 против MT940: ключевые различия
| Особенность | МТ940 | CAMT.053 |
|---|---|---|
| Богатство данных | Ограниченные поля | В 3-5 раз больше данных за транзакцию |
| Набор символов | Ограниченный (кодировка SWIFT) | Полный Юникод |
| Структура | Плоский текст с тегами | XML с пространствами имен |
| Отчетность по балансу | Только открытие/закрытие | Несколько типов баланса |
| Ссылки | Одно поле ссылки | Несколько типов ссылок |
| Обработка валюты | Базовый | Полная мультивалютность с обменными курсами |
Как помогает анализатор банковских выписок
- Унифицированный API: анализируйте MT940 и CAMT.053 с помощью одного и того же.
parse()метод, создающий идентичные схемы DataFrame. - Автоопределение: нет необходимости заранее знать формат.
detect_statement_format()идентифицирует его автоматически. - Независимость от пространства имен: обрабатывает любой вариант CAMT.053 (001.02, 001.04 или оболочки, специфичные для банка) без настройки.
- Потоковая передача: обработка больших файлов CAMT (более 50 МБ, более 50 тысяч транзакций) с ограниченной памятью.
- Тестирование миграции. Запустите оба анализатора одновременно в одном и том же диапазоне дат, чтобы проверить согласованность выходных данных перед переключением.
Начиная
pip install bankstatementparser
from bankstatementparser import create_parser, detect_statement_format
# Works with MT940 today, CAMT.053 tomorrow
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
Прочитайте полную документацию
Сравнить с альтернативами ❯ | См. реальные примеры использования ❯