요약: SWIFT는 2028년 11월까지 MT940을 폐기할 예정입니다. Bank Statement Parser는 단일 API로 MT940과 CAMT.053을 모두 처리하므로 파싱 파이프라인이 전환 기간과 그 이후에도 작동합니다.
이 마이그레이션이 중요한 이유
SWIFT는 더욱 풍부한 ISO 20022 표준을 위해 레거시 MT 메시지 형식을 폐기하고 있습니다. 재무팀에게 이는 확정 기한 전에 은행 명세서 처리 파이프라인을 MT940에서 CAMT.053으로 전환해야 함을 의미합니다.
SWIFT 마이그레이션 타임라인
| 날짜 | 주요 이정표 | 영향 |
|---|---|---|
| 2025년 11월 | 국경 간 결제에 대한 MT-MX 공존 종료 | PACS 메시지는 이제 ISO 20022 전용입니다 |
| 2026년 11월 | 구조화/하이브리드 주소 필수; MT101 다중 명령 거부; 사례 관리 1단계 | 주소 형식이 준수해야 하며 일부 MT 메시지가 거부됩니다 |
| 2026년 후반 | CAMT.052/.053/.054 수신 옵트인 시작 | 금융 기관이 네이티브 ISO 명세서 수신을 시작할 수 있습니다 |
| 2027년 11월 | 모든 금융 기관은 CAMT.053을 네이티브로 수신해야 합니다 | SWIFT가 MT에서 ISO 형식으로의 변환을 중단합니다. 시스템이 CAMT를 직접 파싱해야 합니다 |
| 2028년 11월 | 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 vs MT940: 주요 차이점
| 특징 | MT940 | CAMT.053 |
|---|---|---|
| 데이터 풍부함 | 제한된 필드 | 트랜잭션당 3~5배 더 많은 데이터 |
| 문자 집합 | 제한적 (SWIFT 문자 집합) | 전체 유니코드 |
| 구조 | 태그가 포함된 플랫 텍스트 | 네임스페이스가 있는 XML |
| 잔액 보고 | 시작/마감만 | 다양한 잔액 유형 |
| 참조 | 단일 참조 필드 | 다양한 참조 유형 |
| 통화 처리 | 기본적 | 환율이 포함된 완전한 다중 통화 |
Bank Statement Parser의 도움
- 통합 API: MT940, CAMT.053, PDF 명세서를 동일한 워크플로로 파싱하며 일관된 DataFrame 출력을 생성합니다.
- 자동 감지: 형식을 미리 알 필요가 없습니다.
detect_statement_format()이 자동으로 식별합니다. - 하이브리드 PDF 파이프라인: 전환 중 PDF 전용 명세서를 제공하는 은행은 자동 잔액 검증이 포함된
smart_ingest()로 처리됩니다. - 네임스페이스 독립적: 설정 없이 모든 CAMT.053 변형(001.02, 001.04 또는 은행별 래퍼)을 처리합니다.
- 다중 통화 검증:
verify_balance_multi_currency()가 통화 그룹별로 Golden Rule을 실행합니다 — 다중 통화 CAMT 명세서에 필수적입니다. - 스트리밍: 제한된 메모리로 대규모 CAMT 파일(50MB+, 50K+ 트랜잭션)을 처리합니다.
- 원장 내보내기: 재무 회계를 위해 hledger 또는 beancount 저널 형식으로 직접 내보냅니다.
- 마이그레이션 테스트: 동일한 날짜 범위에서 두 파서를 나란히 실행하여 전환 전 출력 일관성을 확인합니다.
시작하기
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
아직 구조화된 CAMT 내보내기를 제공하지 않는 은행의 PDF 명세서의 경우:
from bankstatementparser.hybrid import smart_ingest
result = smart_ingest("statement.pdf")
assert result.verification.status == "VERIFIED"