Skip to main content
POST
Return transaction

Overview

This endpoint returns a SEPA Direct Debit transaction to the originator. Use this when you cannot process the debit due to account issues or customer disputes.

Common Return Scenarios

  • Insufficient funds
  • Account closed or blocked
  • No valid mandate
  • Customer dispute

Requirements

  • Transaction must be in a returnable state
  • Valid return reason code required
  • Return must occur within the allowed timeframe (see Timeframes below)

Timeframes & Reason Codes

This endpoint carries both returns and refunds - the reason code decides which, and each has its own deadline (Centrolink rejects anything outside the window):
  • Return - technical reasons such asAC04 orAM04, up to 5 business days after settlement.
  • Refund of an authorised collection -MD06 (customer dispute), up to 8 weeks after the debit date.
  • Refund of an unauthorised collection -MD01 (no valid mandate), up to 13 months after settlement.

Return Amounts and Charges

When a return or refund arrives on a collection you initiated, the returned settlement amount can exceed the original collection amount. Under the SDD scheme the debtor’s bank may claim, on top of the returned principal, a return/refund fee and interest compensation - in practice these appear chiefly on refunds of unauthorised collections (MD01) in the period from 8 weeks to 13 months. In the transaction data (GET /getTransaction) the breakdown is:
  • parent_trx_amt - the original collection amount
  • rtrn_chrgs_amt - the fee claimed by the debtor’s bank (pacs.004 ChrgsInf)
  • compensation_amt - interest compensation (pacs.004 CompstnAmt)
The return transaction’s own amount already includes the fee and compensation - do not add them on top when reconciling; the bank’s total claim equals the return amount minus parent_trx_amt. Both breakdown fields are null on ordinary returns, meaning no charge was applied - a return arrives as a complete message, so null never means “pending”. Webhook notifications carry only the total return amount; use the API to read the breakdown.

SEPA SDD Return Reasons

This document lists the supported SEPA Direct Debit (SDD) return reason codes that can be used when returning an SDD transaction, because the service /v1/transactions/:return is used not only for SDD payment returns.

Validation Rules

  • The reason field must be one of the supported values listed below.
  • Using an unsupported reason code (for example FOCR) will result in a VALIDATION_ERROR.

Supported Return Reason Codes

  • AC01 – Incorrect Account Number
  • AC04 – Closed Account Number
  • AC06 – Blocked Account
  • AG01 – Transaction Forbidden
  • AG02 – Invalid Bank Operation Code
  • RC01 – Bank Identifier Incorrect
  • AM04 – Insufficient Funds
  • AM05 – Duplication

Mandate / Authorization

  • MD01 – Unauthorized Transaction
  • MD06 – Disputed authorized transaction (Only for refunds)
  • MD07 – End Customer Deceased

Missing information

  • RR01 – Missing Debtor Account or Identification
  • RR02 – Missing Debtor Name or Address
  • RR03 – Missing Creditor Name or Address

Not specified reason

  • MS02 – Not Specified Reason Customer Generated
  • MS03 – Not Specified Reason Agent Generated

Regulatory / Other

  • RR04 – Regulatory Reason
  • SL01 – Specific Service offered by Debtor Agent
  • BE05 – Unrecognized Initiating Party

Example Error Response

Path Parameters

id
integer<int64>
required

Transaction ID.

Body

application/json
reason
enum<string> | null
required

Return reason. All payment methods; the accepted codes differ per method — see the operation description.

Available options:
AC01,
AC04,
AC06,
AG01,
AG02,
AM04,
AM05,
BE04,
BE05,
CNOR,
ERIN,
FF05,
FOCR,
MD01,
MD06,
MD07,
MS02,
MS03,
RC01,
RR01,
RR02,
RR03,
RR04,
SL01,
AM09,
BE01,
FRAD,
UPAY,
DUPL,
NARR,
RC03,
RC04,
INDM,
LEGL,
NOAS,
AGNT,
BE08,
CUST
additional_info
string

Free-text return reason, max 105 characters. For SWIFT and T2, mandatory when reason is NARR and optional otherwise. Ignored for SEPA payments.

Maximum string length: 105
compensation_amount
number

Compensation amount. SEPA Direct Debit only; ignored for other payment methods.

tax_amount
number

Tax amount. SEPA Direct Debit only; ignored for other payment methods.

Response

Returned transaction

cr_amount
integer
required

Payment amount in minor currency units

cr_ccy_isocode
string
required

SEPA payment currency code

created_at
string<date-time>
required

Time and date when transaction was created

dr_amount
integer
required

Payment amount in minor currency units

dr_ccy_isocode
string
required

SEPA payment currency code

id
integer<int64>
required

Transaction ID

metadata
string[]
required

Client-defined metadata values for linking the payment to internal records

status
string
required

Name of the status

status_hardvalue
string
required

Hard value of status

status_id
integer<int32>
required

Status id, all statuses can be retrived using API getTransactionStatuses

type
string
required

Type name

type_id
integer<int32>
required

Type id, all transaction types can be retrieved using API getTransactionTypes

adjustment_display_parties
object

Display-only parties for a resolved liquidity adjustment; the authoritative parties remain in inbound or outbound

compensation_amt
integer

Payment compensation amount

inbound
object | null

Information about inbound transaction

mandate_information
object

Provides further details of the direct debit mandate signed between the creditor and the debtor.

origin_bic
string

Payment return originator bic

origin_name
string

Payment return originator name

origin_reason_code
string

Payment return originator reason code

origin_reason_info
string

Payment return originator reason information

outbound
object | null

Information about outbound transaction

parent_trx_amt
integer

Original transaction amount

parent_trx_id
integer<int64>

Transaction id for parent transaction

rtrn_chrgs_amt
integer

Payment return tax amount

sepa_trx_id
string

Sepa transaction ID

sequence_type
enum<string>

Identifies the direct debit sequence, such as first, recurrent, final or one-off.

Available options:
FRST,
RCUR,
FNAL,
OOFF
status_reason
string

If there is some error, it is displayed in status reason or processing info tags

t2
object | null

T2-specific fields, present only for T2 payments

unaccounted_tax_amt
integer

Payment unaccounted tax amount

updated_at
string<date-time>

Time and date when transaction was last updated

Last modified on August 18, 2026