Skip to main content

Open Banking Refund Error Reporting

Open Banking refund error reporting improvements

We've improved how failed SEB Open Banking (OB) refunds are reported in both the Merchant Portal and the API, making it easier to identify refund issues and troubleshoot failed refund attempts.

Previously, when an SEB Open Banking refund failed, only a generic Failed status was displayed.

With this improvement, every failed refund now includes:

  • A numeric error code

  • A descriptive error message

These details are available in both the Merchant Portal and the API.

Refund error codes

The following error codes may be returned for failed SEB Open Banking refunds:

Error Code

Error Message

Error Notes

3501

Payment rejected by bank

Generic bank rejection; used for RESOURCE_UNKNOWN errors and AM05 - Payment is a duplicate of another payment

3508

There is not enough available funds

Amount of funds available to cover specified message amount is insufficient

3520

Payment limit exceeded

Transaction amount exceeds limits agreed between bank and client

3522

Payment date is incorrect

Requested Execution Date or Requested Collection Date is too far in the past

3541

Payment cannot be refunded at this time, please try again

Error may appear when refund was initiated before the funds had been credited to the account. Please check that the payment has been received in your account and initiate the refund only after the funds are available.

3542

Payment is not refundable, please contact your bank

3999

Unexpected error / Unknown Processor Response Code

Fallback for any unmapped or unknown SEB error code.

Merchant Portal

When viewing a payment in the Merchant Portal, the Transactions section now displays the corresponding error code and error message for any failed Refund transaction.

This allows you to quickly identify why a refund could not be processed.

API

The GET /v4/payments/{payment_reference} response has been enhanced with additional refund information.

Renamed field: last_refund_transaction

The last_refund field has been renamed to last_refund_transaction.

This object contains the details of the most recent refund attempt, including any error information if the refund failed.

"last_refund_transaction": {
"status": "failed",
"amount": 0.01,
"timestamp": "2026-04-21T08:49:20Z",
"errors": {
"code": 3541,
"message": "Payment cannot be refunded at this time, please try again",
"endpoint": "/v1/refunds"
}
}

New field: refund_transactions

A new refund_transactions array has been added.

This array contains every Open Banking refund attempt associated with the payment, providing a complete history of refund transactions and their outcomes.

"refund_transactions": [
{
"status": "failed",
"amount": 0.01,
"timestamp": "2026-04-19T08:11:00Z",
"errors": {
"code": 3508,
"message": "There is not enough available funds",
"endpoint": "/v1/refunds"
}
},
{
"status": "failed",
"amount": 0.01,
"timestamp": "2026-04-21T08:49:20Z",
"errors": {
"code": 3501,
"message": "Payment rejected by bank",
"endpoint": "/v1/refunds"
}
}
]

Required action

This section applies only if you integrate directly with the API. If you only use the Merchant Portal, no action is needed.

If your integration currently uses the last_refund field, update it to use the renamed last_refund_transaction field.

To access the complete history of refund attempts for a payment, we also recommend using the new refund_transactions array.

Did this answer your question?