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-10ERRORUstrd 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-05ERRORDuplicate 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-001ERRORInvalid 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-003ERRORWrong 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.