Skip to content

ISO 20022 reason code

AC02: Invalid debtor account number

The debtor account number is invalid or missing. AC02 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.

AC02 at a glance
CodeAC02
NameInvalid debtor account number
ISO code listsExternalStatusReason1Code (status reason); ExternalReturnReason1Code (return reason); ExternalCancellationReason1Code (cancellation reason)
WhereStsRsnInf/Rsn/Cd; RtrRsnInf/Rsn/Cd (pacs.004), TxDtls/RtrInf/Rsn/Cd (camt); CxlRsnInf/Rsn/Cd

What AC02 means

The debtor’s account is missing or invalid. In a credit transfer that is the account you asked your bank to debit (DbtrAcct in the pain.001 block); in a direct debit it is the payer’s account taken from the mandate.

Not to be confused with: AC02 points at the debtor’s side only; AC03 is the same problem with the creditor’s account, and AC01 the general code for a wrong account number.

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

AC02 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, AC02 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>AC02</Cd>
      </Rsn>
      <AddtlInf>Free text from the bank, if any</AddtlInf>
    </StsRsnInf>
  </TxInfAndSts>
</OrgnlPmtInfAndSts>

What to do about AC02

  • If you sent the payment or the collection: For a credit transfer, check that DbtrAcct is an account your bank holds for you, in the form the bank expects (IBAN or domestic number). For a direct debit, check the debtor IBAN against the signed mandate.

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

Look up AC02 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=AC02&kind=status_reason'