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.