The Payment Protocol uses the following HTTP-codes of errors for API requests:
Error Code | Meaning |
---|---|
400 | Bad Request — Client request is invalid (error in request' data or format). |
401 | Unauthorized — Client API access key is wrong. |
403 | Forbidden — Access to API is forbidden. |
404 | Not Found — The specified resource could not be found. |
405 | Method Not Allowed — You tried to create a payment with an invalid method. |
406 | Not Acceptable — Client request' data format isn't JSON. |
410 | Gone — The resource requested has been removed from our servers. |
429 | Too Many Requests — You are sending requests too frequently. |
500 | Internal Server Error — We had a problem with our server. Try again later. If response body is empty, repeat the request with the same parameters. If the body is non-empty, make payment status request/invoice status request. |
502 | Bad Gateway — No connection to service |
503 | Service Unavailable — We're temporarily offline for maintenance. Please try again later. |
Operation type is returned in {operation}.type
field of the notification.
Operation type | Description |
---|---|
PAYMENT | The payment. There can be field flag: [ "SALE" ] (one-step payment) or flag: [ "AUTH" ] (two-step payment with holding funds) in the notification. |
CAPTURE | Operation of the payment confirmation. |
REFUND | Operation of the refund. There can be field flag: [ "REVERSAL" ] in the notification. It means that there was no financial operation (charging from customer's account) and commission fee would not be hold. |
Operation status reflects its current state.
API returns synchronous status of the operation in the field status.value
of the response.
Status in notifications is in the field {operation}.status.value
.
In the following table all possible statuses and corresponding operation types, where each status is used.
Operation status | Operation type | Status description |
---|---|---|
PAYMENT | WAITING | Awaiting for 3DS authentication |
PAYMENT | DECLINED | Request for authorization is rejected (in synchronous responses) |
PAYMENT | DECLINE | Request for authorization is rejected (in asynchronous responses) |
REFUND | DECLINE | Request for refund is rejected |
CAPTURE | DECLINE | Request for payment confirmation is rejected |
CAPTURE | DECLINED | Request for payment confirmation is rejected (in API response to the status request) |
PAYMENT | COMPLETED | Request for authorization is successfully processed |
REFUND | COMPLETED | Request for refund is successfully processed |
CAPTURE | COMPLETED | Request for payment confirmation is successfully processed |
CREATED
.
Status in notifications is in the field {operation}.status.value
.
In the following table all possible statuses and corresponding operation types, where each status is used.
Operation type | Operation status | Status description |
---|---|---|
PAYMENT | DECLINE | Request for authorization is rejected |
REFUND | DECLINE | Request for refund is rejected |
CAPTURE | DECLINE | Request for payment confirmation is rejected |
PAYMENT | SUCCESS | Request for authorization is successfully processed |
REFUND | SUCCESS | Request for refund is successfully processed |
CAPTURE | SUCCESS | Request for payment confirmation is successfully processed |
API errors describe a reason for rejection of the operation. API errors are present:
- in API responses — field
status.reason
; - in notifications — field
status.reasonCode
.
Some API errors are accompanied by details with recommended troubleshooting in the status.psErrorCode
field.
API error | Description |
---|---|
INVALID_STATE | Incorrect transaction status |
INVALID_AMOUNT | Incorrect payment amount |
INVALID_RECEIVER_DATA | Error on transmitting receiver data |
DECLINED_BY_MPI | Rejected by MPI |
DECLINED_BY_FRAUD | Rejected by fraud monitoring |
REATTEMPT_NOT_PERMITTED | Re-attempting authorization request is forbidden due to a Payment system rules |
REATTEMPT_NOT_PERMITTED_BY_PS | Operation rejected by Payment system. Error details with recommended troubleshooting are in the status.psErrorCode field. Re-attempting the operation is not possible for the card |
GATEWAY_INTEGRATION_ERROR | Acquirer integration error |
GATEWAY_TECHNICAL_ERROR | Technical error on acquirer side |
ACQUIRING_MPI_TECH_ERROR | Technical error on 3DS authentication |
ACQUIRING_GATEWAY_TECH_ERROR | Technical error |
ACQUIRING_ACQUIRER_ERROR | Technical error |
ACQUIRING_AUTH_TECHNICAL_ERROR | Error on funds authorization |
ACQUIRING_ISSUER_NOT_AVAILABLE | Issuer error. Issuer is not available at the moment |
ACQUIRING_SUSPECTED_FRAUD | Issuer error. Fraud suspicion |
ACQUIRING_LIMIT_EXCEEDED | Issuer error. Some limit exceeded |
ACQUIRING_NOT_PERMITTED | Issuer error. Operation not allowed |
ACQUIRING_INCORRECT_CVV | Issuer error. Incorrect CVV |
ACQUIRING_EXPIRED_CARD | Issuer error. Incorrect card expiration date |
ACQUIRING_INVALID_CARD | Issuer error. Verify card data |
ACQUIRING_INSUFFICIENT_FUNDS | Issuer error. Not enough funds |
ACQUIRING_UNKNOWN | Unknown error |
BILL_ALREADY_PAID | Invoice is already paid |
PAYIN_PROCESSING_ERROR | Payment processing error |
PAYMENT_EXPIRED_3DS | 3-D Secure authentication not passed |
TRY_AGAIN_LATER | Repeat the request later |
Error detail code with recommended action from a Payment system is returned in the status.psErrorCode
field of the response.
Code | Corresponding API error | Error details and recommended troubleshooting |
---|---|---|
03 | REATTEMPT_NOT_PERMITTED_BY_PS | Operation with this MCC forbidden by the card issuer |
04 | REATTEMPT_NOT_PERMITTED_BY_PS | Card blocked |
05 | ACQUIRING_NOT_PERMITTED | The transaction was rejected due to other reasons |
12 | REATTEMPT_NOT_PERMITTED_BY_PS | Operation of that type forbidden by Rules and Standards of a Payment system |
13 | ACQUIRING_NOT_PERMITTED | Incorrect amount. Repeat the operation with a different amount |
14 | ACQUIRING_NOT_PERMITTED | Incorrect card number. Enter correct number or use another card |
15 | REATTEMPT_NOT_PERMITTED_BY_PS | There is no issuer for the card |
30 | ACQUIRING_NOT_PERMITTED | Operation rejected. Contact QIWI support to get additional information |
33 | REATTEMPT_NOT_PERMITTED_BY_PS | Card is not available for use |
41 | REATTEMPT_NOT_PERMITTED_BY_PS | Card is not available for use |
43 | REATTEMPT_NOT_PERMITTED_BY_PS | Card is not available for use |
51 | ACQUIRING_INSUFFICIENT_FUNDS | The Client might be recommended to repeat the operation after account replenishment |
54 | ACQUIRING_EXPIRED_CARD | The expiration date of the card is missing or transmitted incorrectly |
57 | REATTEMPT_NOT_PERMITTED_BY_PS | This type of operation is not available for the card |
58 | REATTEMPT_NOT_PERMITTED_BY_PS | This type of operation is not available for the acquirer |
61 | ACQUIRING_LIMIT_EXCEEDED | The Client may be recommended to try the transaction again on another day — after the Issuer resets the limit on the total amount of transactions of this type |
62 | REATTEMPT_NOT_PERMITTED_BY_PS | The transaction is not available due to restrictions on the card or account of the Cardholder |
63 | ACQUIRING_NOT_PERMITTED | The transaction was rejected, contact Qiwi support for more information |
65 | ACQUIRING_LIMIT_EXCEEDED | The Client may be recommended to retry the transaction on another day — after the Issuer resets the limit on the total number of transactions of this type |
75 | ACQUIRING_INCORRECT_CVV | The transaction was rejected due to incorrect PIN code entered earlier |
76 | REATTEMPT_NOT_PERMITTED_BY_PS | Rejecting the cancellation of a request due to the absence of the original request |
78 | REATTEMPT_NOT_PERMITTED_BY_PS | Denying a request due to an attempt to use an inactive card |
86 | ACQUIRING_INCORRECT_CVV | The transaction was rejected due to incorrect PIN code entered earlier |
88 | ACQUIRING_AUTH_TECHNICAL_ERROR | The transaction was rejected due to cryptography error, can occur due to incorrect CVV2/CVC2 |
91 | ACQUIRING_ISSUER_NOT_AVAILABLE | The Client may be advised to retry the transaction at another time – after the Issuer recovers the functioning |
92 | REATTEMPT_NOT_PERMITTED_BY_PS | Rejection by the Payment System due to the impossibility of carrying out the transaction |
93 | REATTEMPT_NOT_PERMITTED_BY_PS | Denial of a request due to violation of legal requirements |
94 | REATTEMPT_NOT_PERMITTED_BY_PS | Rejecting a duplicate request |
96 | ACQUIRING_NOT_PERMITTED | The Client may be advised to retry the transaction at another time – after the Issuer ot the Platform recovers the functioning |
TS | REATTEMPT_NOT_PERMITTED_BY_PS | Rejection of the request due to cancellation of the Cardholder's long-term order |
CB | ACQUIRING_ACQUIRER_ERROR | The transaction was rejected due to incorrect date of birth of the Cardholder |
CD | REATTEMPT_NOT_PERMITTED_BY_PS | The transaction was rejected due to death of the Cardholder |
There are two groups of error codes:
- Group 1:
03
,04
,12
,15
,33
,41
,43
,57
,58
,62
,76
,78
,92
,93
,94
,CD
,TS
,05
. - Group 2:
13
,14
,30
,54
,51
,61
,63
,65
,75
,86
,88
,91
,96
,CB
.
According to the NSPC rules, the following conditions for repeating transactions with non-3DS authorization on MIR cards are applied
- After a response from group 1, no more transactions can be performed during the day.
- After the response from group 2, another attempt to perform transactions is allowed during the day.
Restrictions apply to the final recipient, if we have received the corresponding response codes.