ISO 20022 reason code
DU05: Duplicate instruction ID
The instruction identification is not unique. DU05 is an ISO 20022 reason code used as a status reason: you will see it in pain.002.
| Code | DU05 |
|---|---|
| Name | Duplicate instruction ID |
| ISO code lists | ExternalStatusReason1Code (status reason) |
| Where | StsRsnInf/Rsn/Cd |
What DU05 means
The instruction identification (InstrId) is not unique. InstrId is a reference between you and your bank only: unlike EndToEndId it is not passed on to the payee. Banks use it to find an instruction in their reports and investigations, which is why some require it to be unique.
Not to be confused with: DU05 is the instruction id, kept between you and your bank; DU04 is the end-to-end id, which travels to the payee.
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 DU05 appears
DU05 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, DU05 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>DU05</Cd>
</Rsn>
<AddtlInf>Free text from the bank, if any</AddtlInf>
</StsRsnInf>
</TxInfAndSts>
</OrgnlPmtInfAndSts>What to do about DU05
- If you sent the payment or the collection: Give each transaction its own InstrId, or leave it out if your bank does not ask for it: it is optional in pain.001 and pain.008. The Payment File Viewer reports repeats within a file under pain.duplicate.instr.
Your bank’s implementation guide and the scheme’s rulebook (for SEPA, the EPC rulebooks) say exactly when it may use DU05; banks do not all apply a code the same way.
Look up DU05 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=DU05&kind=status_reason'