ISO 20022 reference
ISO 20022 reason codes: why a payment was rejected, returned or recalled
Four-character codes such as AC04, AM04 and MS03 tell you why a bank rejected a payment, why money came back, or why a recall was asked for or refused. Each code below has its own page: what it means, where it sits in the XML and what to do next.
58 codes, the ones banks commonly send. Checked against the ISO 20022 External Code Sets.
Four lists, four places
ISO 20022 keeps its reason codes in external code lists, published separately from the messages so they can grow without a new message version. The same code often belongs to several lists: AC04 (closed account) can reject a payment, come back on a return and refuse a recall.
| List | ISO code set | Carried in |
|---|---|---|
| Status reason | ExternalStatusReason1Code | 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 | 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 | a request to cancel or recall a payment (camt.055 from a customer, camt.056 between banks) |
| Cancellation rejection reason | ExternalPaymentCancellationRejection1Code | the answer to a cancellation or recall request that is refused (camt.029 resolution of investigation) |
A reason code explains a status or an action; it never stands alone. In a pain.002 read it with the status next to it (see the payment status codes): RJCT plus AC01 means the payment was refused because the account number is wrong. On a camt.053 the returned entry itself tells you the money is back.
Account problems (AC, AG)
The account is wrong, closed, blocked or of a type that cannot take the payment.
| Code | Name | Meaning | Used as |
|---|---|---|---|
| AC01 | Incorrect account number | The account number is wrong (missing, invalid or does not exist). | Reject, Return |
| AC02 | Invalid debtor account number | The debtor account number is invalid or missing. | Reject, Return, Recall |
| AC03 | Invalid creditor account number | The creditor account number is invalid or missing. | Reject, Return, Recall |
| AC04 | Closed account number | The account is closed. | Reject, Return, Recall refused |
| AC05 | Closed debtor account number | The debtor account is closed. | Reject |
| AC06 | Blocked account | The account is blocked. | Reject, Return |
| AC07 | Closed creditor account number | The creditor account is closed. | Reject, Return |
| AC13 | Invalid debtor account type | The debtor account type cannot be used for this payment (for example a consumer account in a B2B direct debit). | Reject, Return |
| AG01 | Transaction forbidden | This type of transaction is not allowed on the account (for example a savings account). | Reject, Return |
| AG02 | Invalid bank operation code | The bank operation or payment type code is not valid. | Reject, Return |
Amount and currency (AM, CURR)
The amount is zero, too high, too low, blocked, in the wrong currency or not what was agreed, or the funds are not there.
| Code | Name | Meaning | Used as |
|---|---|---|---|
| AM01 | Zero amount | The amount is zero. | Reject, Return |
| AM02 | Not allowed amount | The amount is above the maximum allowed. | Reject, Return |
| AM03 | Not allowed currency | The currency is not allowed for this payment or account. | Reject, Return |
| AM04 | Insufficient funds | Not enough funds on the account to cover the payment. | Reject, Return, Recall refused |
| AM06 | Too low amount | The amount is below the minimum allowed. | Reject, Return |
| AM07 | Blocked amount | The amount has been blocked by regulatory authorities. | Reject, Return |
| AM09 | Wrong amount | The amount is not the one agreed or expected. | Reject, Return, Recall |
| AM10 | Invalid control sum | The control sum does not add up to the individual amounts. | Reject, Return |
| CURR | Incorrect currency | The currency is wrong. | Reject, Return, Recall |
Party details (BE)
A name, address or identification of the payer, the payee or the initiating party is missing or does not match.
| Code | Name | Meaning | Used as |
|---|---|---|---|
| BE01 | Inconsistent with end customer | The customer identification does not match the account holder. | Reject, Return |
| BE04 | Missing creditor address | The creditor’s address is missing or incomplete. | Reject, Return |
| BE05 | Unrecognised initiating party | The initiating party is not known or not authorised. | Reject, Return |
| BE06 | Unknown end customer | The end customer is not known at its bank. | Reject, Return |
| BE07 | Missing debtor address | The debtor’s address is missing or incomplete. | Reject, Return |
Banks and routing (RC, CNOR, DNOR, AGNT)
A bank identifier is wrong, or a bank cannot be reached through the clearing system used.
| Code | Name | Meaning | Used as |
|---|---|---|---|
| CNOR | Creditor bank is not registered | The creditor’s bank is not reachable in the clearing system. | Reject, Return |
| DNOR | Debtor bank is not registered | The debtor’s bank is not reachable in the clearing system. | Reject, Return |
| RC01 | Bank identifier incorrect | The bank identifier (BIC or clearing code) is wrong or unknown. | Reject, Return |
| AGNT | Incorrect agent | An agent (bank) in the payment chain is wrong. In the answer to a cancellation or recall: a bank in the chain refused to cancel. | Reject, Return, Recall, Recall refused |
Dates and cut-off times (DT, TM)
A requested date is invalid, or the instruction arrived too late.
Duplicates (DU, AM05, DUPL)
A message, block, transaction or reference was seen before.
| Code | Name | Meaning | Used as |
|---|---|---|---|
| AM05 | Duplication | The payment is a duplicate of one already received. | Reject, Return |
| DU01 | Duplicate message ID | The message identification was already used. | Reject |
| DU02 | Duplicate payment information ID | The payment information identification was already used. | Reject |
| DU03 | Duplicate transaction | The transaction is not unique. | Reject |
| DU04 | Duplicate end-to-end ID | The end-to-end identification is not unique. | Reject |
| DU05 | Duplicate instruction ID | The instruction identification is not unique. | Reject |
Direct debit mandates and refunds (MD, SL)
The direct debit has no valid mandate, the debtor asked for a refund, or the debtor’s bank blocked it.
| Code | Name | Meaning | Used as |
|---|---|---|---|
| MD01 | No mandate | No valid mandate exists for this direct debit. | Reject, Return |
| MD02 | Missing mandatory information in mandate | Mandate data is missing or wrong. | Reject, Return |
| MD06 | Refund request by end customer | The debtor asked for a refund of the direct debit. | Reject, Return, Recall |
| MD07 | End customer deceased | The account holder has died. | Reject, Return |
| SL01 | Specific service offered by debtor agent | Refused because of a service the debtor’s bank offers (for example a direct-debit block set by the debtor). | Reject, Return |
Regulatory (RR)
Information the law requires is missing, or the payment was stopped by compliance checks.
| Code | Name | Meaning | Used as |
|---|---|---|---|
| RR01 | Missing debtor account or identification | Regulatory data for the debtor (account or identification) is missing. | Reject, Return |
| RR02 | Missing debtor name or address | Regulatory data for the debtor (name or address) is missing. | Reject, Return |
| RR03 | Missing creditor name or address | Regulatory data for the creditor (name or address) is missing. | Reject, Return |
| RR04 | Regulatory reason | Refused for regulatory reasons (sanctions, AML/KYC). | Reject, Return, Recall refused |
File format and settlement (FF, ED)
The file could not be processed, or settlement between the banks failed.
Reason not given (MS, NARR)
A customer or a bank declined to give a coded reason, or wrote it as text.
| Code | Name | Meaning | Used as |
|---|---|---|---|
| MS02 | Not specified reason (customer generated) | Refused by the customer; no reason given. | Reject, Return |
| MS03 | Not specified reason (agent generated) | Refused by a bank; no reason given. | Reject, Return |
| NARR | Narrative | The reason is given as text in AddtlInf. | Reject, Return, Recall, Recall refused |
Cancellations, recalls and their answers
Why a payment is recalled or cancelled, why funds come back after a recall, and why a recall is refused.
| Code | Name | Meaning | Used as |
|---|---|---|---|
| CUST | Requested by customer | Cancelled or returned at the customer’s request. | Reject, Return, Recall, Recall refused |
| DUPL | Duplicate payment | The payment was sent twice. | Reject, Return, Recall |
| FOCR | Following cancellation request | Returned after a cancellation request. | Reject, Return |
| FRAD | Fraudulent origin | The payment is believed to be fraudulent. | Reject, Recall |
| TECH | Technical problem | A technical problem produced an erroneous payment, so its cancellation or recall is requested. | Recall |
| UPAY | Undue payment | The payment was not due. | Reject, Return, Recall |
| NOAS | No answer from customer | The customer did not answer. | Reject, Return, Recall refused |
| NOOR | No original transaction received | The original transaction was never received. | Return, Recall refused |
A code that is not on this page
These are the codes banks commonly send, not the complete lists: ExternalStatusReason1Code alone holds well over a hundred codes, and market practices add their own usage rules. The viewers show any other code as written, and the full lists are published with the ISO 20022 external code sets.
Look up a reason code from a script or an AI agent
The same explanation is available to scripts and AI agents, keyless: the REST endpoint GET /api/v1/explain and the explain_code tool of the MCP server at https://iso20022-navigator.com/mcp (API and MCP docs; add it to Claude, Cursor or VS Code).
curl -s 'https://iso20022-navigator.com/api/v1/explain?code=AC04&kind=status_reason'{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "explain_code",
"arguments": {
"code": "AC04",
"kind": "status_reason"
}
}
}{
"query": "AC04",
"kind": "status_reason",
"matches": [
{
"kind": "status_reason",
"code": "AC04",
"name": "Closed account number",
"definition": "The account is closed.",
"usedIn": "pain.002 / pacs.002 StsRsnInf/Rsn/Cd; pacs.004 RtrRsnInf/Rsn/Cd; camt.053/054 TxDtls/RtrInf/Rsn/Cd; camt.029 CxlStsRsnInf/Rsn/Cd",
"reference": "https://iso20022-navigator.com/iso20022-reason-codes/ac04"
}
]
}