MT / MX Translations

Out-of-the-box bidirectional translations between FIN MT and ISO 20022 MX messages, with full CBPR+ compliance and intelligent variant detection for 15+ regional clearings.
MT → MX

MT to MX Translation

Convert FIN MT messages to their ISO 20022 MX equivalents using specific translator classes or the generic TranslatorFactory API. Each translator implements the SWIFT-defined mapping rules including logical message criteria and precondition checks.

Specific translator classes per MT/MX pair (e.g., MT564 → MxSeev039)
Generic API via TranslatorFactory for automatic translator resolution
Precondition checking API to verify translation eligibility before execution
Logical message criteria validation per SWIFT translation rules
Full typed access to the resulting MX model object
java
// Specific translator class
MT564 source = MT564.parse(fin);
MT564_MxSeev03900202_Translation translator =
    new MT564_MxSeev03900202_Translation();
MxSeev03900202 mx =
    translator.translate(source);

// Or use the generic factory API
AbstractMT source =
    AbstractMT.parse(fin);
Translator<AbstractMT, AbstractMX> t =
    TranslatorFactory.getTranslator(source);
if (t != null) {
    AbstractMX mx = t.translate(source);
    System.out.println(mx.message());
}
MX → MT

MX to MT Translation

Convert ISO 20022 MX messages back to FIN MT equivalents. Handles complex one-to-many mapping scenarios where a single MX type maps to multiple MT variants — such as pacs.009 translating to MT200, MT202, MT202COV, or MT205 depending on message content.

Specific translator classes per MX/MT pair
One-to-many mapping support (e.g., pacs.009 → MT200/202/202COV/205/205COV)
Business logic for variant resolution (COV detection, own-account checks)
ADV message handling for CBPR+ advice variants
Full AppHdr (BAH) processing for sender/receiver/service detection
java
// MX to MT with variant resolution
MxPacs00900108 mx =
    (MxPacs00900108) AbstractMX.parse(xml);

// Detect COV, OWN, or standard translation
if (isCOV(mx)) {
    MxPacs00900108_MT202COV_Translation t =
      new MxPacs00900108_MT202COV_Translation();
    AbstractMT mt = t.translate(mx);
} else {
    MxPacs00900108_MT202_Translation t =
      new MxPacs00900108_MT202_Translation();
    AbstractMT mt = t.translate(mx);
}

System.out.println(mt.message());
Data Integrity

Truncation Handling

When the source element value does not fit in the target message field, the translation will truncate the content. This is especially common when translating from MX to MT, where MT fields are shorter than MX elements.

By default, truncation is done with evidence — the translated content will contain an explicit + symbol at the end of truncated fields, signaling that data has been cut. The translator also stores the original and truncated content, so a full truncation report can be generated programmatically.

Automatic truncation when MX content exceeds MT field length
Evidence-based truncation with '+' marker in translated output
Truncation report via getTruncatedContent() method
Original and truncated values preserved for auditing and reporting
java
// Translate and check for truncation
MxPacs00800102_MT103_Translation translator =
    new MxPacs00800102_MT103_Translation();

MT103 mt = translator.translate(mx);

// Check if any content was truncated
List<TruncatedContent> truncated =
    translator.getTruncatedContent();

for (TruncatedContent tc : truncated) {
    System.out.println(
        "Field: " + tc.getTag()
        + " Original: " + tc.getOriginal()
        + " Truncated: " + tc.getValue());
}
Quality Control

Preconditions & Compliance

For a valid translation output, three premises must be satisfied: the source message should be valid, the logical message criteria check should pass (the source must match the specific translation being applied), and the preconditions on the source message should pass.

The translation module does not run full compliance validation on source or target messages — the Prowide Integrator Validation module can be used for that purpose. Since translations are sensitive to data, it is recommended to run validation on the translated message as a final step before sending it through the network.

Programmatic precondition checking before translation execution
Detailed PreconditionError list with error codes and descriptions
Logical message criteria validation (field presence, qualifier values)
Recommended pipeline: Validate source → Check preconditions → Translate → Validate target
java
// Check preconditions before translating
MT564_MxSeev03900202_Translation translator =
    new MT564_MxSeev03900202_Translation();

List<PreconditionError> errors =
    translator.preconditionsCheck(source);

if (errors.isEmpty()) {
    // Safe to translate
    MxSeev03900202 mx =
        translator.translate(source);

    // Recommended: validate the result
    // using the Validation module
} else {
    // Handle precondition failures
    for (PreconditionError e : errors) {
        System.out.println(
            e.getCode() + " "
            + e.getDescription());
    }
}
Translation Standards & Market Infrastructures
Depending on the user group, central bank RTGS, clearing system, or market infrastructure, specific translations may be required. The Prowide translations module is implemented in layers — a set of base mappings common to all clearings, defined in the TranslatorStandard enum, which can be used as-is or as a base to derive more specific translators for different clearing systems.

