BankLint

Guides · Updated 2026-10-18

Why banks reject pain.001 files

Most rejected pain.001 files fail for a small set of reasons: the XML is broken, the file does not match the ISO 20022 schema, or it breaks a SEPA rule such as charge bearer SLEV, EUR only, two decimals, IBAN-only accounts or 70-character names. Almost all of them come from the payment-generation configuration, not from the individual payments.

The file cannot be read

A truncated export, an encoding problem or a manual edit produces a file that is not well-formed XML (BNK-XML-001). Banks reject these files completely.

The file does not match the ISO 20022 schema

Schema violations usually reject the whole file. The most frequent ones are a missing mandatory element, an element in the wrong place, a value that is too long, and a value in the wrong format.

  • BNK-ISO-001BLOCKERElement not expected at this position. The ISO 20022 schema does not allow this element here: an element is missing, misplaced or not permitted.
  • BNK-ISO-002BLOCKERRequired element missing. A mandatory child element required by the ISO 20022 schema is missing.
  • BNK-ISO-003BLOCKERValue does not match the required format. The value does not match the format pattern defined by the ISO 20022 schema.
  • BNK-ISO-004BLOCKERValue too long / Value too short / Value length not allowed. The value is longer than the maximum length allowed by the ISO 20022 schema.
  • BNK-ISO-005BLOCKERValue is not an allowed code. The value is not one of the codes allowed by the ISO 20022 schema.

The file breaks a SEPA rule

SymptomRuleWhere to look
Charge bearer SHAR, DEBT or CREDSEPA-SCT-CHRGBR-001Payment method configuration
Service level other than SEPASEPA-SCT-SVCLVL-001Payment method configuration
Non-EUR amount in a SEPA fileSEPA-SCT-CCY-001Payment method selection for foreign-currency payments
Three decimals or a zero amountSEPA-SCT-AMT-002, SEPA-SCT-AMT-001Amount rounding and formatting in the export
Account without IBANSEPA-SCT-CDTRACCT-001Vendor bank master data
Creditor agent without BICSEPA-SCT-CDTRAGT-001Omit the creditor agent when no BIC is known
Name longer than 70 charactersSEPA-SCT-NAME-003Vendor master data or name truncation in the export
Identifier with "/" at the start or end, or "//"SEPA-SCT-ID-002How end-to-end references are generated

It worked last month

When a file the bank accepted before is suddenly rejected, something in the generation changed: a transport, a support package, a DMEE or format-tree change, new master data. Comparing the new file with the last accepted one shows the configuration change directly. See payment-file regression testing.

Questions

Does BankLint know my bank’s rejection codes?

No. BankLint checks the ISO 20022 schema and the published SEPA guidelines. It does not claim to reproduce bank-specific checks or rejection codes.

Can I test a file without sending it to the bank?

Yes. Upload it on the BankLint homepage; it is checked in memory and not stored. Use test files while BankLint is in beta.

Validate a pain.001 fileFree, no account needed, files are not stored.

More guides