SDKs.NET

.NET SDK

The .NET client (netstandard2.0 and net8.0) — typed requests and responses generated from the OpenAPI document, on HttpClient, plus a webhook signature verifier.

Getting it

PackageFin403.Transmute
NamespacesFin403.Transmute (helpers), Fin403.Transmute.Api, .Client, .Model
Targetsnetstandard2.0 and net8.0
DependenciesNewtonsoft.Json, Polly; HTTP is System.Net.Http.HttpClient
dotnet add package Fin403.Transmute --version X.Y.Z

The package version tracks the API release: X.Y.Z is generated from API release vX.Y.Z.

Not on NuGet yet. Until the first release is published, the package is provided during onboarding — contact support.

Convert a message

using Fin403.Transmute;
using Fin403.Transmute.Api;
using Fin403.Transmute.Model;

var http = TransmuteClient.CreateHttpClient();          // reuse one per process
var config = TransmuteClient.CreateConfiguration(
    "https://api.transmute.403fin.io",
    Environment.GetEnvironmentVariable("TRANSMUTE_KEY"));
var engine = new EngineApi(http, config);

var mt940 = string.Join("\r
",
    "{1:F01AAAADEFFXXXX0000000000}{2:I940BBBBDEFFXXXXN}{4:",
    ":20:STMT0001",
    ":25:DE89370400440532013000",
    ":28C:00042/001",
    ":60F:C260601EUR1000,00",
    ":61:2606020602C250,00NTRFNONREF//BANKREF1",
    ":86:INVOICE 4711",
    ":62F:C260602EUR1250,00",
    "-}");

var resp = await engine.ConvertMessageAsync(new ConvertRequest(
    to: "camt.053",
    message: mt940));                                   // from omitted → auto-detect

Console.WriteLine(resp.Meta.DetectedType);            // "mt940"
var camt053 = resp.Result.GetString();
foreach (var w in resp.Warnings)
    Console.WriteLine($"{w.Code} ({w.Severity}): {w.Detail}");

resp.Result holds one string (GetString()) or, when MT paging splits the output, a list (GetList(); Meta.Pages is then set). CreateConfiguration also accepts an OAuth access token in place of an API key. Errors throw ApiException: ErrorCode is the HTTP status and ErrorContent the RFC 9457 problem document, whose type slug is in the error catalog.

API version, Standards Release and envelope

Option.NETWhat it does
X-Api-VersionTransmuteClient.CreateHttpClient(apiVersion: "2026-06-01") for every request; the xApiVersion: argument on one call winsPins date-versioned behaviour — today, the default Standards Release. Unset: your API key's pin, else the current version. See Migrating from SR2025 to SR2026.
srVersionnew ConvertOptions(srVersion: SRVersion.SR2026) (also normalize, validate, batch)Explicit Standards Release; always wins over the API version's default.
envelope (convert)new ConvertOptions(envelope: ConvertOptions.EnvelopeEnum.Apphdr); Fin for MT targetsapphdr adds a head.001.001.02 Business Application Header before the MX Document; fin wraps MT output in FIN blocks 1 and 2.
envelope (normalize)new NormalizeOptions(envelope: NormalizeOptions.EnvelopeEnum.Include)Adds result.envelope (the source's FIN headers or Business Application Header).

Options you do not set are not sent (the boolean strict is always sent, as false unless you set it — the API's own default), so an unpinned client follows the API version policy.

Verify a webhook delivery

try
{
    WebhookSignature.Verify(
        endpointSecret,                                 // "whsec_..." — the full string
        Request.Headers["X-Transmute-Signature"],       // "t=...,v1=..."
        rawBody,                                        // raw bytes, read before parsing
        WebhookSignature.DefaultTolerance);             // 5 minutes
}
catch (WebhookSignatureException)
{
    return BadRequest();
}

Constant-time comparison and the replay-window check are built in — see Webhooks for the delivery contract.

Notes

  • Generated with openapi-generator (csharp, httpclient library) from the same OpenAPI document that serves api.transmute.403fin.io/docs, with the dashboard-internal portal routes removed; a CI gate keeps them in lockstep.
  • Amount fields are strings in all response types — parse with decimal, never double.

"SWIFT" is a trademark of S.W.I.F.T. SCRL. transmute converts SWIFT MT messages; it is not affiliated with, endorsed by, or certified by SWIFT.