Files & FormatsDialect Profiles

Dialect profiles

The profile option: named presets that bundle the right conversion options for a bank or regional MT dialect, how they combine with options you set, and where you can use them.

What a profile is

Banks in some regions follow their own habits in MT statements, for example German MultiCash exports with structured :86: narratives. Getting the matching output takes a couple of options. A profile is a named preset that sets them for you:

curl -sS -X POST "https://api.transmute.403fin.io/v1/convert?from=camt.053&to=mt940&profile=de-multicash" \
  -H "Authorization: Bearer $TRANSMUTE_KEY" \
  -H "Content-Type: application/xml" \
  --data-binary @statement.camt053.xml

A profile only bundles options that already exist. It adds no new behaviour, so anything a profile does, you can also do by setting the options yourself.

The presets

profileSets translitProfileSets field86ProfileUse it for
de-multicashgermangermanGerman MultiCash statements: German transliteration (Ä to AE, ß to SS) and the structured ?-subfield :86:
at-elbagerman(not set)Austrian ELBA statements: German transliteration. ELBA's ~ subfields in :86: are read automatically when parsing
nordicbase(not set)Nordic banks (ING, Nordea): base transliteration. Their :25: account-plus-currency style is detected automatically when parsing

What the two options do:

  • translitProfile decides how characters outside the SWIFT X character set are rewritten in MT output (base or german).
  • field86Profile decides how the :86: narrative of MT940 and MT942 output is composed (plain or german).

Both shape MT output. Reading bank dialects happens automatically on every request, with or without a profile.

The live list, with exactly what each preset sets, is profiles in GET /v1/formats:

"profiles": [
  { "id": "at-elba", "description": "Austrian ELBA statements: ...", "options": { "translitProfile": "german" } },
  { "id": "de-multicash", "description": "German MultiCash statements: ...", "options": { "translitProfile": "german", "field86Profile": "german" } },
  { "id": "nordic", "description": "Nordic banks (ING/Nordea): ...", "options": { "translitProfile": "base" } }
]

Your options win

A profile fills only the options your request leaves empty. Any option you set yourself is kept, even when it's the default value:

{
  "from": "camt.053",
  "to": "mt940",
  "message": "<?xml version="1.0"?>...",
  "options": { "profile": "de-multicash", "field86Profile": "plain" }
}

This request gets German transliteration from the preset and the plain :86: you asked for.

Where you can use it

SurfaceHow
POST /v1/convertoptions.profile in the JSON envelope, or ?profile= on raw requests
POST /v1/normalizeoptions.profile or ?profile=
Batch itemsoptions.profile on each item
File connector watchesprofile in the watch's options

There is no header form. An unknown name is invalid-input 400, and the detail lists the supported values: unknown profile "x": supported values are at-elba, de-multicash, nordic.

New presets are added as data and show up in GET /v1/formats first. Read the list from there rather than hard-coding it.