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.
⚡ 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$.
Key Capabilities & Performance Architecture
- ✓ Native parsing for pacs.008, pacs.002, pain.001, pain.002, camt.053, and camt.054 financial XML schemas
- ✓ Automatic Business Application Header (head.001 / BAH) extraction and routing reconciliation
- ✓ Full extraction of debtor/creditor agents (BIC/SWIFT), accounts (IBAN/BBAN), and remittance data (UETR, EndToEndId)
- ✓ Zero cold-starts, sub-5ms latency on Cloudflare Workers edge nodes across 300+ global data centers
- ✓ ReDoS-safe linear SAX XML tokenization with strict 512KB payload limits
Message Type Specifications (6 Specifications)
Explore full structural breakdowns, checksum logic, and field schemas for every supported format.
ISO 20022 pacs.008 FI to FI Customer Credit Transfer Parser
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 Report (Settlement Confirmation)
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 →API Endpoints & Request Signatures
| Method | Path | Description |
|---|---|---|
POST |
/api/v1/iso20022/parse |
Parse raw ISO 20022 XML into structured JSON |
POST |
/api/v1/iso20022/validate |
Validate ISO 20022 XML schema structure and business rules |
Sample Response JSON Payload
All endpoints deliver strongly-typed envelopes with deterministic parsing and performance metrics.
{
"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 --request POST \
--url "https://iso-20022-financial-message-parser-validator.stanzaapi.com/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://iso-20022-financial-message-parser-validator.stanzaapi.com/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://iso-20022-financial-message-parser-validator.stanzaapi.com/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://iso-20022-financial-message-parser-validator.stanzaapi.com/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
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).
Yes. The parser adheres to SWIFT MX ISO 20022, EPC SEPA Rulebooks, and US Federal Reserve FedNow Service XML schemas.
The parser automatically locates and extracts RFC 4122 UUID v4 UETR tags from PmtId/UETR elements across payment messages for global SWIFT gpi tracking.