Demivolt logo
Prisijungti

SEPA R-Transactions: Reason Codes and Handling Guide

Published 9 August 2026

Master SEPA R-transactions by understanding reason codes and enhance your recovery process. Ensure compliance and boost efficiency today!

SEPA R-Transactions: Reason Codes and Handling Guide

SEPA R-transactions are the standardized bank messages that report rejects, returns, refunds, reversals, and refusals across the SEPA payment method. When one arrives, your first move is to ingest the reason code, extract the ISO 20022 data element, and route it immediately to your reconciliation or recovery workflow. Treating an R-transaction as a structured operational input rather than a simple error is what separates teams that recover funds quickly from those that lose them to expired deadlines.

Three immediate priorities for any finance or integration team:

  1. Verify rulebook version compliance with your PSP. The 2025 SDD Core rulebook version 1.0 enters into force October 5, 2025. If your PSP has not confirmed alignment, escalate now.
  2. Map every reason code to a canonical action in your CRM and accounting system before the first live transaction.
  3. Run end-to-end tests covering rejects, returns, refunds, and reversals against real message samples before go-live.

Key Takeaways

Correct R-transaction handling requires classifying reason codes on ingest, mapping them to ISO 20022 fields, and aligning your PSP implementation with the 2025 EPC rulebook before October 5, 2025.

Point Details
Classify on ingest Split R-transactions into recoverable and unrecoverable at the point of receipt to automate routing and protect re-presentation windows.
Map to ISO 20022 fields Parse reason codes from RtrRsnInf/Rsn/Cd in pain message and camt message; store the Original End-to-End ID for ledger matching.
Update RR02/RR03 logic EPC v8.0 (November 2024) changed these codes to include address-format flags; route them to format-correction workflows, not missing-data queues.
Confirm 2025 rulebook compliance The 2025 SDD Core rulebook v1.0 enters into force October 5, 2025; request written PSP confirmation and testing artifacts now.
Demivolt for implementation Demivolt provides ISO 20022-native ingestion, mandate storage, webhook routing, and free SEPA tools to support compliant R-transaction handling.

Table of Contents

What SEPA R-transactions are and why they matter operationally

The European Central Bank defines SEPA as the framework that harmonizes euro payments across 41 countries. Within that framework, R-transactions are the exception layer: structured messages that travel back through the payment chain when a transfer cannot be completed or must be reversed.

The five R-transaction types:

  • Reject: Issued before interbank settlement. The Debtor PSP or a CSM refuses the instruction because of a technical or business-rule failure (invalid IBAN, missing mandatory field, format error). No funds have moved.
  • Return: Issued after settlement. The Debtor PSP sends funds back because the account is closed, the debtor is deceased, or another post-settlement condition applies.
  • Refund: Initiated by the debtor (for SDD Core, within 8 weeks of debit, no questions asked) or by the creditor. Funds are returned to the debtor.
  • Reversal: Initiated by the creditor or Creditor PSP to cancel a previously settled SDD or SCT. Subject to strict timing windows.
  • Refusal: The debtor instructs their PSP to refuse an SDD before settlement, typically citing no valid mandate.

Actor flows differ by scheme. In SEPA Direct Debit, the Creditor PSP originates the collection and the Debtor PSP issues most R-messages back through the CSM. In SEPA Credit Transfer, R-transactions include returns, recalls, and originator inquiries, with the Debtor PSP or the Creditor PSP acting depending on the message type.

Operationally, the stakes are concrete. SDD Core’s 8-week no-questions-asked refund window means settled funds can be clawed back weeks after your ledger shows them as cleared. Closed-account returns expire within defined SLA windows. Every unactioned R-transaction is either a delayed recovery or a compliance gap.


Overview of the EPC reason-code taxonomy for SCT and SDD

The EPC publishes two canonical guidance documents that define the full code sets. The Guidance on Reason Codes for SDD R-transactions v8.0, published November 2024, governs SDD codes. The Guidance on Reason Codes for SCT R-transactions v6.0, also published November 2024, governs SCT codes. Scheme participants must apply these codes exactly as specified; substituting a non-standard code breaks automated reconciliation downstream.

High-level code groups:

  • Account/mandate problems: AC01 (incorrect account number), AC04 (closed account), AC06 (blocked account), MD01 (no valid mandate), MD02 (missing mandate data)
  • Payer-initiated actions: MD06 (refund request by end customer), MS02 (refusal by debtor), MS03 (reason not specified by debtor)
  • Regulatory/compliance reasons: AG01 (transaction forbidden), AG02 (invalid bank operation code), RR01–RR04 (regulatory reason codes covering missing debtor information, missing creditor information, and address-format issues)
  • Technical/format errors: BE01 (inconsistent with end customer), FF01 (invalid file format), RC01 (bank identifier incorrect)

