Last reviewed: · Curated by Ohmyfin Organisation editorial.
Build a structurally-valid SWIFT FIN or ISO 20022 XML message in the browser, validate it against the SWIFT User Handbook and CBPR+, and (optionally) translate between MT and MX. Every drafter has a free public REST API (100 requests / IP / day, no signup, CORS-open) and ships in the open-source @ohmyfin/swift-draft npm package so you can self-host.
Block-structured legacy FIN messages. Validated against the SWIFT User Handbook character sets and field lengths; output is a real 4-block message you can paste into Alliance Access.
XML messages under CBPR+ — the format every cross-border SWIFT participant must send and receive from November 2025. Validated against the published XSDs and the CBPR+ usage guidelines.
Convert between SWIFT MT and ISO 20022 in either direction. Surfaces structured warnings whenever the translation is lossy (uetr-missing, valuedate-default, structured-address-dropped, best-effort) so you can decide whether to ship.
The same validators, serialisers and translator that power every drafter on this page — MIT-licensed, zero-dependency TypeScript, runs in Node and the browser. Self-host for unlimited throughput.
Yes. The drafter validates every field against the SWIFT User Handbook (character sets, BIC and IBAN rules, ISO 4217 currencies, SWIFT date format) and emits a real 4-block FIN message. To actually send it through SWIFT you still need Alliance Access (or a service-bureau equivalent) and a BIC connected to FIN — Ohmyfin does not transmit messages.
No. The forms run client-side; the optional REST API validates and returns the formatted message without persisting any payload. The Share button puts the payload in the URL # fragment, which never reaches our server.
100 requests per IP per day, shared across every /api/draft/* endpoint (drafters, validators, MT↔MX translator). For higher throughput, self-host the open-source @ohmyfin/swift-draft npm package — it has no rate limit because it runs entirely on your machine.
The tracker is read-only: paste a UETR and we look up the latest available status across the SWIFT network. The drafters are write-only: build a message before you hand it to your bank, or to sanity-check a message a counterparty sent you. The two surfaces never share data.
MT103, MT202, MT202COV and MT199 on the FIN side; pacs.008, pacs.009 (core + COV), pacs.002, camt.053 and camt.054 on the ISO 20022 side. The translator covers MT103↔pacs.008, MT202↔pacs.009, MT202COV↔pacs.009.COV and MT199→pacs.009 (best-effort).
It is production-ready for validation, serialisation and translation. It is not a SWIFT transmission engine — you still need Alliance Access / SAG / Alliance Lite2 (or a service bureau) to put a message on FIN. Use the library to build, validate and translate; use SWIFT itself to send.