Open a bank statement message — a camt.052, camt.053, or camt.054 — and every entry on it
carries a BankTransactionCodeStructure: a compact classification of what kind of transaction it
actually is. A SEPA credit transfer, an ACH debit, a card settlement, a standing order — each gets a
specific code, not a free-text description. That classification scheme, the Bank Transaction Code
(BTC) hierarchy, is maintained separately from the core ISO 20022 specification, and it’s now
something our MCP server can resolve directly.
A three-level hierarchy
BTC codes aren’t one flat list — they’re three levels deep, and not every combination of levels is valid. A code is a Domain (the broad area — Payments, Securities, Foreign Exchange), narrowed to a Family within that Domain, narrowed again to a Sub-Family. The registry we’ve embedded covers all of it: 11 Domains, 104 Families, 284 Sub-Families, and 1,567 valid Domain/Family/ Sub-Family combinations — parsed directly from the ISO 20022 Registration Authority’s own codification spreadsheet.
The 11 Domains give a sense of the breadth involved:
| Code | Domain |
|---|---|
| ACMT | Account Management |
| CAMT | Cash Management |
| CMDT | Commodities |
| DERV | Derivatives |
| FORX | Foreign Exchange |
| LDAS | Loans, Deposits & Syndications |
| PMNT | Payments |
| PMET | Precious Metal |
| SECU | Securities |
| TRAD | Trade Services |
| XTND | Extended Domain |
A concrete example
PMNT (Payments) alone breaks into 19 Families — everything from issued cheques to card
transactions to standing orders. Drill into its RCDT Family (Received Credit Transfers) and you
land on 41 Sub-Families, and this is where the codes get genuinely recognizable if you’ve ever read
a bank statement closely:
| Code | Sub-Family |
|---|---|
| ESCT | SEPA Credit Transfer |
| ACDT | ACH Credit |
| SDVA | Same Day Value Credit Transfer |
| SALA | Payroll/Salary Payment |
| STDO | Standing Order |
| XBCT | Cross-Border Credit Transfer |
| BOOK | Internal Book Transfer |
That’s the level of specificity BTC actually operates at — ESCT isn’t “a credit transfer,” it’s
specifically a SEPA one; SDVA tells you same-day value was involved. It’s what lets downstream
systems classify statement entries automatically instead of parsing free-text narrative.
How to explore it
It follows the same drill-down pattern as our other reference documents — three calls, each narrowing the path by one level:
get_reference_data("Bank Transaction Codes") → lists all 11 Domains
get_reference_data("Bank Transaction Codes", "CAMT") → lists Families in Cash Management
get_reference_data("Bank Transaction Codes", "CAMT/MCOP") → lists Sub-Families for that Domain+Family
Sub-Family is the deepest level — what you get back at that point is the complete, authoritative
list of valid combinations for that specific Domain/Family pair, not a guess. As always,
get_reference_data("__status__") shows the registry’s current version alongside our other
reference documents.