BankLint

Guides · By Tan Gravam · Updated 2026-10-20

pain.001 references: MsgId, PmtInfId, InstrId, EndToEndId and UETR

A pain.001 carries up to five identifiers. MsgId identifies the file and PmtInfId each payment information block. InstrId is an optional reference between you and your bank, EndToEndId is your reference for each payment and is passed on unchanged along the whole chain, and the optional UETR (pain.001.001.09 only) is a universally unique identifier in UUID version 4 format. In SEPA each is at most 35 characters of the Latin character set, without a leading, trailing or double slash.

The five identifiers

ElementWhereIn SEPAWhat it identifies
MsgIdGroup headerMandatory, 1–35 charactersThe file. ISO 20022 asks the sender to keep it unique per receiving bank for a pre-agreed period (EPC132-08 2025 v1.0, item 1.1).
PmtInfIdEach payment information blockMandatory, 1–35 charactersThe block within the message (item 2.1). Banks report a status per block, so each block needs its own value.
InstrIdEach transactionOptional, 1–35 charactersA point-to-point reference between you and your bank for one payment (item 2.80).
EndToEndIdEach transactionMandatory, 1–35 charactersYour reference for the payment, the SEPA attribute AT-T014. It is passed on unchanged along the whole chain and can be used for reconciliation (item 2.81).
UETREach transactionOptional; pain.001.001.09 onlyA universally unique identifier of the payment in UUID version 4 format: lowercase hexadecimal, for example 8a562c67-ca16-48ba-b074-65581be6f001 (item 2.82).

Uniqueness and duplicates

Generate a new MsgId for every file, including a corrected file you send again: a bank that has already received the identification can reject the file as a duplicate (reason code DU01, message identification not unique). Whether a MsgId was used before cannot be seen from one file.

Within one file, every PmtInfId must be different (DU02, payment information block not unique). BankLint checks this. Repeated payments with the same amounts and references can also be rejected as duplicates (AM05); what counts as a duplicate is up to the bank. More in pain.002 status and reason codes.

  • SEPA-SCT-ID-003WARNINGPayment information identification used twice. Two payment information blocks in this message have the same identification. ISO 20022 defines it as a unique identification of the block within the message.

Character rules for references

References, identifications and identifiers must use the SEPA Latin character set (letters a–z and A–Z, digits and / - ? : ( ) . , ' + and space), must not start or end with / and must not contain // (EPC132-08 2025 v1.0, section 1.4). References built with a slash as separator, such as a company code and a document number, are a frequent cause.

Fails in SEPA
<EndToEndId>/1000/INV-1001</EndToEndId>
Corrected
<EndToEndId>1000/INV-1001</EndToEndId>
  • SEPA-SCT-ID-001BLOCKERMessage or payment information ID violates SEPA character rules. The message identification (MsgId) or a payment information identification (PmtInfId) breaks the SEPA rules for references. References may use only the SEPA Latin character set, must not start or end with '/' and must not contain '//'.
  • SEPA-SCT-ID-002BLOCKERTransaction reference violates SEPA character rules. A transaction reference (the end-to-end identification EndToEndId, the instruction identification InstrId or the creditor reference) breaks the SEPA rules for references. References may use only the SEPA Latin character set, must not start or end with '/' and must not contain '//'.

More character rules in SEPA character set and identifier rules.

Where the identifiers come back

The bank’s status report (pain.002) refers to the original file and payments with OrgnlMsgId, OrgnlPmtInfId, OrgnlInstrId, OrgnlEndToEndId and OrgnlUETR. A rejected payment is matched to your payment run through these values, so a reference that is unique and meaningful in your system saves manual work.

How BankLint checks and compares them

  • Character and slash rules for MsgId, PmtInfId, InstrId, EndToEndId and the creditor reference.
  • A PmtInfId used twice in one file.
  • In a Flow, compared with the bank-accepted baseline: whether EndToEndId is given or NOTPROVIDED, and whether a UETR is given, are configuration facts (a change needs review). The length and character classes of MsgId and EndToEndId change from run to run and raise nothing. See payment-file regression testing.

Questions

Is EndToEndId mandatory in a SEPA pain.001?

Yes. Every transaction needs an EndToEndId of 1 to 35 characters. It is your reference for the payment and is passed on unchanged along the chain.

Should a SEPA pain.001 contain a UETR?

It is optional in the 2025 SEPA guidelines and exists only in pain.001.001.09. Ask your bank whether it uses it. When present, it must be a lowercase UUID version 4.

Can I reuse a MsgId when I resend a corrected file?

Better not. ISO 20022 asks for a MsgId that is unique per bank for a pre-agreed period, and banks can reject a file whose MsgId they have already received.

Sources: EPC132-08 2025 Version 1.0 (European Payments Council) and the ISO 20022 message schemas. All sources and dates: Standards and sources.

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