Problems
When performing operations against a resource in the Swedbank Pay API Platform, it will respond with a problem message that contain details of the error type if the request could not be successfully performed. Regardless of why the error occurred, the problem message will follow the same structure as specified in the Problem Details for HTTP APIs (RFC 7807) specification.
We generally use the problem message type
and status
code to identify the
nature of the problem. The problems
array contains objects with name
and
description
that will often help narrow down the specifics of the problem,
usually to the field in the request that was missing or contained invalid data.
The structure of a problem message will look like this:
Problem Example
1
2
3
4
5
6
7
8
9
10
11
{
"type": "https://api.payex.com/psp/errordetail/<resource>/inputerror",
"title": "There was an input error",
"detail": "Please correct the errors and retry the request",
"instance": "ec2a9b09-601a-42ae-8e33-a5737e1cf177",
"status": 400,
"problems": [{
"name": "CreditCardParameters.Issuer",
"description": "minimum one issuer must be enabled"
}]
}
Field | Type | Description |
---|---|---|
type |
string |
The URL that identifies the error type. This is the only field usable for programmatic identification of the type of error! When dereferenced, it might lead you to a human readable description of the error and how it can be recovered from. |
title |
string |
The title contains a human readable description of the error. |
detail |
string |
A detailed, human readable description of the error and how you can recover from it. |
instance |
string |
The identifier of the error instance. This might be of use to Swedbank Pay support personnel in order to find the exact error and the context it occurred in. |
status |
integer |
The HTTP status code that the problem was served with. |
action |
string |
The action indicates how the error can be recovered from. |
problems |
array |
The array of problem detail objects. |
name |
string |
The name of the field, header, object, entity or likewise that was erroneous. |
description |
string |
The human readable description of what was wrong with the field, header, object, entity or likewise identified by name . |
Common Problems
All common problem types will have a URL in the format
https://api.payex.com/psp/errordetail/<error-type>
. The URL is an
identifier that you can hard-code and implement logic around. It is currently
not not possible to dereference this URL, although that might be possible in the
future.
Type | Status | Description |
---|---|---|
inputerror |
400 |
The server cannot or will not process the request due to an apparent client error (e.g. malformed request syntax, size to large, invalid request). |
configurationerror |
403 |
A error relating to configuration issues. |
forbidden |
403 |
The request was valid, but the server is refusing the action. The necessary permissions to access the resource might be lacking. |
notfound |
404 |
The requested resource could not be found, but may be available in the future. Subsequent requests are permissible. |
systemerror |
500 |
A generic error message. |
Card Problems
There are a few problems specific to the creditcard
resource that you may want
to guard against in your integrations. All credit card problem types will have
the following URL structure:
https://api.payex.com/psp/errordetail/creditcard/<error-type>
Contractual Problem Types
Type | Status | Description |
---|---|---|
cardbranddisabled |
403 |
The card brand is disabled. |
accountholdertyperejected |
403 |
The account holder type is rejected. |
cardtyperejected |
403 |
The card type is rejected. |
3dsecurerequired |
403 |
The transaction was rejected by 3-D Secure. |
authenticationstatusrejected |
403 |
The authentication status was rejected. |
frauddetected |
403 |
The transaction was fraudulent. |
3dsecuredeclined |
403 |
3-D Secure declined the transaction. |
velocitycheck |
429 |
Indicates that the limit for how many times a card or different cards can be used for attempting a purchase has been reached. |
Acquirer and 3-D Secure Problem Types
Type | Status | Description |
---|---|---|
3dsecureerror |
400 |
3-D Secure is not working. Try again after some time. |
badrequest |
400 |
Bad request. Try again after some time. |
cardblacklisted |
400 |
The card is blacklisted. The payer needs to contact their card issuing bank. |
3dsecureusercancelled |
403 |
Transaction was cancelled during 3-D Secure verification. |
3dsecuredeclined |
403 |
Transaction was declined during 3-D Secure verification. |
acquirercardblacklisted |
403 |
The card is blacklisted. The payer needs to contact their card issuing bank. |
acquirercardexpired |
403 |
The expiry date is wrong, or the card has expired. The payer needs to contact their card issuing bank. |
acquirercardstolen |
403 |
The card is blacklisted. The payer needs to contact their card issuing bank. |
acquirererror |
403 |
The acquirer responded with a generic error. |
acquirerinsufficientfunds |
403 |
The card does not have sufficient funds. The payer needs to contact their card issuing bank. |
acquirerinvalidamount |
403 |
Amount not valid by acquirer. Contact teknisksupport@swedbankpay.com. |
acquirerpossiblefraud |
403 |
Transaction declined due to possible fraud. The payer needs to contact their card issuing bank. |
authenticationrequired |
403 |
Transaction declined due to missing 3-D Secure credentials. The payer needs to initiate a new transaction. |
carddeclined |
403 |
The card was declined. |
frauddetected |
403 |
Fraud detected. The payer needs to contact their card issuing bank. |
paymenttokenerror |
403 |
There was an error with the payment token. |
internalservererror |
500 |
Server error. Try again after some time. |
3dsecureacquirergatewayerror |
502 |
Problems reaching 3-D Secure verification. Try again after some time. |
acquirergatewayerror |
502 |
Problems reaching acquirers gateway. Try again after some time. |
badgateway |
502 |
Problems reaching the gateway. Try again after some time. |
acquirergatewaytimeout |
504 |
Problems reaching acquirers gateway. Try again after some time. |