# SWIFTFramework 2026.2

Typed .NET library for parsing, creating, validating, and serializing SWIFT FIN MT messages.

| | |
|---|---|
| Version | **2026.2.724** |
| Target | **.NET 10** (`net10.0`) |
| Assembly | `SWIFTFramework.dll` (strong-named) |
| License product | `SWF-26-2x` (`SWF-26-20` … `SWF-26-24`) |
| Message types | 291 MT / MTS classes (categories 0–9) |

## Package contents

```
2026.2/
  README.md                 This file
  LLM.txt                   AI / LLM working guide (start here for agents)
  lib/
    SWIFTFramework.dll      Release binary
    SWIFTFramework.xml      IntelliSense / API comments
    SWIFTFramework.deps.json
  docs/
    getting-started.md
    licensing.md
    parsing-and-writing.md
    creating-messages.md
    validation.md
    xml.md
    api-reference.md
    message-types.md
    sample-mt103.cs
  samples/
    README.md
    Samples.sln
    ParseAndModify/         Parse FIN, print XML, edit, write FIN
    CreateMessage/          Build MT103 from code
    XmlRoundTrip/           Structured XML export / import
```

## Quick start

```csharp
using SWIFTFramework;
using SWIFTFramework.Messages.Category1;
using SWIFTFramework.Validation;

Licensing.RunTimeLicenseKey = Environment.GetEnvironmentVariable("SWIFTFRAMEWORK_RUNTIME_LICENSE_KEY");

var parser = new SwiftParser();
var errors = new List<ValidationError>();
SwiftMessage message = parser.GetMessage(swiftText, errors);

var mt103 = (MT103)message;
mt103.Tag59_BeneficiaryCustomer.Value = "/1122334455";
string updated = parser.GetMessageAsText(mt103);
```

A valid **2026.2 runtime** license key must be set before any `SwiftMessage` is constructed. **Samples never include a key.**

```bash
export SWIFTFRAMEWORK_RUNTIME_LICENSE_KEY='your-purchased-key'
dotnet run --project samples/ParseAndModify/ParseAndModify.csproj
```

From the repository root (source sample):

```bash
export SWIFTFRAMEWORK_RUNTIME_LICENSE_KEY='your-purchased-key'
dotnet run --project Framework/SourceCode/ConsoleSample/ConsoleSample.csproj
```

See [samples/README.md](samples/README.md) and [docs/licensing.md](docs/licensing.md).

## Documentation

| Document | Audience |
|---|---|
| [LLM.txt](LLM.txt) | AI assistants and codegen tools |
| [Getting started](docs/getting-started.md) | First project, reference, first parse |
| [Licensing](docs/licensing.md) | Runtime keys, product monikers, exceptions |
| [Parsing and writing](docs/parsing-and-writing.md) | Text in / text out |
| [Creating messages](docs/creating-messages.md) | Build MT objects from code |
| [Validation](docs/validation.md) | Errors, rules, optional parse-without-validate |
| [XML](docs/xml.md) | Structured, raw, and BizTalk export/import |
| [API reference](docs/api-reference.md) | Public types and methods |
| [Message types](docs/message-types.md) | Full MT list and namespaces |

## Requirements

- .NET 10 runtime or SDK
- A 2026.2 runtime license (`SWF-26-2x`)
- No extra NuGet dependencies (the library is self-contained)

## Compatibility notes

- This release is **.NET 10 only**. The older .NET Framework 4.7.2/4.8 line is a separate tree.
- Design-time `licenses.licx` is not used. Set `Licensing.RunTimeLicenseKey` in code or via .NET User Secrets.
- SWIFT amounts use a **comma** as the decimal separator (`14551,` or `14551,00`).
- Dates in tags such as `32A` are `yyMMdd`.
