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
| Element | Where | In SEPA | What it identifies |
|---|---|---|---|
MsgId | Group header | Mandatory, 1–35 characters | The 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). |
PmtInfId | Each payment information block | Mandatory, 1–35 characters | The block within the message (item 2.1). Banks report a status per block, so each block needs its own value. |
InstrId | Each transaction | Optional, 1–35 characters | A point-to-point reference between you and your bank for one payment (item 2.80). |
EndToEndId | Each transaction | Mandatory, 1–35 characters | Your 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). |
UETR | Each transaction | Optional; pain.001.001.09 only | A 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.
<EndToEndId>/1000/INV-1001</EndToEndId><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,EndToEndIdand the creditor reference. - A
PmtInfIdused twice in one file. - In a Flow, compared with the bank-accepted baseline: whether
EndToEndIdis given orNOTPROVIDED, and whether aUETRis given, are configuration facts (a change needs review). The length and character classes ofMsgIdandEndToEndIdchange 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.
More guides
- How to validate a pain.001 payment file
- pain.001.001.09 XML example for a SEPA credit transfer
- pain.001 XSD validation errors and how to fix them
- pain.001.001.03 vs pain.001.001.09: what changed and how to migrate
- Structured, hybrid and unstructured addresses in SEPA pain.001
- IBAN and BIC in a SEPA pain.001
- Remittance information in a SEPA pain.001 (Ustrd, Strd, RF)
- SEPA Credit Transfer rules for pain.001.001.09
- Why banks reject pain.001 files
- pain.002 status and reason codes for pain.001 files
- Testing payment files before going live with a bank
- Payment-file regression testing after SAP or TMS changes
- Charge bearer SLEV in SEPA credit transfers
- Control sum (CtrlSum) and number of transactions (NbOfTxs) in pain.001
- SEPA character set, names and identifiers
- Verification of Payee and bulk payment files
- Batch booking in pain.001: one debit or one per payment
- SEPA and non-SEPA payments in one pain.001 file