ISO 20022 reason code
DU04: Duplicate end-to-end ID
The end-to-end identification is not unique. DU04 is an ISO 20022 reason code used as a status reason: you will see it in pain.002.
| Code | DU04 |
|---|---|
| Name | Duplicate end-to-end ID |
| ISO code lists | ExternalStatusReason1Code (status reason) |
| Where | StsRsnInf/Rsn/Cd |
What DU04 means
The end-to-end identification (EndToEndId) is not unique where the bank expects it to be. EndToEndId travels unchanged to the payee and comes back in status reports, returns and statements, so payers and banks use it as the key of a payment, and some banks reject a repeat within a file or against earlier files.
Not to be confused with: DU04 is the end-to-end id, which travels to the payee; DU05 is the instruction id, which stays between you and your bank.
A reason code always comes with a status or an action: on its own it says why, not what happened. In a status report look at the status next to it (RJCT means the payment will not be executed); on a statement the returned entry tells you the money has come back.
Where DU04 appears
DU04 belongs to one of the ISO 20022 reason code lists, so it can arrive in this place:
- Status reason (ExternalStatusReason1Code): in a payment status report (pain.002 from a bank to its customer, pacs.002 between banks) that rejects or holds a payment.
In a status report, DU04 explains a status such as RJCT, at transaction level here (the same StsRsnInf block can sit under the group or a payment block):
<OrgnlPmtInfAndSts>
<OrgnlPmtInfId>PMT-20261028-03</OrgnlPmtInfId>
<TxInfAndSts>
<OrgnlEndToEndId>INV-2026-0042</OrgnlEndToEndId>
<TxSts>RJCT</TxSts>
<StsRsnInf>
<Rsn>
<Cd>DU04</Cd>
</Rsn>
<AddtlInf>Free text from the bank, if any</AddtlInf>
</StsRsnInf>
</TxInfAndSts>
</OrgnlPmtInfAndSts>What to do about DU04
- If you sent the payment or the collection: Give each transaction its own EndToEndId, such as the invoice number with a suffix for split payments. The Payment File Viewer warns about repeats within a file (pain.duplicate.e2e).
In SEPA files NOTPROVIDED is the value the EPC guidelines give for a payment without a reference: it says nothing about the payment, so do not rely on it for matching.
Your bank’s implementation guide and the scheme’s rulebook (for SEPA, the EPC rulebooks) say exactly when it may use DU04; banks do not all apply a code the same way.
Look up DU04 from a script or an AI agent
Scripts and AI agents get this code’s name, definition, where it sits and the address of this page from GET /api/v1/explain, keyless, or from the explain_code tool of the MCP server (API and MCP docs; add it to Claude, Cursor or VS Code).
curl -s 'https://iso20022-navigator.com/api/v1/explain?code=DU04&kind=status_reason'