Free Online ISO 20022 XML to JSON Converter & SWIFT MX Inspector
Instant, zero-install ISO 20022 XML to JSON converter running on Cloudflare Workers edge isolates. Parses pacs.008, pacs.002, pain.001, pain.002, camt.053, and camt.054 into typed JSON in sub-5ms. This specification documents the exact field layout, checksum rules, and validation behavior so your integration matches ISO 20022 XML Financial Schemas without reading the source standard.
⚡ Live Free Online ISO 20022 XML to JSON Converter & SWIFT MX Inspector Interactive Workbench
Test real-time validation and schema parsing for Free Online ISO 20022 XML to JSON Converter & SWIFT MX Inspector directly in your browser. Runs in sub-5ms with zero setup.
{
"status": "Click RUN VALIDATION to execute on the Cloudflare edge..."
}
Quick Summary: Instant, zero-install ISO 20022 XML to JSON converter running on Cloudflare Workers edge isolates. Parses pacs.008, pacs.002, pain.001, pain.002, camt.053, and camt.054 into typed JSON in sub-5ms. Validates strictly against ISO 20022 XML Financial Schemas with sub-5ms in-memory response times.
Specification & Structural Breakdown
Technical Summary: Validates strictly against ISO 20022 XML Financial Schemas. Payloads are parsed in memory and return clean, typed JSON in milliseconds with zero data logged.
Ingests raw ISO 20022 XML streams, resolves Business Application Headers (head.001 / BAH), and outputs standardized JSON representations.
Engineered for fintech developers, core banking teams, and payment operations specialists migrating from legacy SWIFT MT to MX formats.
Zero payload persistence: processing takes place strictly in transient V8 isolate memory and streams directly to your browser.
| Message Standard | Business Function | Key Extracted Entities |
|---|---|---|
| pacs.008.001.08 | Customer Credit Transfer | UETR, Debtor/Creditor IBAN & BIC, Interbank Amount |
| pacs.002.001.10 | Payment Status Report | Original MsgId, Status Code (ACCP/RJCT), Reason Code |
| pain.001.001.09 | Customer Credit Transfer Initiation | Batch Payment Info, Debtor Account, Instruction List |
| camt.053.001.08 | Bank-to-Customer Statement | Account IBAN, Opening/Closing Balances, Entries |
| camt.054.001.08 | Debit/Credit Notification | Real-time account balance updates, booking references |
Parsed JSON Response Model
The edge microservice transforms input payloads into strongly-typed hierarchical JSON envelopes with sub-5ms latency:
{
"messageType": "pacs.008.001.08",
"messageId": "MSG20260830-01",
"settlementAmount": {
"currency": "EUR",
"value": 150000
},
"uetr": "eb9b1248-8422-441a-8c85-80252f9b8830",
"debtor": {
"name": "ACME CORP",
"iban": "DE89370400440532013000"
},
"creditor": {
"name": "GLOBAL LOGISTICS SAS",
"iban": "FR7630006000011234567890189"
}
}
Copy-Paste Integration Code (6 Languages)
Integrate Free Online ISO 20022 XML to JSON Converter & SWIFT MX Inspector directly into your production application with native, zero-dependency code snippets in cURL, Node.js, Python, Go, C#, and a ready-to-paste Claude prompt. Get a free API key → (no credit card required):
curl --request POST \
--url "https://api.stanzaapi.com/iso20022-parser/api/v1/iso20022/parse" \
--header "Content-Type: application/json" \
--header "x-api-key: YOUR_API_KEY" \
--data '{
"rawXml": "<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08\"><FIToFICstmrCdtTrf><GrpHdr><MsgId>MSG20260830-01</MsgId><CreDtTm>2026-08-30T12:00:00Z</CreDtTm><NbOfTxs>1</NbOfTxs><SttlmInf><SttlmMtd>CLRG</SttlmMtd></SttlmInf></GrpHdr><CdtTrfTxInf><PmtId><EndToEndId>E2E-991823</EndToEndId><UETR>eb9b1248-8422-441a-8c85-80252f9b8830</UETR></PmtId><IntrBkSttlmAmt Ccy=\"EUR\">150000.00</IntrBkSttlmAmt><Dbtr><Nm>ACME CORP</Nm></Dbtr><DbtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></DbtrAcct><DbtrAgt><FinInstnId><BICFI>DBEUMM21XXX</BICFI></FinInstnId></DbtrAgt><CdtrAgt><FinInstnId><BICFI>BNPAFRPPXXX</BICFI></FinInstnId></CdtrAgt><Cdtr><Nm>GLOBAL LOGISTICS SAS</Nm></Cdtr><CdtrAcct><Id><IBAN>FR7630006000011234567890189</IBAN></Id></CdtrAcct></CdtTrfTxInf></FIToFICstmrCdtTrf></Document>"
}'const response = await fetch("https://api.stanzaapi.com/iso20022-parser/api/v1/iso20022/parse", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": process.env.API_KEY || "YOUR_API_KEY"
},
body: JSON.stringify({
"rawXml": "<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08\"><FIToFICstmrCdtTrf><GrpHdr><MsgId>MSG20260830-01</MsgId><CreDtTm>2026-08-30T12:00:00Z</CreDtTm><NbOfTxs>1</NbOfTxs><SttlmInf><SttlmMtd>CLRG</SttlmMtd></SttlmInf></GrpHdr><CdtTrfTxInf><PmtId><EndToEndId>E2E-991823</EndToEndId><UETR>eb9b1248-8422-441a-8c85-80252f9b8830</UETR></PmtId><IntrBkSttlmAmt Ccy=\"EUR\">150000.00</IntrBkSttlmAmt><Dbtr><Nm>ACME CORP</Nm></Dbtr><DbtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></DbtrAcct><DbtrAgt><FinInstnId><BICFI>DBEUMM21XXX</BICFI></FinInstnId></DbtrAgt><CdtrAgt><FinInstnId><BICFI>BNPAFRPPXXX</BICFI></FinInstnId></CdtrAgt><Cdtr><Nm>GLOBAL LOGISTICS SAS</Nm></Cdtr><CdtrAcct><Id><IBAN>FR7630006000011234567890189</IBAN></Id></CdtrAcct></CdtTrfTxInf></FIToFICstmrCdtTrf></Document>"
})
});
const data = await response.json();
console.log(data);import requests
import json
url = "https://api.stanzaapi.com/iso20022-parser/api/v1/iso20022/parse"
headers = {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY"
}
payload = {
"rawXml": "<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08\"><FIToFICstmrCdtTrf><GrpHdr><MsgId>MSG20260830-01</MsgId><CreDtTm>2026-08-30T12:00:00Z</CreDtTm><NbOfTxs>1</NbOfTxs><SttlmInf><SttlmMtd>CLRG</SttlmMtd></SttlmInf></GrpHdr><CdtTrfTxInf><PmtId><EndToEndId>E2E-991823</EndToEndId><UETR>eb9b1248-8422-441a-8c85-80252f9b8830</UETR></PmtId><IntrBkSttlmAmt Ccy=\"EUR\">150000.00</IntrBkSttlmAmt><Dbtr><Nm>ACME CORP</Nm></Dbtr><DbtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></DbtrAcct><DbtrAgt><FinInstnId><BICFI>DBEUMM21XXX</BICFI></FinInstnId></DbtrAgt><CdtrAgt><FinInstnId><BICFI>BNPAFRPPXXX</BICFI></FinInstnId></CdtrAgt><Cdtr><Nm>GLOBAL LOGISTICS SAS</Nm></Cdtr><CdtrAcct><Id><IBAN>FR7630006000011234567890189</IBAN></Id></CdtrAcct></CdtTrfTxInf></FIToFICstmrCdtTrf></Document>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
)
func main() {
url := "https://api.stanzaapi.com/iso20022-parser/api/v1/iso20022/parse"
payload := []byte(`{"rawXml":"<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08\"><FIToFICstmrCdtTrf><GrpHdr><MsgId>MSG20260830-01</MsgId><CreDtTm>2026-08-30T12:00:00Z</CreDtTm><NbOfTxs>1</NbOfTxs><SttlmInf><SttlmMtd>CLRG</SttlmMtd></SttlmInf></GrpHdr><CdtTrfTxInf><PmtId><EndToEndId>E2E-991823</EndToEndId><UETR>eb9b1248-8422-441a-8c85-80252f9b8830</UETR></PmtId><IntrBkSttlmAmt Ccy=\"EUR\">150000.00</IntrBkSttlmAmt><Dbtr><Nm>ACME CORP</Nm></Dbtr><DbtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></DbtrAcct><DbtrAgt><FinInstnId><BICFI>DBEUMM21XXX</BICFI></FinInstnId></DbtrAgt><CdtrAgt><FinInstnId><BICFI>BNPAFRPPXXX</BICFI></FinInstnId></CdtrAgt><Cdtr><Nm>GLOBAL LOGISTICS SAS</Nm></Cdtr><CdtrAcct><Id><IBAN>FR7630006000011234567890189</IBAN></Id></CdtrAcct></CdtTrfTxInf></FIToFICstmrCdtTrf></Document>"}`)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(payload))
req.Header.Add("Content-Type", "application/json")
req.Header.Add("x-api-key", os.Getenv("API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", Environment.GetEnvironmentVariable("API_KEY") ?? "YOUR_API_KEY");
var json = @"{""rawXml"":""<Document xmlns=\""urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08\""><FIToFICstmrCdtTrf><GrpHdr><MsgId>MSG20260830-01</MsgId><CreDtTm>2026-08-30T12:00:00Z</CreDtTm><NbOfTxs>1</NbOfTxs><SttlmInf><SttlmMtd>CLRG</SttlmMtd></SttlmInf></GrpHdr><CdtTrfTxInf><PmtId><EndToEndId>E2E-991823</EndToEndId><UETR>eb9b1248-8422-441a-8c85-80252f9b8830</UETR></PmtId><IntrBkSttlmAmt Ccy=\""EUR\"">150000.00</IntrBkSttlmAmt><Dbtr><Nm>ACME CORP</Nm></Dbtr><DbtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></DbtrAcct><DbtrAgt><FinInstnId><BICFI>DBEUMM21XXX</BICFI></FinInstnId></DbtrAgt><CdtrAgt><FinInstnId><BICFI>BNPAFRPPXXX</BICFI></FinInstnId></CdtrAgt><Cdtr><Nm>GLOBAL LOGISTICS SAS</Nm></Cdtr><CdtrAcct><Id><IBAN>FR7630006000011234567890189</IBAN></Id></CdtrAcct></CdtTrfTxInf></FIToFICstmrCdtTrf></Document>""}";
var payload = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.stanzaapi.com/iso20022-parser/api/v1/iso20022/parse", payload);
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
}Integrate the StanzaAPI iso20022-parser micro-API.
Endpoint: POST https://api.stanzaapi.com/iso20022-parser/api/v1/iso20022/parse
Auth header: x-api-key: YOUR_API_KEY
Content-Type: application/json
Request body:
{
"rawXml": "<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08\"><FIToFICstmrCdtTrf><GrpHdr><MsgId>MSG20260830-01</MsgId><CreDtTm>2026-08-30T12:00:00Z</CreDtTm><NbOfTxs>1</NbOfTxs><SttlmInf><SttlmMtd>CLRG</SttlmMtd></SttlmInf></GrpHdr><CdtTrfTxInf><PmtId><EndToEndId>E2E-991823</EndToEndId><UETR>eb9b1248-8422-441a-8c85-80252f9b8830</UETR></PmtId><IntrBkSttlmAmt Ccy=\"EUR\">150000.00</IntrBkSttlmAmt><Dbtr><Nm>ACME CORP</Nm></Dbtr><DbtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></DbtrAcct><DbtrAgt><FinInstnId><BICFI>DBEUMM21XXX</BICFI></FinInstnId></DbtrAgt><CdtrAgt><FinInstnId><BICFI>BNPAFRPPXXX</BICFI></FinInstnId></CdtrAgt><Cdtr><Nm>GLOBAL LOGISTICS SAS</Nm></Cdtr><CdtrAcct><Id><IBAN>FR7630006000011234567890189</IBAN></Id></CdtrAcct></CdtTrfTxInf></FIToFICstmrCdtTrf></Document>"
}
Rules:
- Send the request with a 2-second timeout.
- Parse the standard envelope { success, data, meta: { latency_ms, version } }.
- On failure, read { success: false, error, code } and branch on the code.
- Do not retry 4xx responses; surface the error code to the caller.
- Treat invalid-but-well-formed payloads as HTTP 200 with data.valid === false.Frequently Asked Questions & Technical Notes
Never. Our edge service operates as a stateless pure function $f(x)=y$. Payloads are processed in memory and never logged, cached, or written to disk.
Yes. Install our client SDK: npm install @noorm-mkdad/iso20022-parser-client or pip install iso20022-parser-client, or hit our REST API directly with Bearer auth.
Related ISO 20022 Financial Message Parser & Validator API Formats
Explore sibling specifications and standards in the same developer cluster:
ISO 20022 pacs.008 Credit Transfer Parser & Schema Validator
Parse interbank pacs.008 SWIFT MX payment messages into structured JSON with full UETR and agent routing extraction.
View Format →ISO 20022 pacs.002 Payment Status Parser & Schema Validator
Parse payment status reports and rejection reason codes from pacs.002 SWIFT MX messages into JSON.
View Format →ISO 20022 pain.001 Customer Credit Transfer Initiation Parser
Corporate treasury and ERP payment initiation parser converting pain.001 XML files into structured JSON.
View Format →ISO 20022 pain.002 Customer Payment Status Report Parser
Parse bank acknowledgment and error feedback messages from pain.002 XML into clean JSON.
View Format →ISO 20022 camt.053 Bank-to-Customer Account Statement Parser
Parse end-of-day camt.053 electronic bank statement files, balances, and line item transactions into JSON.
View Format →ISO 20022 camt.054 Bank-to-Customer Debit/Credit Notification Parser
Real-time intra-day camt.054 bank notification parser for immediate payment reconciliation in JSON.
View Format →Free camt.053 Bank Statement XML to CSV & Excel Converter
Transform hierarchical ISO 20022 camt.053 bank-to-customer statements into flat, spreadsheet-ready CSV tables for financial reconciliation, treasury auditing, and accounting.
View Format →Complementary Enterprise APIs
Seamlessly orchestrate data pipelines across adjacent financial, regulatory, and supply-chain protocols:
SWIFT & ISO 13616 IBAN Validator →
Sanitize debtor and creditor account identifiers before generating pacs.008 payment instructions.
Peppol BIS Billing 3.0 →
Cross-reference automated payments against structured e-invoices and credit notes.
Healthcare EDI ANSI X12 →
Parse and validate enterprise EDI transactions including 835 remittance and 837 claims.
Factur-X & ZUGFeRD 2.3 →
Reconcile validated e-invoice totals with incoming ISO 20022 credit transfers.