Base Translation Standards

Standard Description
ISOGeneric ISO 20022 base mappings
CBPR+SWIFT Cross-Border Payments and Reporting Plus
IAPISO Accelerator Package (v1.1 and v1.2) — base for many clearing-specific translators
SWIFTGOSWIFT GPI translations

The ISO, CBPR+, and IAP standards are fully covered. IAP in particular serves as the foundation for many clearing-specific translators, meaning regional customizations build on a well-tested, comprehensive base.

Clearing-Specific Translators

These standard translators can be used as-is, or as a base implementation to derive more specific translators for different clearing systems. The following regional RTGS and clearing systems have out-of-the-box customized translations:

SIC

Swiss RTGS — Swiss Interbank Clearing system translations with SNB-specific rules.

RITS

Australian RTGS — Reserve Bank Information and Transfer System translations.

CHATS

Hong Kong RTGS — Clearing House Automated Transfer System translations.

SCRIPS / MEPS+

Legacy Singapore Clearing and Payment System / MEPS+ Singapore RTGS translations.

T2S / TARGET2

Euro area TARGET2 system translations with ECB-specific rules for high-value payments and securities settlement.

LYNX

Canadian RTGS — Bank of Canada's high-value payment system translations.

FISC

Taiwan RTGS — Financial Information Service Co. payment system translations.

EBA

Euro Banking Association -- E1-S1 euro clearing and settlement translation variants.

Fedwire

US Federal Reserve wire transfer system translation variants with local market conventions.

And More

New clearing-specific translators are added continuously, or can be configured via JSON on top of a base translator package.

Message Type Coverage
Bidirectional translations across all major SWIFT message categories.

Payments (1xx / 2xx)

MT103 ↔ pacs.008, MT202 ↔ pacs.009, MT200 ↔ pacs.009, MT202COV ↔ pacs.009, MT205 ↔ pacs.009. Includes STP, REMIT, and COV variants with full CBPR+ compliance.

Cash Management (9xx)

MT940 ↔ camt.053, MT942 ↔ camt.052, MT900/910 ↔ camt.054. Statement and debit/credit notification translations.

Securities (5xx)

MT535 ↔ semt, MT536 ↔ semt, MT540-MT543 ↔ sese, MT548 ↔ sese, MT564 ↔ seev, MT566 ↔ seev, MT567 ↔ seev. Full corporate actions and settlement instruction translations.

Trade Finance & More

MT300 ↔ fxtr, MT700/MT707 ↔ tsmt. Foreign exchange confirmations and trade services translations with additional categories being added continuously.

What SWIFT will not translate
SWIFT's in-flow translation is a temporary, chargeable bridge for payments — and for several message categories it does not exist at all. As coexistence ends, ineligible messages are rejected (NAK) rather than converted. Where SWIFT stops, a maintained translation engine is the only path.

Statements (SR2028)

MT940, MT942 and MT950 statements migrate to camt.053 / camt.052. SWIFT provides no MT-to-ISO conversion — receiving institutions must translate or consume camt natively from November 2027.

Direct debits (SR2028)

MT104 / MT107 / MT204 move to pain.008, pacs.003 and pacs.010. No SWIFT in-flow translation is offered for direct-debit traffic.

Charges & advices (SR2028)

MT19x / MT29x charges messages migrate to camt.105 / camt.106, again with no SWIFT conversion path.

Exceptions & Investigations (Nov 2027)

E&I moves to Case Management with camt.110 / camt.111 and cancellations camt.056 / camt.029 — no in-flow translation support.

MT101 (Nov 2026)

Only single, eligible MT101 messages are auto-translated to pain.001, for a fee; multi-instruction MT101 is rejected. The engine removes the dependency on SWIFT's chargeable bridge.

In-flow translation fees (Jan 2026)

SWIFT's in-flow translation for payments is chargeable from January 2026 and billed per sending BIC. An in-house engine with early SRG updates avoids the recurring charge.

Translation Specifications

Capabilities

Direction: Bidirectional MT ↔ MX
Standards: ISO, CBPR+, IAP, SWIFTGO base translators
Clearings: SIC, RITS, CHATS, SCRIPS, MEPS+, T2S, LYNX, FISC, EBA, Fedwire, and more
Truncation: Evidence-based with '+' marker and truncation report
Preconditions: Programmatic check before translation
API: Specific translator classes + generic factory

Integration

Dependency: Prowide Integrator SDK
Input: Typed MT/MX objects, raw FIN, or XML
Output: Fully typed MT or MX model objects
Error Handling: LogicalMessageCriteriaException, PreconditionError
Updates: Yearly SRG releases with new translation pairs
Accelerate your ISO 20022 migration
Production-ready translations that eliminate months of in-house development. Contact us for trial access.