EDGE ENGINE SUB-2MS DETERMINISTIC V8 EXECUTION • ZERO DATA RETENTION • EXPLORE API SPECS →
ISO 20022 XML Financial Schemas <3ms Edge Edge Compute

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

Latency: <3ms Edge Availability: 99.99% Standard: pacs.008.001.08 / SWIFT MX In-Memory Execution
Interactive Edge Workbench

⚡ Live ISO 20022 pacs.008 Credit Transfer Parser & Schema Validator Interactive Workbench

Test real-time validation and schema parsing for ISO 20022 pacs.008 Credit Transfer Parser & Schema Validator directly in your browser. Runs in sub-5ms with zero setup.

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 →
LLM / MCP
Prompt-Ready Specification for AI Agents llms.txt
Structured format rules and schemas optimized for LLM coding agents and Model Context Protocol tooling.
Raw .md
Official Standard & Validation Protocol Authority: ISO 20022 Universal Financial Industry Message Scheme ↗

Quick Summary: Parse interbank pacs.008 SWIFT MX payment messages into structured JSON with full UETR and agent routing extraction. Validates strictly against ISO 20022 XML Financial Schemas with sub-5ms in-memory response times.

Latency
<3ms Edge
Standard
pacs.008.001.08 / SWIFT MX
Version
Max Payload
512 KB
Privacy
In-Memory (0 bytes stored)

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.

The pacs.008 (Financial Institution to Financial Institution Customer Credit Transfer) is the core message of the global ISO 20022 migration replacing legacy MT103 payments.

Captures Group Header (GrpHdr) settlement method, total interbank settlement amount, and clearing system identifiers.

Extracts Credit Transfer Transaction Information (CdtTrfTxInf) containing Debtor (Dbtr), Debtor Agent (DbtrAgt), Creditor Agent (CdtrAgt), Creditor (Cdtr), and Structured Remittance Information (RmtInf).

XML PathDescriptionExtracted JSON FieldStandard
FIToFICstmrCdtTrf/GrpHdr/MsgIdMessage IdentificationmessageIdMandatory string
CdtTrfTxInf/PmtId/UETRUnique End-to-End ReferenceuetrUUID v4 format
CdtTrfTxInf/IntrBkSttlmAmtInterbank Settlement AmountsettlementAmount.value & currencyISO 4217 Currency + Decimal
CdtTrfTxInf/DbtrAcct/Id/IBANDebtor Account IBANdebtor.ibanISO 13616 IBAN
CdtTrfTxInf/CdtrAgt/FinInstnId/BICFICreditor Agent BICcreditor.bicISO 9362 BIC

Parsed JSON Response Model

The edge microservice transforms input payloads into strongly-typed hierarchical JSON envelopes with sub-5ms latency:

HTTP 200 JSON Response Envelope
{
  "messageType": "pacs.008.001.08",
  "uetr": "eb9b1248-8422-441a-8c85-80252f9b8830",
  "settlementAmount": {
    "currency": "EUR",
    "value": 150000
  },
  "debtor": {
    "name": "ACME CORP",
    "iban": "DE89370400440532013000",
    "bic": "DBEUMM21XXX"
  },
  "creditor": {
    "name": "GLOBAL LOGISTICS SAS",
    "iban": "FR7630006000011234567890189",
    "bic": "BNPAFRPPXXX"
  }
}

Sample file

Copy or download this validated ISO 20022 sample. It is parsed by the production engine in the test suite, so it works as a fixture as-is.

pacs.008-credit-transfer.xml
<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>

Download pacs.008-credit-transfer.xml All sample files →

Copy-Paste Integration Code (6 Languages)

Integrate ISO 20022 pacs.008 Credit Transfer Parser & Schema Validator 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

What version of pacs.008 is supported?

Supports pacs.008.001.08 (current SWIFT CBPR+ mandate) as well as earlier .06 and .07 releases.

Related ISO 20022 Financial Message Parser & Validator API Formats

Explore sibling specifications and standards in the same developer cluster:

Complementary Enterprise APIs

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

All ISO 20022 Financial Message Parser & Validator API Formats & Specifications (8) Directory Index ↓
ISO 20022 pacs.008 Credit Transfer Parser & Schema Validator ISO 20022 pacs.002 Payment Status Parser & Schema Validator ISO 20022 pain.001 Customer Credit Transfer Initiation Parser ISO 20022 pain.002 Customer Payment Status Report Parser ISO 20022 camt.053 Bank-to-Customer Account Statement Parser ISO 20022 camt.054 Bank-to-Customer Debit/Credit Notification Parser Free Online ISO 20022 XML to JSON Converter & SWIFT MX Inspector Free camt.053 Bank Statement XML to CSV & Excel Converter