Right alongside the MCP server’s own update to the June 26, 2026 ISO 20022 snapshot, we’ve brought the C# ISO 20022 Library — our free, open, .NET implementation of the standard — up to date as well. It now covers 3,311 message types from the current specification, with full XML and JSON serialization for each one.
If you’ve never run across it: this is a from-scratch .NET class library that turns the ISO 20022 specification into strongly-typed, IntelliSense-friendly C# — records and structs the compiler actually helps you use correctly, instead of a loose bag of XML you have to trust yourself to get right.
Primitive types you can trust, not just strings
The part of this update we’re most excited about isn’t new to this release, but it’s worth calling
out for anyone who hasn’t looked at the library recently: every ISO 20022 primitive type — text
fields, identifiers like BIC and IBAN, indicators, and more — is now a validated, readonly
struct, not a bare string or decimal.
What that buys you:
- Invalid data can’t exist. A struct validates its length, character set, and pattern the moment it’s constructed. If a value doesn’t conform to what ISO 20022 actually allows, you get an immediate, specific exception — not a value that quietly sails through your system until it fails a payment rail or a counterparty’s validator months later.
- The error tells you what’s wrong. Constraint violations come back as specific, actionable messages — too long, too short, invalid character, pattern mismatch — with the actual and allowed values included, not a generic “invalid input.”
- The compiler catches mistakes a plain string never could. A BIC and an IBAN are both “just a string” if you represent them that way — nothing stops you from passing one where the other belongs. As distinct struct types, that mistake doesn’t compile.
- No performance tax for the safety. These are
readonly structs, not classes — value-type semantics, no extra heap allocations, no GC pressure for wrapping what used to be a plain string.
In short: dirty data that doesn’t fit the ISO 20022 spec can’t be introduced into your system in the first place, because it’s rejected at the one point where it would otherwise sneak in — construction.
Getting multiplicity right
We also completed a full audit of multiplicity — the spec’s rules for whether a field allows one value or many — across the entire library, correcting a number of properties from how they were modeled in the previous version.
The spec is explicit about this for every one of its 110,000+ message elements: a field is either a single value or a repeatable collection. A prior, smaller audit had sampled a subset of the codebase and extrapolated an estimate. This time we checked everything — every element’s declared multiplicity across all 14,564 components, cross-referenced one by one against the actual C# property type — rather than trust a sample. That found 80 fields that the spec defines as repeatable but that the library had modeled as a single scalar value instead, silently discarding anything beyond the first occurrence. All 80 are now corrected to proper collections, and the audit was re-run afterward to confirm none remain.
Built by using our own product
There’s a bit of dogfooding worth mentioning here: this library was built and validated using an Enterprise subscription to our own MCP server — the same product this whole company is built around. Every message definition, every constraint, every code set in this library was checked against the live, authoritative specification data our AI tooling serves, not against a hand-maintained copy that could quietly drift out of sync.
Free, permissively licensed, and growing
The library is released under the MIT License — free to use, modify, and ship, commercial or otherwise, no strings attached. It’s under active development toward being a fully functional, production-grade implementation of the standard, and it’s not alone: a FluentValidation companion package already exists for business-rule validation beyond what the type system alone can express — that’s significant enough to get its own write-up shortly. Beyond that, expect more associated libraries in the near future as we round out the ecosystem around the core types.
Get it from NuGet:
BeneficialStrategies.Iso20022 →
dotnet add package BeneficialStrategies.Iso20022
Source, issue tracker, and full documentation live on GitHub.