The November 2024 updates to v8.0 specifically changed RR02 and RR03 to permit address-format flags. This is a subtle but consequential change: where these codes previously signaled missing information, they now also flag structured-address format violations. Any reconciliation system parsing RR02 or RR03 as a simple “missing data” signal will misclassify these returns after the update takes effect. The SCT v6.0 guidance similarly clarifies when inquiry codes apply versus standard return codes, reducing ambiguity in recall workflows.

The EPC emphasizes that standardized code usage is mandatory for scheme participants, precisely because the codes are designed to enable automated, end-to-end exception processing. A non-standard or missing code forces manual intervention and breaks STP.


Overview of the EPC reason-code taxonomy for SCT and SDD — overview diagram

Mandatory data elements and how reason codes are carried in ISO 20022 messages

R-transaction reason codes travel inside specific ISO 20022 message types. The table below maps the key fields integration teams need to parse and store.

Field ISO 20022 Element Message Context Notes
Reason Code RtrRsnInf/Rsn/Cd pain, camt messages 4-character code; mandatory in all R-messages
Original Transaction Reference OrgnlTxRef pain message Links R-transaction back to original pain.001/pain message
Unique Mandate Reference MndtRltdInf/MndtId pain message, pain message Must be transmitted with first SDD collection and retained
Creditor Scheme ID CdtrSchmeId pain message Required for SDD; links to mandate validation
Return Reason Information RtrRsnInf/AddtlInf camt message Free-text supplementary detail; parse but do not rely on for routing
Original End-to-End ID OrgnlEndToEndId pain message, camt.029 Critical for matching R-transaction to ledger entry
Interbank Settlement Amount IntrBkSttlmAmt camt message Confirms amount returned; reconcile against original debit

Message-level context matters. For SDD, a pre-settlement reject arrives as a pain message (Customer Payment Status Report). A post-settlement return also uses pain message or a camt message (FI-to-FI Payment Cancellation Request), depending on whether the Debtor PSP or Creditor PSP initiates. For SCT, returns and recalls use camt message and camt.029 (Resolution of Investigation). Parsing the message type before the reason code tells you whether settlement has occurred, which determines the recovery path.

A simplified reason-code element in a pain message looks like this:

<TxInfAndSts>
  <OrgnlEndToEndId>E2E-REF-20250401-001</OrgnlEndToEndId>
  <TxSts>RJCT</TxSts>
  <StsRsnInf>
    <Rsn>
      <Cd>AC04</Cd>
    </Rsn>
    <AddtlInf>Account closed</AddtlInf>
  </StsRsnInf>
</TxInfAndSts>

The EPC’s mandate guidance requires that mandate-related data be transmitted with the first collection and that the creditor retain mandate records for the full retention period. Store the Unique Mandate Reference alongside every R-transaction record so that mandate-linked codes (MD01, MD02) can be traced back to the original authorization.

Pro Tip: Normalize reason codes to uppercase and trim whitespace on ingest. Several PSP implementations introduce trailing spaces or lowercase variants that break exact-match routing rules in downstream systems.


Operational workflow: how to process R-transactions end to end

The Deutsche Bundesbank recommends treating R-messages as structured operational data for automated reconciliation, not as error logs. The workflow below reflects that principle.

  1. Ingest and parse. Receive the R-message (pain message, camt message, or camt.029). Extract: reason code, original end-to-end ID, settlement status, and amount. Log the raw message with a timestamp.

  2. Classify: recoverable vs. unrecoverable. Recoverable codes include AM04 (insufficient funds) and MS02 (refusal by debtor) where re-presentation may succeed. Unrecoverable codes include AC04 (closed account) and MD01 (no valid mandate), where re-presentation will fail and a different action is required. This triage step, applied consistently on ingest, reduces manual effort across the full exception queue.

  3. Route by classification:

    • Recoverable: queue for re-presentation after the required waiting period; trigger a customer notification via CRM with a clear payment-retry message.
    • Unrecoverable: close the collection attempt; initiate a refund if funds were settled; update the mandate or account record; escalate to collections if appropriate.
  4. Record the action and SLA. Every R-transaction must carry a resolution timestamp. SDD Core returns must be processed within the scheme’s defined interbank window. Refund requests under the 8-week no-questions-asked right require a response within the timeframe the Debtor PSP’s rules specify.

  5. Automate via webhooks. Configure your PSP or BaaS layer to emit a webhook event on R-transaction receipt — learn more about this process in the context of eSIM Crypto Payment. The event payload should include the reason code and classification. Downstream systems (ERP, CRM, collections platform) subscribe and act without manual intervention. For SEPA transfer best practices, this automation layer is the difference between same-day recovery and week-long queues.

  6. Reconcile and close. Match the returned amount against the original ledger entry using the Original End-to-End ID. Mark the entry as returned/refunded. Update cashflow forecasts to reflect the recovered or lost amount.


