>_ Analyst Engineering

Payment Returns, Reversals, and Recalls: pacs.004, pacs.007, and camt.056

Written by Ahmed at Analyst Engineering, a Senior Technical Business Analyst with 10+ years in banking and payments delivery.

Cover for a guide to payment returns, reversals, and recalls in ISO 20022.

Key takeaways

  • ISO 20022 separates three ways money comes back: a return (pacs.004) initiated by the receiving side because the payment cannot be applied, a reversal (pacs.007) initiated by the sending side to unwind its own instruction, and a recall (camt.056) which is a request that the other side may refuse.
  • The recall is the one that is not a payment message at all: camt.056 asks, camt.029 answers, and money only moves if the answer is yes, via a return.
  • Every exception flow must preserve the original payment's identifiers, above all the UETR, or the return arrives as unmatched money and becomes a reconciliation break.
  • Modeling all three as one generic 'failed payment' state is the classic analysis mistake: they have different initiators, directions, reason codes, and customer conversations.

Once a payment has left, there are three different ways to get the money back, and ISO 20022 keeps them strictly apart: the receiver sends it back (return), the sender unwinds it (reversal), or the sender asks nicely and waits for an answer (recall). Collapsing the three into one “failed payment” state is how ledgers, customer messages, and reconciliations all go wrong at once.

ISO 20022 models the after-settlement failure world, what operations teams call exceptions and investigations, with three distinct mechanisms. A return travels as a pacs.004: the receiving side cannot or will not apply the funds and sends them back, a new movement in the opposite direction. A reversal travels as a pacs.007: the sending side unwinds an instruction it now knows was wrong, a duplicate being the classic case. A recall starts as a camt.056, which is not a payment message at all but a cancellation request, answered by a camt.029, and only becomes moving money if the answer is yes. The PAIN vs pacs article warned against modeling returns and reversals as one generic failure; this is the full picture of why, and of what an analyst must specify for each.

Returns vs reversals vs recalls at a glance

DimensionReturn (pacs.004)Reversal (pacs.007)Recall (camt.056 / camt.029)
Who initiatesReceiving sideSending sideSending side, as a request
WhyFunds cannot or will not be appliedSender’s own error to unwindFraud, duplicate, technical error
Is money moving?Yes, back to the debtor sideYes, unwinding the originalNot yet: only if the answer is yes
Answer messageNone needed: it is the actionNone needed: it is the actioncamt.029 resolution, accept or refuse
Typical reason codesAC04, AC06, MS02/MS03, scheme setDuplication and error codes per schemeDUPL, TECH, FRAD, plus scheme set
Certainty of outcomeCertain: funds are coming backCertain: sender is unwindingUncertain: consent may be refused
Time criticalityScheme-defined return windowsPrompt, per scheme rulesExtreme for FRAD: odds decay hourly
MT-era ancestorMT103 RETN conventionsReversal conventionsMT192/292 with MT196/296 answers

What makes each flow its own analysis problem?

Returns look simple, money comes back, and hide two hard requirements. The pacs.004 must reference the original payment, carrying its identifiers including the UETR, because a return that arrives without a clean link to its original is unmatched money: it lands in a suspense account, generates a reconciliation break, and consumes an investigator’s afternoon. And the return reason code drives a customer conversation: AC04 on a return means the beneficiary account closed after your customer sent the money, which is a different message than a rejection ever produces, and the reason-code-to-message mapping must cover the return set, not just the rejection set.

Reversals are the sender admitting error, and their analysis center is idempotency’s aftermath: the duplicate that a pacs.007 unwinds is exactly the double-processing that idempotency testing exists to prevent. Specifying reversals means specifying the ledger behavior, the original entry, the reversing entry, their linkage, and what the customer sees for a payment that existed and then un-existed, a state machine transition that many status models forget to include, and one that must be impossible from terminal states it should never leave.

Recalls are the interesting one, because the mechanism is a conversation, not a command. The camt.056 asks; the receiving bank investigates, often needing its customer’s consent since banks cannot simply claw settled funds off an account in most regimes; the camt.029 answers accepted or refused with a reason; and acceptance produces a pacs.004 to actually move the money. That makes the recall a multi-message, multi-day flow with an uncertain outcome, whose states, requested, pending, accepted, refused, expired, belong explicitly in the payment’s lifecycle model. FRAD recalls add brutal time pressure: fraud recovery odds decay by the hour, which turns the recall path’s latency into an operational requirement, not a nicety, and makes the recall queue something that gets monitored like a DLQ, never left to rot.

How does an analyst specify and test this properly?

Model the exception space as transitions in the payment state machine: settled-then-returned, settled-then-recall-requested, recall-accepted, recall-refused, reversed, each with its trigger message, its reason code set per the scheme’s rulebook, its ledger effect, and its customer-facing rendering. Then test it like the QA analyst the flow deserves: inject a return and assert the original is matched by UETR and the status lands correctly; run a recall through accept and refuse branches and assert the camt.029 handling on both; attempt the illegal transitions, a return against a payment that never settled, a second return of the same funds, and prove they are blocked. The exception flows are where production incidents concentrate precisely because they get a fraction of the happy path’s design attention; giving them equal rigor is what separates a payment platform that survives its first fraud recall from one that improvises it.

The takeaway

ISO 20022 keeps three comebacks apart: the return (pacs.004, receiver sends funds back), the reversal (pacs.007, sender unwinds), and the recall (camt.056 request, camt.029 answer, money only on yes). They differ in initiator, certainty, reason codes, ledger impact, and urgency, so they must be modeled as distinct lifecycle transitions with their identifiers preserved end to end. Design and test them with the happy path’s rigor, because the exception flows are where the money, and the incidents, actually are.

About the author

Analyst Engineering is written by Ahmed, a Senior Technical Business Analyst with 10+ years of banking and payments delivery experience: ISO 20022 and SWIFT messaging, payments API integration, Kafka event validation, and production support. Every article comes from real delivery work, and each one is reviewed and updated as tools and standards change.

Newsletter

Subscribe

Practical, no-fluff playbooks for technical analysts who analyze, code, test, and support. New articles straight to your inbox.

No spam. Unsubscribe anytime.