Getting StartedWhat is transmute?

What is transmute?

transmute is a stateless API that converts SWIFT MT messages to and from ISO 20022 (MX), normalizes both to canonical JSON, and validates them.

Overview

transmute is an API-first conversion service for financial messages:

  • Convert — SWIFT MT ↔ ISO 20022 (MX) in both directions, e.g. MT940 → camt.053 or pacs.008 → MT103, plus file render targets for accounting imports.
  • Normalize — either family into one canonical JSON shape, so your application parses a single format regardless of what your counterparties send.
  • Validate — syntax and schema validation with structured findings.
  • Enrich — BIC and structural reference checks.

Everything is driven by three endpoints (POST /v1/convert, POST /v1/normalize, POST /v1/validate) behind a bearer API key. The interactive endpoint reference generated from our OpenAPI document is always available at api.transmute.403fin.io/docs.

"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.

Privacy: stateless by design

Your message contents are never persisted and never logged. Only metadata — message type, byte size, duration, status code, warning codes — is recorded, for metering and billing. This applies to every surface: database, logs, metrics, and traces.

The single, explicit exception: if you opt in to idempotency by sending an Idempotency-Key header, the response is cached for 24 hours so replays can be served verbatim. Omit the header and nothing about your message ever touches storage.

Nothing is lost silently

Conversion between formats with different capacities is inherently lossy at the edges — a long remittance string may not fit an MT field; MT940 has no creation timestamp that camt.053 requires. transmute's contract is that every lossy or assumed step surfaces as a structured entry in the warnings[] array, with a stable code from a closed warning registry. If the response carries no lossy warnings, nothing was dropped.

How requests work

POST /v1/convert          Authorization: Bearer tk_live_...
  body: raw MT text, raw ISO 20022 XML, or a JSON envelope
  →   { "result": "...", "warnings": [...], "meta": {...} }

Errors are always RFC 9457 application/problem+json with a type URI that resolves to a page in the error catalog. Money amounts in canonical JSON are strings, never floats.

Next steps

  1. Create an account in the portal.
  2. Get an API key — start with a tk_test_ key: never billed, with a one-time 250-request allowance to evaluate everything.
  3. Run the quickstart: convert an MT940 in one curl.