← Back to Documentation

ISO 20022 Validation API Active

Scope: FeedOracle provides data infrastructure only. This is not certification of any kind, audit, or legal advice. Organizations must perform their own regulatory assessment.

Enterprise payment message validation using real XSD schema checking via xmllint. Returns signed evidence packs with accept/reject decisions.

How It Works

1. Submit ISO 20022 XML message via POST
2. Server validates against official XSD schemas using xmllint
3. Returns evidence pack with decision, errors, SHA-256 hash, and TTL
4. Evidence is signed via ECDSA and independently verifiable

Endpoints

POST/api/v3/iso20022/validate?type={msg_type}

Validate an ISO 20022 XML message against its XSD schema.

Request

curl -X POST \
  -H "Content-Type: application/xml" \
  --data-binary @payment.xml \
  "https://api.feedoracle.io/api/v3/iso20022/validate?type=pain.001.001.09"

Response (Valid)

{
  "evidence_type": "ISO20022_SCHEMA_VALIDATION",
  "methodology_version": "iso20022-validation/1.0.0",
  "message_type": "pain.001.001.09",
  "message_info": {
    "name": "Customer Credit Transfer Initiation",
    "category": "Payments Initiation"
  },
  "validation_result": {
    "decision": "ACCEPTED",
    "reason_code": "SCHEMA_VALID",
    "errors": []
  },
  "integrity": {
    "algorithm": "SHA-256",
    "input_hash": "75301922bd518e..."
  },
  "generated_at": "2026-02-02T21:51:10Z",
  "valid_until": "2026-02-02T21:56:10Z"
}

Response (Invalid)

{
  "validation_result": {
    "decision": "REJECTED",
    "reason_code": "SCHEMA_INVALID",
    "errors": [
      "Line 6: Element NbOfTxs not expected. Expected: CreDtTm",
      "Line 10: Value 'INVALID' not in set {'CHK', 'TRF'}",
      "Line 11: Missing child element(s). Expected: Amt"
    ]
  }
}
GET/api/v3/iso20022/types

List all supported ISO 20022 message types.

GET/api/v3/iso20022/sample/{msg_type}

Get a valid sample XML message for testing.

GET/api/v3/iso20022/status

Service health check.

Supported Message Types

TypeNameCategoryStatus
pain.001.001.09Customer Credit Transfer InitiationPayments InitiationYes Live

Additional types (pacs.008, camt.053) planned for future releases.

Validation Engine

Technical Stack

  • Schema Engine: xmllint (libxml2)
  • XSD Standard: ISO 20022 message definitions
  • Namespace: urn:iso:std:iso:20022:tech:xsd:{msg_type}
  • Timeout: 10 seconds per validation
  • Max Errors: 5 per response

Reason Codes

CodeDecisionMeaning
SCHEMA_VALIDACCEPTEDXML conforms to XSD schema
SCHEMA_INVALIDREJECTEDXSD validation errors found
SCHEMA_NOT_FOUNDREJECTEDNo XSD available for message type
VALIDATION_ERRORREJECTEDProcessing error during validation

Evidence Integrity

  • Input Hash: SHA-256 of the submitted XML content
  • TTL: 300 seconds (5 minutes)
  • Signature: ECDSA via /sign endpoint
  • Verification: Independent via JWKS at /jwks

The input hash ensures the evidence pack is bound to the exact XML that was validated. Any modification invalidates the hash.

Enterprise Use Cases

Payment Gateway Pre-Check: Validate incoming ISO 20022 messages before processing. Reject malformed messages with audit trail.

DORA Compliance: Prove to regulators that payment messages are schema-validated with signed, time-bound evidence.

Vendor Risk Assessment: Verify that third-party payment systems produce standards-compliant messages.

Same Framework, Different Vertical

ISO 20022 validation uses the same Evidence Pack framework as all other FeedOracle verticals:

VerticalEvidence TypeValidation
InsuranceDORA_EVIDENCEThird-party risk checks
CarbonCARBON_DISCLOSUREArt.66 sustainability data
StablecoinMICA_COMPLIANCE_CHECKEU register verification
PaymentsISO20022_SCHEMA_VALIDATIONXSD schema + xmllint

Generate → Verify → Force Fail. Same pattern everywhere.

Disclaimer: Schema validation only. Not legal or compliance advice. Data infrastructure only.

Try It

# Validate a payment message
curl -X POST -H "Content-Type: application/xml" \
  --data-binary @payment.xml \
  "https://api.feedoracle.io/api/v3/iso20022/validate"

# Get sample XML
curl https://api.feedoracle.io/api/v3/iso20022/sample/pain.001.001.09

# Interactive demo
→ ISO 20022 Validation Demo