Technical implementation checklist and test plan for PSPs and integrators

Pre-go-live checklist:

  1. Confirm your PSP supports the 2025 SDD Core rulebook and the November 2024 EPC guidance versions (SDD v8.0, SCT v6.0). Request written confirmation and the rulebook annex.
  2. Verify ISO 20022 element mapping: confirm pain message, camt message, and camt.029 are parsed correctly in your integration layer.
  3. Confirm mandatory retention of mandate data (Unique Mandate Reference, mandate date, creditor scheme ID) in your data store.
  4. Validate that e-mandate acceptance is configured where applicable.
  5. Confirm webhook or file-delivery SLAs for R-message delivery with your PSP. Document the agreed window.

Test plan outline:

  1. Positive tests: submit valid SDD and SCT transactions; confirm no R-transaction is generated.
  2. Reject tests: submit a transaction with an invalid IBAN; assert a pain message with code AC01 is returned.
  3. Return tests: simulate a post-settlement return for a closed account (AC04); confirm the camt message is parsed and the ledger entry is reversed.
  4. Refund tests: simulate an 8-week refund request (MD06); confirm the refund workflow triggers and the amount is reserved.
  5. Reversal tests: initiate a creditor-side reversal; confirm the camt message is sent and acknowledged within the scheme window.
  6. Negative format tests: submit a transaction with an invalid structured address; assert RR02 or RR03 is returned (not a generic format error). This test is critical given the November 2024 changes to these codes.
  7. Mandate-missing test: submit an SDD without a Unique Mandate Reference; assert MD02 is returned.

Post-go-live monitoring metrics:

  • R-transaction rate as a percentage of total collections (track weekly)
  • Top five reason codes by volume (review monthly)
  • Mean time to resolution per code category
  • Outstanding refund exposure under the 8-week SDD Core window

Understanding the taxonomy is one thing. Knowing exactly what to do when a specific code arrives is what keeps cashflow intact.

  • AM04 (Insufficient funds): The debtor’s account lacked funds at the time of collection. This is recoverable. Re-present after a minimum waiting period (typically 5 business days, per your scheme rules). Notify the customer via CRM with a neutral, factual message. Do not re-present more than twice without direct customer contact. Accounting treatment: reverse the receivable; re-book on successful re-presentation.

  • AC04 (Closed account): The account no longer exists. Unrecoverable. Do not re-present. Contact the customer immediately to obtain updated banking details. If funds were settled and returned, reconcile the return against the original debit. Cashflow impact: treat as a delayed receipt until new details are confirmed and a fresh collection succeeds.

  • MD01 (No valid mandate): No mandate exists for this collection. Unrecoverable without a new mandate. Suspend all collections for this customer. Initiate a mandate re-authorization workflow. CRM note: frame outreach as an account-verification step, not a collections action. Accounting: reverse the receivable and flag the customer record.

  • MD06 (Refund request by end customer): The debtor has exercised the 8-week no-questions-asked refund right under SDD Core rules. The refund is obligatory. Process it within the Debtor PSP’s stated window. Tag the original settled entry so the refund can be matched automatically. Model this exposure in cashflow forecasts; businesses with high SDD volumes should maintain a reserve against outstanding refund windows.

  • RR02 / RR03 (Regulatory reason: address-format issue): Post the November 2024 EPC v8.0 update, these codes now flag structured-address format violations in addition to missing information. Check the AddtlInf field for specifics. Correct the address data in your customer record and resubmit. Do not route these as generic “missing data” codes; the corrective action is format remediation, not data collection.


EPC rulebook updates, timelines, and contractual checks to make with your PSP

The November 2024 publications of EPC SDD guidance v8.0 and SCT guidance v6.0 set the current canonical standard for reason-code handling. The 2025 SDD Core rulebook version 1.0 enters into force October 5, 2025. PSPs that have not updated their implementations by that date are non-compliant with scheme rules.

Milestone Date What it requires
EPC SDD Guidance v8.0 published November 2024 Updated RR02/RR03 definitions; address-format flags active
EPC SCT Guidance v6.0 published November 2024 Clarified inquiry-code usage; updated SCT R-code definitions
2025 SDD Core Rulebook v1.0 in force October 5, 2025 PSPs must implement all annex changes; non-compliant PSPs breach scheme rules

Contractual and operational checks to run with your PSP:

  • Request written confirmation of rulebook version support (SDD v8.0 guidance, 2025 Core rulebook).
  • Ask for evidence of ISO 20022 message mapping, specifically pain message, camt message, and camt.029 field coverage.
  • Confirm SLAs for R-message delivery: how quickly after settlement does your PSP deliver the R-message to your integration layer?
  • Confirm investigation window SLAs for disputed transactions and recalls.
  • For US-headquartered businesses using SEPA rails, your PSP or BaaS provider must document compliance and provide testing artifacts. Regulatory accountability sits with the scheme participant (your PSP), but operational risk sits with you if your integration mishandles the codes. Review the EU payment regulations overview for the broader compliance context.

How Demivolt supports R-transaction implementation and ongoing management

Demivolt’s infrastructure is built to handle the full R-transaction lifecycle for businesses and integrators operating on SEPA rails.

Platform capabilities relevant to R-transaction management:

  • ISO 20022-compatible message ingestion for pain message, camt message, and camt.029, with structured parsing of reason codes and original transaction references
  • Mandate storage with Unique Mandate Reference support, ensuring mandate-linked R-codes (MD01, MD02) can be traced to the original authorization record
  • Webhook and event routing for returns, refunds, and reversals, enabling downstream CRM and ERP systems to act automatically on R-transaction events
  • Reconciliation tools that match returned amounts to original ledger entries using the Original End-to-End ID
  • Reporting dashboards that surface R-transaction rates, top reason codes, and outstanding refund exposure

Implementation use case: A finance team connects their ERP to Demivolt’s API. When an AC04 return arrives, Demivolt parses the pain message, classifies the code as unrecoverable, emits a webhook to the CRM (triggering a customer outreach task), and reverses the receivable in the reconciliation ledger. The entire flow runs without manual intervention.

Demivolt also provides free SEPA tools including an IBAN validator and fee calculator, which support pre-submission validation and reduce reject rates at the source.


What experienced payments teams know that documentation doesn’t say

The most expensive mistake in R-transaction handling is not a wrong code mapping. It is the failure to classify recoverable versus unrecoverable at the point of ingest. Teams that route all R-transactions into a single manual review queue lose hours to cases that could have been automated and miss re-presentation windows on recoverable codes. The classification logic is simple: if re-presentation can succeed without a change to the underlying data, the code is recoverable. If the account, mandate, or regulatory condition is permanently broken, it is not. Build that fork into your ingest pipeline on day one.

The second recurring pitfall is rulebook version drift. The November 2024 changes to RR02 and RR03 are a precise example: teams that had not updated their parsing logic continued to treat these codes as simple missing-data signals, when the codes now also carry address-format flags requiring a different corrective action. The fix is not complex, but it requires a process: subscribe to EPC guidance updates, version-control your code mappings, and include negative format tests in your CI pipeline so that a code-definition change surfaces as a test failure before it reaches production.

One action your team can take in the next 48 hours: pull your current reason-code-to-action mapping document and verify that RR02 and RR03 route to an address-format correction workflow, not a generic “contact customer for missing data” task. If they do not, update the mapping and push the change to your test environment today.


What experienced payments teams know that documentation doesn't say — overview diagram

Demivolt: a compliant SEPA partner for R-transaction handling

Finance teams that have worked through this guide know the gap between having a SEPA connection and having a SEPA connection that handles exceptions correctly. Demivolt closes that gap with regulated infrastructure, ISO 20022-native message processing, and mandate storage built to EPC rulebook standards.

Demivolt

When evaluating a SEPA partner for R-transaction support, ask these questions in your demo: Does the platform parse pain message, camt message, and camt.029 natively? Can it confirm rulebook version compliance in writing? What are the SLAs for R-message delivery and dispute investigation? Does it provide testing artifacts for pre-go-live validation?

Demivolt answers all of them. Use the free IBAN validator to eliminate format-driven rejects before submission, and the SEPA fee calculator to model refund and re-submission costs. To validate technical compatibility or request a demo, visit Demivolt and speak with the team directly.


Sources

The following documents are the authoritative references for SEPA R-transaction handling. Consult the EPC guidance documents for canonical code lists; use the rulebook for scheme-rule obligations; use the ECB and Bundesbank materials for regulatory context.

This article is general information, not a substitute for advice from a qualified financial advisor. Consult a qualified financial professional about your own circumstances before acting on anything here.