ISO 20022 reason code
AM04: Insufficient funds
Not enough funds on the account to cover the payment. AM04 is an ISO 20022 reason code used as a status reason, a return reason and a cancellation rejection reason: you will see it in pain.002, pacs.004, camt.053 and camt.029.
| Code | AM04 |
|---|---|
| Name | Insufficient funds |
| ISO code lists | ExternalStatusReason1Code (status reason); ExternalReturnReason1Code (return reason); ExternalPaymentCancellationRejection1Code (cancellation rejection reason) |
| Where | StsRsnInf/Rsn/Cd; RtrRsnInf/Rsn/Cd (pacs.004), TxDtls/RtrInf/Rsn/Cd (camt); CxlStsRsnInf/Rsn/Cd |
What AM04 means
The debtor’s account does not have enough money, or credit line, to cover the payment. It is the most common reason a direct debit comes back unpaid. In the answer to a recall it means the payee’s account no longer holds the funds.
Not to be confused with: AM04 is about the money on the account; AM02 refuses the amount itself whatever the balance, and AM07 means the amount was blocked by an authority.
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 AM04 appears
AM04 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 rejection reason (ExternalPaymentCancellationRejection1Code): in the answer to a cancellation or recall request that is refused (camt.029 resolution of investigation).
On the account statement, the returned amount is an entry of its own, and AM04 sits in the return information of its transaction details (pacs.004, the interbank return, carries it in TxInf/RtrRsnInf/Rsn/Cd):
<Ntry>
<Amt Ccy="EUR">2100.00</Amt>
<CdtDbtInd>CRDT</CdtDbtInd>
<Sts><Cd>BOOK</Cd></Sts>
<NtryDtls>
<TxDtls>
<Refs>
<EndToEndId>INV-2026-0042</EndToEndId>
</Refs>
<RtrInf>
<Rsn>
<Cd>AM04</Cd>
</Rsn>
</RtrInf>
</TxDtls>
</NtryDtls>
</Ntry>What to do about AM04
- If you sent the payment or the collection: For a payment from your own account, fund the account and send again. For a direct debit you collected, the amount is debited back from your account: contact the payer before you collect again; a new collection is a new transaction.
- On the other side: If you are the payer of a direct debit, make sure the account is funded before the collection date.
Your bank’s implementation guide and the scheme’s rulebook (for SEPA, the EPC rulebooks) say exactly when it may use AM04; banks do not all apply a code the same way.
Look up AM04 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=AM04&kind=status_reason'