Skip to content

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.

ISO 20022 reason code lists
ListISO code setCarried in
Status reasonExternalStatusReason1Codea payment status report (pain.002 from a bank to its customer, pacs.002 between banks) that rejects or holds a payment
Return reasonExternalReturnReason1Codea payment return (pacs.004) after the money has moved, and the returned entry on the account statement (camt.053) or notification (camt.054)
Cancellation reasonExternalCancellationReason1Codea request to cancel or recall a payment (camt.055 from a customer, camt.056 between banks)
Cancellation rejection reasonExternalPaymentCancellationRejection1Codethe 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.

Account problems (AC, AG)
CodeNameMeaningUsed as
AC01Incorrect account numberThe account number is wrong (missing, invalid or does not exist).Reject, Return
AC02Invalid debtor account numberThe debtor account number is invalid or missing.Reject, Return, Recall
AC03Invalid creditor account numberThe creditor account number is invalid or missing.Reject, Return, Recall
AC04Closed account numberThe account is closed.Reject, Return, Recall refused
AC05Closed debtor account numberThe debtor account is closed.Reject
AC06Blocked accountThe account is blocked.Reject, Return
AC07Closed creditor account numberThe creditor account is closed.Reject, Return
AC13Invalid debtor account typeThe debtor account type cannot be used for this payment (for example a consumer account in a B2B direct debit).Reject, Return
AG01Transaction forbiddenThis type of transaction is not allowed on the account (for example a savings account).Reject, Return
AG02Invalid bank operation codeThe 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.

Amount and currency (AM, CURR)
CodeNameMeaningUsed as
AM01Zero amountThe amount is zero.Reject, Return
AM02Not allowed amountThe amount is above the maximum allowed.Reject, Return
AM03Not allowed currencyThe currency is not allowed for this payment or account.Reject, Return
AM04Insufficient fundsNot enough funds on the account to cover the payment.Reject, Return, Recall refused
AM06Too low amountThe amount is below the minimum allowed.Reject, Return
AM07Blocked amountThe amount has been blocked by regulatory authorities.Reject, Return
AM09Wrong amountThe amount is not the one agreed or expected.Reject, Return, Recall
AM10Invalid control sumThe control sum does not add up to the individual amounts.Reject, Return
CURRIncorrect currencyThe 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.

Party details (BE)
CodeNameMeaningUsed as
BE01Inconsistent with end customerThe customer identification does not match the account holder.Reject, Return
BE04Missing creditor addressThe creditor’s address is missing or incomplete.Reject, Return
BE05Unrecognised initiating partyThe initiating party is not known or not authorised.Reject, Return
BE06Unknown end customerThe end customer is not known at its bank.Reject, Return
BE07Missing debtor addressThe 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.

Banks and routing (RC, CNOR, DNOR, AGNT)
CodeNameMeaningUsed as
CNORCreditor bank is not registeredThe creditor’s bank is not reachable in the clearing system.Reject, Return
DNORDebtor bank is not registeredThe debtor’s bank is not reachable in the clearing system.Reject, Return
RC01Bank identifier incorrectThe bank identifier (BIC or clearing code) is wrong or unknown.Reject, Return
AGNTIncorrect agentAn 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.

Dates and cut-off times (DT, TM)
CodeNameMeaningUsed as
DT01Invalid dateA date is invalid (for example a requested execution date in the past or too far ahead).Reject, Return, Recall
TM01Invalid cut-off timeReceived after the cut-off time.Reject, Return

Duplicates (DU, AM05, DUPL)

A message, block, transaction or reference was seen before.

Duplicates (DU, AM05, DUPL)
CodeNameMeaningUsed as
AM05DuplicationThe payment is a duplicate of one already received.Reject, Return
DU01Duplicate message IDThe message identification was already used.Reject
DU02Duplicate payment information IDThe payment information identification was already used.Reject
DU03Duplicate transactionThe transaction is not unique.Reject
DU04Duplicate end-to-end IDThe end-to-end identification is not unique.Reject
DU05Duplicate instruction IDThe 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.

Direct debit mandates and refunds (MD, SL)
CodeNameMeaningUsed as
MD01No mandateNo valid mandate exists for this direct debit.Reject, Return
MD02Missing mandatory information in mandateMandate data is missing or wrong.Reject, Return
MD06Refund request by end customerThe debtor asked for a refund of the direct debit.Reject, Return, Recall
MD07End customer deceasedThe account holder has died.Reject, Return
SL01Specific service offered by debtor agentRefused 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.

Regulatory (RR)
CodeNameMeaningUsed as
RR01Missing debtor account or identificationRegulatory data for the debtor (account or identification) is missing.Reject, Return
RR02Missing debtor name or addressRegulatory data for the debtor (name or address) is missing.Reject, Return
RR03Missing creditor name or addressRegulatory data for the creditor (name or address) is missing.Reject, Return
RR04Regulatory reasonRefused 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.

File format and settlement (FF, ED)
CodeNameMeaningUsed as
ED05Settlement failedSettlement of the transaction failed.Reject, Return
FF01Invalid file formatThe file or message is not in a format the bank accepts (schema or syntax error).Reject

Reason not given (MS, NARR)

A customer or a bank declined to give a coded reason, or wrote it as text.

Reason not given (MS, NARR)
CodeNameMeaningUsed as
MS02Not specified reason (customer generated)Refused by the customer; no reason given.Reject, Return
MS03Not specified reason (agent generated)Refused by a bank; no reason given.Reject, Return
NARRNarrativeThe 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.

Cancellations, recalls and their answers
CodeNameMeaningUsed as
CUSTRequested by customerCancelled or returned at the customer’s request.Reject, Return, Recall, Recall refused
DUPLDuplicate paymentThe payment was sent twice.Reject, Return, Recall
FOCRFollowing cancellation requestReturned after a cancellation request.Reject, Return
FRADFraudulent originThe payment is believed to be fraudulent.Reject, Recall
TECHTechnical problemA technical problem produced an erroneous payment, so its cancellation or recall is requested.Recall
UPAYUndue paymentThe payment was not due.Reject, Return, Recall
NOASNo answer from customerThe customer did not answer.Reject, Return, Recall refused
NOORNo original transaction receivedThe 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).

REST · curl
curl -s 'https://iso20022-navigator.com/api/v1/explain?code=AC04&kind=status_reason'
MCP · tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "explain_code",
    "arguments": {
      "code": "AC04",
      "kind": "status_reason"
    }
  }
}
Response (JSON)
{
  "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"
    }
  ]
}