EDGE ENGINE SUB-2MS DETERMINISTIC V8 EXECUTION • ZERO DATA RETENTION • EXPLORE API SPECS →
<5ms Edge Latency 99.9% SLA Available V8 Pure Compute Fintech & Banking

ISO 20022 Financial Message Parser & Validator API

Transform complex SWIFT MX, SEPA, and FedNow ISO 20022 XML payloads into validated, hierarchical JSON in sub-5ms pure compute.

Interactive Edge Workbench

⚡ Live Pure-Compute Playground

Test deterministic edge parsing with sub-2ms execution across 330+ Cloudflare V8 edge locations. Zero persistent storage, zero cold-starts, pure function $f(x)=y$.

32KB Demo Cap 60 req/min Burst <2ms V8 Compute Zero Data Retention
input.xml 0 B
output.json demo-ready
Status: Ready
{
  "status": "Click RUN VALIDATION to execute on the Cloudflare edge..."
}
Sandbox Quota: Free Tier (50 reqs/mo) • Production keys from $29/mo Get Free Sandbox Key →
Need 512KB+ Payloads, High-Throughput & 99.9% Production SLA?
Direct API keys include pooled monthly quotas, zero cold-starts, and HIPAA BAA eligibility on the Mega tier.
Get Production API Key →

Key Capabilities & Performance Architecture

Message Type Specifications (8 Specifications)

Explore full structural breakdowns, checksum logic, and field schemas for every supported format.

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 Specification →

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 Specification →

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 Specification →

ISO 20022 pain.002 Customer Payment Status Report Parser

Parse bank acknowledgment and error feedback messages from pain.002 XML into clean JSON.

View Specification →

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 Specification →

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 Specification →

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.

View Specification →

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 Specification →

API Endpoints & Request Signatures

MethodPathDescription
POST/api/v1/iso20022/parseParse raw ISO 20022 XML into structured JSON
POST/api/v1/iso20022/validateValidate ISO 20022 XML schema structure and business rules

Sample Response JSON Payload

All endpoints deliver strongly-typed envelopes with deterministic parsing and performance metrics.

HTTP 200 Response Payload
{
  "success": true,
  "data": {
    "messageType": "pacs.008.001.08",
    "messageId": "MSG20260830-01",
    "creationDateTime": "2026-08-30T12:00:00Z",
    "numberOfTransactions": 1,
    "settlementAmount": {
      "currency": "EUR",
      "value": 150000
    },
    "uetr": "eb9b1248-8422-441a-8c85-80252f9b8830",
    "debtor": {
      "name": "ACME CORP",
      "iban": "DE89370400440532013000",
      "bic": "DBEUMM21XXX"
    },
    "creditor": {
      "name": "GLOBAL LOGISTICS SAS",
      "iban": "FR7630006000011234567890189",
      "bic": "BNPAFRPPXXX"
    }
  },
  "meta": {
    "latency_ms": 1.95,
    "version": "1.0.0"
  }
}

Multi-Language Integration Code

Copy and paste ready-to-run snippets with your direct API credentials:

cURL
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>"
}'
Node.js (Fetch)
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);
Python (Requests)
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())
Go
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))
}

Frequently Asked Questions

Which ISO 20022 message types are supported?

The engine natively supports pacs.008 (Financial Institutional Customer Credit Transfer), pacs.002 (Payment Status Report), pain.001 (Customer Credit Transfer Initiation), pain.002 (Customer Payment Status), camt.053 (Bank-to-Customer Statement), and camt.054 (Debit/Credit Notification).

Does this handle FedNow and SEPA ISO 20022 implementations?

Yes. The parser adheres to SWIFT MX ISO 20022, EPC SEPA Rulebooks, and US Federal Reserve FedNow Service XML schemas.

How is the Unique End-to-End Transaction Reference (UETR) extracted?

The parser automatically locates and extracts RFC 4122 UUID v4 UETR tags from PmtId/UETR elements across payment messages for global SWIFT gpi tracking.

Complementary Enterprise APIs

Seamlessly orchestrate data pipelines across adjacent financial, regulatory, and supply-chain protocols: