background

Understanding R-codes and failed transactions

Tags:r-codesr codeserrorerreurhard failuresoft failuretechnical failureinsufficient fundscustomer refusesrefusaldisputedgeweigerdweigeringrefusedrefused by bankrejectedMS03AM04MD06MS02SL01AC01AC04AC06AC13AG01AG02AM05BE05FF01MD01MD02MD07PY01RC01RR01RR02RR03RR04

When a SEPA Direct Debit (SDD) or recurring card transaction (RCC) fails, the bank or Payment Service Provider (PSP) returns an R-code or also referred to as SDD R-transactions. These codes are defined by the European Payments Council (EPC) and indicate why a transaction could not be completed or was reversed.

Correctly interpreting R-codes allows you to:

  • Understand what went wrong
  • Take the right next action
  • Guide customers to complete their paymen, even after a failed attempt

Types of R-transactions (EPC definitions)

Reject

A Reject occurs before settlement when a transaction cannot be processed due to an error detected by the debtor bank or the clearing mechanism.

Typical causes:

  • Invalid IBAN
  • Invalid mandate data
  • Technical or format errors

Refusal

A Refusal is initiated by the debtor, who instructs their bank not to execute a specific collection, before settlement.

Typical causes:

  • Debtor does not agree with the collection
  • Amount is considered incorrect
  • Creditor is blocked by the debtor

Return

A Return happens after settlement and is initiated by the debtor bank, usually because the transaction could not be completed (e.g. insufficient funds).

Refund

A Refund is explicitly requested by the debtor after a successful collection:

  • Up to 8 weeks for authorised CORE mandates (no justification required)
  • Up to 13 months for unauthorised collections

R-code buckets — Twikey’s operational grouping

The EPC defines what an R-code means and when it can occur.
Within Twikey, we go some steps further.

To enable smart, consistent and fully automated follow-up, Twikey groups R-codes into operational buckets. These buckets are not EPC scheme categories, but a practical Twikey structuring that helps determine the right next action for each failed transaction.

By structuring the R-codes this way, you can:

  • Configure clear failed payment rules
  • Automate retries and customer communication
  • Avoid unnecessary or incorrect retries
  • Scale failure handling without manual decision-making

Below you'll find our 3 operational buckets :

Insufficient funds - Soft failure (the can't bucket)

This bucket groups R-codes that indicate the customer can't pay at that moment, typically due to a temporary lack of funds. In most cases, the mandate and account remain valid, and payment may succeed later without customer intervention.

CODEERROR REASON
MS03Reason not specified
AM04Insufficient funds

Typical automated follow-up in Twikey :

  • Retry (multiple times) after a configurable delay
  • Send a payment link with a reminder message (Mail/SMS)

Customer refusal - Hard failure (the will not bucket)

This bucket contains R-codes where the customer has explicitly refused the payment or requested a refund. Simply said, they will not pay.
Retrying the same collection without customer interaction is usually ineffective.

CODEERROR REASON
MD06Disputed authorized transaction. Debtor has requested a refund within the 8 weeks refund period.
MS02The debtor refuses this particular collection. This code may be received pre- or post-settlement, depending on how quickly the debtor bank responds to the refusal.
SL01Specific service offered by the Debtor Bank. The creditor has been blocked by the debtor (blacklisted) or the collection amount is too high.

Typical automated follow-up in Twikey :

  • Do not retry automatically
  • Send a payment link with a reminder message and/or propose an alternative payment method
  • Notify the customer and/or merchant

Technical failure (the others bucket)

This bucket groups all other remaining R-codes where the failure is caused by technical, data, regulatory or mandate-related issues.
These cases usually require corrective action before any retry can succeed.

CODEERROR REASON
AC01IBAN or IBAN/BIC combination of debtor is incorrect.
AC04Debtor account closed.
AC06Account of the debtor blocked (eg. succession/bankruptcy) or blocked for Direct Debit transactions by the debtor.
AC13Account type not allowed for Direct Debits.
AG01Account not allowed for Direct Debits for regulatory reasons.
AG02Bank Operation code specified in the message is not valid for the bank.
AM05Duplicate collection.
BE05Incorrect Creditor Identifier code.
FF01File Format incomplete or invalid.
MD01No valid mandate (no longer valid, not correctly registered, invalid sequence type).
MD02Mandate data missing or incorrect. Two FIRST transactions were received for the same mandate.
MD07Debtor deceased.
PY01Not routable. This can occur when the debtor's bank does not handle SDD's.
RC01Bank Identifier (BIC) incorrect.
RR01Regulatory Reason. The debtor account number is missing.
RR02Regulatory Reason. The debtor name and/or address is missing.
RR03Regulatory Reason. The creditor name and/or address is missing.
RR04Regulatory Reason. This code cannot be used in certain SEPA countries for data protection reasons. MS03 can be used as an alternative.

Typical automated follow-up in Twikey :

  • Suspend the mandate and thus prevent automatic retries
  • Send a payment link with a reminder message and/or propose an alternative payment method or even a new mandate

Where to find the specific R-code on a failed transaction

  • R-codes are displayed in the transaction details and on the customer detail page under the Transactions tab.
  • Clicking an R-code takes you to a dedicated page on our website with a detailed explanation of the error.
  • The transaction detail itself also shows a short description for quick reference.

You can find a complete overview of all R-codes here:

Automatic follow-up for failed payments

To simplify handling failed transactions, you can configure dunning steps—automated actions triggered by specific R-codes.

This allows you to:

  • Streamline your workflow
  • React consistently to failed transactions
  • Prompt customers to complete payments immediatly or automatically

Failed payment steps run fully automatically, ensuring a smooth and scalable direct debit process.

Available failed payment step types

When configuring your failed payment workflow, the following step types are available:

Step typeWhat it does
Try againRe-submits the transaction to the bank after a configurable delay
Allow payment alternativeSends the customer a payment link so they can pay via an alternative method
Change status of mandateSuspends or cancels the mandate to prevent further automatic collections
NotifySends a notification to the customer and/or merchant
Send official letter (Wik Letter)Issues a legally compliant debt collection letter as a final formal step
Offer signing an alternative mandateInvites the customer to sign a new mandate
Move mandate to other profileMoves the mandate to a different profile (e.g. to apply different collection rules)

Each step type can be configured per R-code bucket with custom delays and message templates. For setup instructions, see Setting up a failure management scheme.

Example workflow for failed payments

Insufficient funds

  1. Retry the transaction after a 3-day delay
  2. Send a payment link with reminder 1
  • Customer refuses payment
  1. Send a payment link with reminder 1
  2. Notify the customer and/or merchant
  • Technical failure
  1. Change the mandate status to suspended
  2. Send a payment link with reminder 1

For guidance on adapting your failed payments workflow, see Setting up a failure management scheme - dunning workflow.

Last Update: 2026-01-30