pain.001 Validator

SEPA pain.001 Validation

Validates pain.001.001.09 files against EPC SCT business rules. Explainable errors with rule code, XPath location, and fix guidance.

Valid XML does not always mean accepted by the bank

SEPA payment files go through three independent validation layers before being processed. Passing one layer does not guarantee passing the next.

Layer 1 — XSD schema. Validates document structure, element order, and namespace. A file can be schema-valid and still be rejected.

Layer 2 — EPC business rules. EPC SCT rules govern field limits (Ustrd ≤ 140 chars), character set restrictions, amount precision, reference uniqueness, and mandatory values like ChrgBr = SLEV. This validator covers this layer.

Layer 3 — Bank-specific overlay. Each bank may apply additional restrictions not published in the EPC standard: BIC routing rules, internal risk scoring, AML, and sanctions checks. This layer is outside the scope of this tool.

Common EPC rule violations

These are the most frequent EPC SCT business rule failures detected in pain.001.001.09 files.

EPC-CT-10ERROR

Ustrd exceeds 140 characters

SEPA limits unstructured remittance information to 140 characters. Banks truncate or reject files exceeding this limit.

Fix: Shorten the Ustrd element to ≤ 140 characters.

EPC-CT-05ERROR

Duplicate InstrId within payment

InstrId must be unique per PmtInf block. Duplicate values cause settlement deduplication issues at the bank.

Fix: Assign a unique identifier to each credit transfer transaction.

SE-GEN-CHAR-001ERROR

Invalid character in field

SEPA allows only the restricted EPC Latin character set as defined in EPC SCT 2.5. Non-allowed characters trigger rejection at the bank gateway.

Fix: Use only A–Z, a–z, 0–9, space, and the limited punctuation allowed by the EPC character set.

SE-B-003ERROR

Wrong ChrgBr value

SEPA mandates ChrgBr = SLEV for all SCT transactions. Any other value triggers immediate rejection.

Fix: Set <ChrgBr>SLEV</ChrgBr> on every PmtInf block.

Sample validation output

Every issue includes a stable rule code, the XPath location of the offending element, a human-readable message, and a fix suggestion. The output is deterministic: the same input always produces the same result.

Example — EPC-CT-10 (Ustrd too long)

{
  "code": "EPC-CT-10",
  "severity": "ERROR",
  "xpath": "/Document/CstmrCdtTrfInitn/PmtInf[1]/CdtTrfTxInf[2]/RmtInf/Ustrd",
  "message": "SEPA: Ustrd must not exceed 140 characters.",
  "suggestion": "Shorten remittance information to 140 characters."
}

Validation scope

This tool validates pain.001.001.09 files against EPC SCT business rules (Layer 2). XSD structure validation is also included (Layer 1).

Bank-specific overlays, sanctions screening, AML checks, and internal bank risk scores are not covered. Validation results do not guarantee payment acceptance by the bank.

SEPA pain.001 Validation — EPC Rule Checks — Ifriqa