Skip to main content
POST
Return a payment

Overview

Use this endpoint when you need to return a completed inbound SWIFT payment to its originator. Returning a payment creates a separate Payment return transaction linked to the original payment. The original payment remains Completed, and the 201 response contains the newly created return transaction.

Requirements

  • The original payment must be an inbound SWIFT payment in Completed status.
  • The original payment must not have another return that has not been rejected.
  • The Idempotency-Key header must contain a UUID version 4 value.

Supported SWIFT return reasons

The reason field accepts these values for SWIFT payments:
  • AC01
  • AC04
  • AC06
  • AG01
  • BE04
  • BE08
  • CUST
  • DUPL
  • FRAD
  • MD07
  • NARR
  • RR04
The API uses one request model for multiple payment methods, but reason codes are validated against the original payment’s method. Codes documented for SEPA Credit Transfer, SEPA Direct Debit, or T2 are not automatically valid for SWIFT.

Additional reason information

Use additionalInfo to provide free-text return reason information, up to 105 characters.
  • When reason is NARR, additionalInfo is required and must not be blank.
  • For every other supported SWIFT reason, additionalInfo is optional.

Headers

Idempotency-Key
string
required

Unique UUID identifying this return request.

Path Parameters

id
integer<int64>
required

ID of the payment to return.

Body

application/json
reason
enum<string> | null
required

Return reason. The codes accepted depend on the payment method.

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
additionalInfo
string | null

Free-text return reason. Applies only to SWIFT and T2, where it is mandatory when reason is NARR and optional otherwise. Ignored for SEPA Credit Transfer and SEPA Direct Debit.

Maximum string length: 105
compensationAmount
number | null

Compensation amount. SEPA Direct Debit only.

taxAmount
number | null

Tax amount. SEPA Direct Debit only.

Response

Payment return created

createdAt
string<date-time>
required

Time and date when the payment was created (UTC)

Example:

"2025-11-21T12:46:54.321667Z"

creditor
object
required

Creditor (recipient) party information

debtor
object
required

Debtor (sender) party information

direction
enum<string>
required

Payment direction

Available options:
OUTBOUND,
INBOUND
Example:

"OUTBOUND"

endToEndId
string
required

End-to-end identifier assigned by the originator

id
integer<int64>
required

Unique payment identifier

Example:

10300007

instructedAmount
integer
required

Instructed payment amount in minor currency units (cents)

Example:

100

instructedCurrency
string
required

Instructed payment currency ISO code

Example:

"EUR"

metadata
string[]
required

Client-defined metadata values assigned when the payment was created

scheme
enum<string>
required

Payment scheme. SEPA_CT — SEPA Credit Transfer, SEPA_INST — SEPA Instant Credit Transfer, SEPA_DD — SEPA Direct Debit, SWIFT — SWIFT cross-border payment.

Available options:
SEPA_CT,
SEPA_INST,
SEPA_DD,
SWIFT,
T2
Example:

"SEPA_CT"

sddActionOptions
object[]
required

R-transactions a client may raise against this payment right now. Empty for anything but a received SEPA direct debit collection. The action endpoints validate these windows again when a request is submitted.

sddRejectWindowExpired
boolean
required

True only when all Reject reason windows have expired. False also covers unknown expiry.

sddReturnWindowsExpired
boolean
required

True only when all Return and Refund reason windows have expired. False also covers unknown expiry.

settlementAmount
integer
required

Settlement amount in minor currency units (cents)

Example:

100

settlementCurrency
string
required

Settlement currency ISO code

Example:

"EUR"

status
enum<string>
required

Current payment status

Available options:
CREATED,
TO_SIGN,
SIGNED,
SENT_TO_CLEAR,
COMPLETED,
CANCELLED,
REJECTED,
ACCEPTED,
SOME_PROBLEMS,
PENDING_CONFIRMATION
Example:

"COMPLETED"

type
enum<string>
required

Payment type

Available options:
PAYMENT,
PAYMENT_CANCELLATION,
PAYMENT_RETURN,
REVERSE_PAYMENT,
CSM_FEES,
ADJUSTMENT
Example:

"PAYMENT"

adjustmentDisplayParties
object | null

Display-only parties for a resolved liquidity adjustment; the authoritative parties remain in debtor and creditor

categoryPurposeCode
enum<string> | null

Category purpose code (e.g. SALA, TAXS, GOVT)

Available options:
BONU,
CASH,
CBLK,
CCRD,
CORT,
DCRD,
DIVI,
DVPM,
EPAY,
FCIN,
FCOL,
GOVT,
HEDG,
ICCP,
IDCP,
INTC,
INTE,
LOAN,
MP2B,
MP2P,
OTHR,
PENS,
RPRE,
RRCT,
RVPM,
SALA,
SECU,
SSBE,
SUPP,
TAXS,
TRAD,
TREA,
VATX,
WHLD
categoryPurposeProprietary
string | null

Proprietary category purpose

chargesAndAdjustments
object | null

Return-only charges and adjustments. Populated only for payment_return / payment_cancellation transactions; absent otherwise.

creditTransferType
enum<string> | null

Credit transfer type for T2 payments

Available options:
CUSTOMER,
FINANCIAL_INSTITUTION
directDebit
object | null

SEPA direct debit fields, present only for SDD payments

instructionId
string | null

Instruction identifier

messageId
string | null

Message identifier

originBic
string | null

Return / rejection originator BIC

originName
string | null

Return / rejection originator name

originReasonCode
string | null

Return / rejection reason code

Example:

"AC04"

originReasonInfo
string | null

Return / rejection reason information

parentPaymentId
integer<int64> | null

Parent payment identifier, present for returns / reversals / cancellations

parentTransactionAmount
integer | null

Original (parent) transaction amount in minor currency units (cents)

purpose
string | null

Unstructured remittance information (free text)

Example:

"Invoice #12345"

purposeCode
string | null

ISO 20022 purpose code or proprietary purpose value (e.g. SUPP, SALA, TAXS)

settlementDate
string<date> | null

Settlement date

statusReason
object | null

Reason for the current status

structuredReference
object | null

Structured remittance reference

swift
object | null

SWIFT-specific fields, present only for SWIFT payments

t2
object | null

T2-specific fields, present only for T2 payments

ultimateCreditor
object | null

Ultimate creditor party information

ultimateDebtor
object | null

Ultimate debtor party information

updatedAt
string<date-time> | null

Time and date when the payment was last updated (UTC)

Example:

"2025-11-21T12:46:54.612954Z"

Last modified on August 5, 2026