ISO 20022 reason code
DT01: Invalid date
A date is invalid (for example a requested execution date in the past or too far ahead). DT01 is an ISO 20022 reason code used as a status reason, a return reason and a cancellation reason: you will see it in pain.002, pacs.004, camt.053 and camt.056.
| Code | DT01 |
|---|---|
| Name | Invalid date |
| ISO code lists | ExternalStatusReason1Code (status reason); ExternalReturnReason1Code (return reason); ExternalCancellationReason1Code (cancellation reason) |
| Where | StsRsnInf/Rsn/Cd; RtrRsnInf/Rsn/Cd (pacs.004), TxDtls/RtrInf/Rsn/Cd (camt); CxlRsnInf/Rsn/Cd |
What DT01 means
A date is wrong or outside what is allowed: a requested execution or collection date in the past, too far ahead or not a business day, or a missing settlement date.
Not to be confused with: DT01 is a wrong or impossible date; TM01 is a valid date for which the instruction came too late in the day.
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 DT01 appears
DT01 belongs to three of the ISO 20022 reason code lists, so it can arrive in these places:
- 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.
- Return reason (ExternalReturnReason1Code): in a payment return (pacs.004) after the money has moved, and the returned entry on the account statement (camt.053) or notification (camt.054).
- Cancellation reason (ExternalCancellationReason1Code): in a request to cancel or recall a payment (camt.055 from a customer, camt.056 between banks).
In a status report, DT01 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>DT01</Cd>
</Rsn>
<AddtlInf>Free text from the bank, if any</AddtlInf>
</StsRsnInf>
</TxInfAndSts>
</OrgnlPmtInfAndSts>What to do about DT01
- If you sent the payment or the collection: Correct ReqdExctnDt (pain.001) or ReqdColltnDt (pain.008). The Payment File Viewer warns about dates in the past (pain.date.past). For direct debits, respect the scheme’s presentation deadlines.
Your bank’s implementation guide and the scheme’s rulebook (for SEPA, the EPC rulebooks) say exactly when it may use DT01; banks do not all apply a code the same way.
Look up DT01 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=DT01&kind=status_reason'