Schema-version support matrix#
Which ISO 20022 camt.05x schema revisions are supported by which
release of the camt053 suite, with the 14–16 November 2026
CBPR+ cliff annotated.
The library accepts (parses, validates, reverses) every revision in
the Current column; revisions in the Deprecated column still
parse and validate but emit a deprecation diagnostic; everything else
is refused by validate_schema_version(..., strict=True).
Current camt053 (suite v0.0.6 / v0.0.7)#
Family |
Revision |
Status |
CBPR+ Nov 2026 |
T2S MR2026 |
Notes |
|---|---|---|---|---|---|
|
|
Current |
✅ Accepted |
— |
CBPR+ producer lingua franca (BNY, JPM, Citi, GS, DB, BNP, SC). |
|
|
Current |
✅ Accepted |
✅ T2S MR2026 target |
The cross-border current set. |
|
|
Current |
✅ Accepted |
— |
The cross-border current set on the producer side. |
|
|
Current |
✅ Accepted |
✅ T2S MR2026 target |
Default revision for new code. |
|
|
Current |
✅ Accepted |
— |
Wider family kept current alongside |
|
|
Current |
✅ Accepted |
— |
|
|
|
Current |
✅ Accepted |
✅ T2S MR2026 target |
|
|
|
Deprecated |
❌ Rejected post-cliff |
— |
Library still parses; emits a deprecation diagnostic. |
Anything else ( |
— |
Unsupported |
— |
— |
Refused by |
The authoritative version sets live in
camt053/schema_version.py
(CURRENT_SCHEMA_VERSIONS, DEPRECATED_SCHEMA_VERSIONS).
Discovery API#
from camt053.schema_version import (
classify_schema_version,
detect_schema_version,
validate_schema_version,
)
xml = open("bank-statement.xml").read()
# Quick: which revision is this payload?
detect_schema_version(xml) # "camt.053.001.13"
# Bucketed: "current" / "deprecated" / "unknown" / "unsupported"
classify_schema_version(detect_schema_version(xml)) # "current"
# Strict gate (raises UnsupportedSchemaError on "unsupported"):
validate_schema_version(xml, strict=True)
The same surface is exposed through the
camt053-mcp
validate_statement tool and the REST API’s /validate endpoint, so
agents and HTTP clients reach the same classification.
The 14–16 November 2026 cliff#
A coordinated CBPR+ / Fedwire / CHAPS / T2 cutover lands across the weekend of 14–16 November 2026:
CBPR+ rejects payment instructions carrying unstructured-only postal addresses (TownName + Country must be structured siblings, not
AdrLinelines). Seecheck_cbpr_readinessfor the rule.camt.110/camt.111become mandatory for exceptions and investigations, replacing legacy MT 19x flows on cross-border.T2S R2026.NOV upgrades the T2S RTGS and T2 RTGS systems to schema revision MR2026:
camt.053/camt.054produced by T2 RTGS move to the MR2026 variant; older variants are no longer accepted by the T2/T2S RTGS at receipt.
After the cliff, only the rows marked ✅ in the matrix above will be
accepted by the major clearing systems. Deprecated revisions
(.02–.07) and unstructured-only payloads will be rejected at
receive-time.
Practical cookbook:
# Pre-flight a statement before forwarding it on:
from camt053.compliance import check_cbpr_readiness
report = check_cbpr_readiness(xml)
if not report["cbpr_ready"]:
raise RuntimeError(
f"payload not CBPR+ ready: {report['issues']}"
)
Backwards-compatibility policy#
The camt053 suite follows SemVer at the 0.0.x series. Within a
minor release line the matrix above is stable: a revision marked
Current today will not be downgraded to Deprecated by a patch
release. Removal from Current to Deprecated is a minor-bump
event with a CHANGELOG entry; removal from the codebase entirely is
a major-bump event.
A revision can be promoted into the Current set in a patch release when the XSD is bundled and the unit tests cover the round trip.
Suite alignment#
Package |
Reads camt.05x revisions covered by this matrix |
|---|---|
|
All |
All (via |
|
All (via |
|
All (consumes |
|
Emits a |