pain.001 Validator

Swiss pain.001 — CH.03 + UBS Validation

Validates pain.001.001.09 files against Swiss Payment Standards CH.03 (19 rules) and the UBS overlay (30 rules). Explainable errors with XPath location and fix guidance.

Why Swiss banks reject technically valid files

A file can pass XSD schema validation and still be rejected by the bank. Swiss payment processing enforces additional business rules that go beyond the ISO 20022 structure. The three most frequent causes are:

AdrLine migration (2026). Swiss banks progressively reject unstructured addresses. Files using AdrLine elements will be rejected by banks enforcing the structured address mandate from 2026 onward. Rule: CH-ADDR-001 / CH-ADDR-002.

QR-IBAN mismatch. QR references require a creditor IBAN with IID in the 30000–31999 range. Presenting a standard IBAN together with a QRR reference type causes silent rejection at the bank gateway. Rule: CH-QR-001.

Duplicate InstrId. InstrId must be unique within a PmtInf block. Duplicates cause reconciliation failures or outright rejection with no descriptive feedback. Rule: CH-ID-001.

Validation by example

Every issue includes a stable rule code, the XPath location of the offending element, and a fix recommendation. The same input always produces the same output — no probabilistic scoring.

Input XML — QR reference with standard IBAN

<CdtTrfTxInf>
  <PmtId><InstrId>TXN-001</InstrId></PmtId>
  <CdtrAcct>
    <Id><IBAN>CH56 0483 5012 3456 7800 9</IBAN></Id>
  </CdtrAcct>
  <!-- QR reference present, but IBAN is not a QR-IBAN -->
  <RmtInf>
    <Strd>
      <CdtrRefInf>
        <Tp><CdOrPrtry><Prtry>QRR</Prtry></CdOrPrtry></Tp>
        <Ref>000000000000000000000000026</Ref>
      </CdtrRefInf>
    </Strd>
  </RmtInf>
</CdtTrfTxInf>

Validation issue — CH-QR-001

Code:    CH-QR-001 [ERROR]
Message: QR reference requires a valid QR-IBAN creditor account.
Line:    47
XPath:   /Document/CstmrCdtTrfInitn/PmtInf[1]/CdtTrfTxInf[1]/RmtInf/Strd/CdtrRefInf
Fix:     Replace the creditor IBAN with a QR-IBAN (IID 30000–31999),
         or remove the QRR reference type.

What is covered

The validator supports pain.001.001.09 with the full CH.03 profile and UBS overlay. SEPA overlay rules are partially supported. pain.001.001.11 is experimental.

Standard / FeatureStatus
pain.001.001.09Supported
CH.03 profile (19 rules)Supported
UBS overlay (30 rules)Supported
QR-IBAN validationSupported
SEPA overlayPartial
pain.001.001.11Experimental

Validation scope

This tool checks the technical and business rules defined in the Swiss Payment Standards CH.03 implementation guide and the UBS overlay specification.

Validation results do not guarantee bank acceptance. Banks apply internal processing rules, routing logic, sanctions screening, and AML checks that are outside the scope of this validator.

Frequently asked questions

Do you store uploaded XML files?

No. Files are processed in memory and discarded after validation. Payment data is not stored.

Is this an official bank validator?

No. This is an independent tool implementing CH.03 and UBS overlay rules. Validation does not guarantee bank acceptance.

Do you support pain.001.001.11?

pain.001.001.11 support is experimental. CH.03 profile support for v11 is not yet finalized by Swiss Payment Standards.

Do you support UBS-specific checks?

Yes. The UBS overlay adds 30 rules on top of CH.03, covering address restrictions, batch booking policies, payment date ranges, and intermediary agent rules.

Swiss pain.001 Validator — CH.03 + UBS rules — Ifriqa