Skip to content

ISO 20022 reason code

DU03: Duplicate transaction

The transaction is not unique. DU03 is an ISO 20022 reason code used as a status reason: you will see it in pain.002.

DU03 at a glance
CodeDU03
NameDuplicate transaction
ISO code listsExternalStatusReason1Code (status reason)
WhereStsRsnInf/Rsn/Cd

What DU03 means

The bank found the transaction to be a repeat of one it has already processed. Which details it compares (amount, accounts, date, references) is up to the bank, so a payment you meant to make twice can be caught as well, such as two equal rent payments in one file.

Not to be confused with: DU03 is a repeated transaction; DU04 and DU05 are repeated ids. AM05, also a duplicate, is a status and a return reason, while DU03 appears only in status reports.

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 DU03 appears

DU03 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, DU03 explains a status such as RJCT, at transaction level here (the same StsRsnInf block can sit under the group or a payment block):

pain.002.001.10 · a rejected transaction
<OrgnlPmtInfAndSts>
  <OrgnlPmtInfId>PMT-20261028-03</OrgnlPmtInfId>
  <TxInfAndSts>
    <OrgnlEndToEndId>INV-2026-0042</OrgnlEndToEndId>
    <TxSts>RJCT</TxSts>
    <StsRsnInf>
      <Rsn>
        <Cd>DU03</Cd>
      </Rsn>
      <AddtlInf>Free text from the bank, if any</AddtlInf>
    </StsRsnInf>
  </TxInfAndSts>
</OrgnlPmtInfAndSts>

What to do about DU03

  • If you sent the payment or the collection: Check whether the first one was executed before you send it again. If both were intended, make them distinguishable: each with its own EndToEndId and remittance text naming the month or the invoice.

Your bank’s implementation guide and the scheme’s rulebook (for SEPA, the EPC rulebooks) say exactly when it may use DU03; banks do not all apply a code the same way.

Look up DU03 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).

REST · curl
curl -s 'https://iso20022-navigator.com/api/v1/explain?code=DU03&kind=status_reason'