Error codes of the Payment service
Error messages format
The payment service returns both its own errors and bank errors.
The format of the response with the error is the same and includes the errorCode and errorMessage fields.
For example:
{
"errorCode": "8",
"errorMessage": "Card data is incorrect"
}To determine whether the error belongs to the Payment service or the bank, check the errorCode:
- Alphanumeric codes like AA-000 are for Payment service errors.
- Any other values are for bank errors. The Payment service transmits error codes from the bank's payment gateway to the Partner unchanged. The format of these values depends on the specific bank.
errorCode=0 indicates that the operation was carried out without technical errors or failures both in the Payment service and in the bank. However, this does not guarantee that the operation in the bank was completed successfully.
In many cases, the bank's processing center returns its own operation execution code. This code is included in the Payment service response as the actionCode parameter. It may indicate that the requested operation was not executed by the bank's processing, even if errorCode=0.
The processing center's response codes (actionCode) are listed here.
Payment service Errors
The exact text of the error is not given, as it can be changed without prior notice. Use the error code for troubleshooting, as it is unique for each cause.
Letters in the code indicate the error type.
BD: stored credential errors
| HTTP code | Error code | Description | Possible reasons |
|---|---|---|---|
| 400 | BD-101 |
bindingId not found (in a stored credentials payment or deactivation request). |
|
| 200 | BD-102 | The stored credentials list in the response to the getBindings.do request may be incomplete because there were errors requesting stored credentials from at least one bank |
The stored credentials service is temporarily unavailable in one or several banks |
| 200 | BD-103 | The bankName and paymentSystem fields in the response to the getBindings.do request may be empty or incorrect because the corresponding service did not return card data. |
Card data service is temporarily unavailable |
| 200 | BD-104 | Both errors BD-102 and BD-103 occurred while collecting the list of stored credentials, i.e. the list of stored credentials may be incomplete and the fields may be incorrect | The stored credentials service is temporarily unavailable in one or more banks and the card data service is unavailable at the same time |
| 424 | BD-105 | Incorrect bindingId format. Please contact support |
The stored credential identifier does not indicate the bank affiliation |
| 424 | BD-120 | Unable to deactivate stored credential. Please contact support if the issue persists | When deactivating the stored credential in the bank, the bank did not return confirmation of the successful completion of the operation (timeout, failure, etc.) |
| 424 | BD-201 | SBP subscription with specified bindingId not found (when deactivate SPB subscription) |
|
MD: errors when retrieving order data
| HTTP code | Error code | Description | Possible reasons |
|---|---|---|---|
| 200 or 400 | MD-101 | Order not found in the Payment service. HTTP code 200 is returned in the response to the getOrderStatusExtended.do request, in other cases - 400 |
The request specifies an incorrect orderNumber or mdOrder for the order |
| 424 | MD-102 | Order not found in the bank. The Payment service knows the bank and the order ID in the bank, but when requesting information from the bank, the bank reports that such an order does not exist | Error in the Payment service's data about the order's location |
| 424 | MD-103 | Failed to retrieve order status from the bank |
|
| 400 | MD-105 | When performing an operation with an order (refund, cancellation), the order ID was not provided | The request does not specify either the orderNumber or the mdOrder for the order |
| 424 | MD-202 | The order already exists in the bank and was not created by the Payment service. Payment through the Payment service is not allowed. | The order was created directly in the bank bypassing the Payment service |
| 424 | MD-204 | Error retrieving order data from the Payment service gateway |
|
PM: payment errors
| HTTP code | Error code | Description | Possible reasons |
|---|---|---|---|
| 424 | PM-101 | Unable to determine the payment way (card, stored credentials, seToken, etc.) | Error in the Payment service |
| 400 | PM-102 | Payment is prohibited due to specific payment conditions (amount, card issuer, payment method etc.) | There is a rule in the routing table that denies payment with such parameters |
| 424 | PM-110 | Unable to lock the order before starting payment | Error interacting with the Payment service database |
| 424 | PM-111 | Unable to unlock the order after payment completion | Error interacting with the Payment service database |
| 424 | PM-112 | The order is locked by another operation | Attempt to perform an operation on the order while the order is locked by another operation |
| 424 | PM-121 | Payment to the bank (installment or recurrent) failed |
|
| 424 | PM-122 | Payment to the bank (instantPayment) failed |
|
| 424 | PM-131 | Failed to convert the order's original currency to the target currency for the selected bank |
|
RC: errors when interacting with external services
| HTTP code | Error code | Description | Possible reasons |
|---|---|---|---|
| 424 | RC-101 | The response from the external service contains an error in the response body, but without the error code of that service |
|
| 424 | RC-201 | Failed to send request to external service |
|
| 424 | RC-202 | Timeout when calling external service | No response to the request was received within the expected response time |
| 424 | RC-203 | Unexpected response from external service | The response body is not valid JSON |
| 424 | RC-211 | Failed to send request to the bank's payment gateway |
|
| 424 | RC-212 | Timeout when calling the bank's payment gateway | No response to the request was received within the expected response time |
| 424 | RC-213 | Unexpected response from the bank's payment gateway | The response body is not valid JSON |
| 424 | RC-221 | Failed to send request to the Payment service gateway |
|
| 424 | RC-222 | Timeout when calling the Payment service gateway | No response to the request was received within the expected response time |
| 424 | RC-223 | Unexpected response from the Payment service gateway | The response body is not valid JSON |
| 424 | RC-231 | Failed to send request to the bank's payment gateway |
|
| 424 | RC-232 | Timeout when calling the bank's payment gateway | No response to the request was received within the expected response time |
| 424 | RC-233 | Unexpected response from the bank's payment gateway | The response body is not valid JSON |
RO: routing errors
| HTTP code | Error code | Description | Possible reasons |
|---|---|---|---|
| 424 | RO-101 | Unable to route authentication request: all configured gateways are currently deactivated | The Payment service has temporarily deactivated all banks available to the Partner (due to network unavailability, exceeding the error threshold, etc.) |
| 400 | RO-201 | API-method you are calling assumes that order was already routed to a bank, but it is not | Trying to perform refund or reverse for an order that is not routed to any bank |
| 424 | RO-202 | Unable to place order in exclusive target bank |
|
RT: internal runtime errors
Errors with the RT-xxx code are internal system errors of the Payment service (caught exceptions). A complete list is not provided.
- Text of all RT-xxx errors: System error. Please contact support if the issue persists
- The cause of such errors is usually technical, such as incorrect configuration, missing configuration data, database errors, etc.
ST: configuration errors
| HTTP code | Error code | Description | Possible reasons |
|---|---|---|---|
| 424 | ST-101 | Error retrieving Payment service settings | Configuration error of the Payment service itself |
| 424 | ST-201 | Partner is not registered in the Payment service | Configuration error of the Partner in the Payment service |
| 424 | ST-203 | Necessary parameters are missing in the Partner's settings | Configuration error of the Partner in the Payment service |
| 424 | ST-212 | Necessary parameters are missing for the BNPL module | Configuration error of the Payment service itself |
| 424 | ST-301 | Error retrieving bank settings | Configuration error of the bank in the Payment service |
| 424 | ST-401 | Necessary parameters are missing in the Partner's settings | Configuration error of the Partner in the Payment service |
VP: Vendor Pays errors
| HTTP code | Error code | Description | Possible reasons |
|---|---|---|---|
| 424 | VP-201 | Unable to route order to T-pay capable bank | bank services are unavailable |
| 424 | VP-202 | Unable to receive QR-code from T-pay capable bank | bank services are unavailable |
| 424 | VP-203 | Unable to reject Tpay QR-code | bank services are unavailable |
| 424 | VP-211 | Unable to route order to Yandex bank | bank services are unavailable |
| 424 | VP-212 | Unable to receive payment link from Yandex bank | bank services are unavailable |
| 400 | VP-251 | QR code (for payment via the SBP) has not yet been registered | Attempt to call the status or cancel the SBP QR code before it has been registered |
| 424 | VP-301 | MirPay error - link was not received from the bank |
|
VR: incoming request validation errors
| HTTP code | Error code | Description | Possible reasons |
|---|---|---|---|
| 400 | VR-101 | Authentication error - invalid login or password | Invalid login or password |
| 400 | VR-102 | Invalid JSON in request body | Invalid JSON in request body |
| 400 | VR-110 | An order with this number has already been registered | Attempt to re-register an order with the same orderNumber |
| 400 | VR-201 | The registration specifies a payment method that is not supported by the Payment service | Incorrect specification of allowed payment methods |
| 400 | VR-202 | An initiating recurrent payment (with tii=RI) must have additional parameters recurringFrequency and recurringExpiry
|
Missing required request parameters |
| 400 | VR-203 | An initiating recurrent payment (with tii=RI) must have a non-empty clientId
|
Missing required request parameters |
| 400 | VR-204 | An initiating installment (with tii=II) must have additional parameters installments, recurringFrequency and recurringExpiry
|
Missing required request parameters |
| 400 | VR-205 | An initiating installment (with tii=II) must have a non-empty clientId
|
Missing required request parameters |
| 400 | VR-206 | Both recurringFrequency and recurringExpiry parameters are required in the request |
Missing required request parameters |
| 400 | VR-207 | An initiating recurrent payment or installment must have a non-empty clientId (for cases when tii was not explicitly passed) |
Missing required request parameters |
| 400 | VR-208 | When using the feature VERIFY, a clientId must be specified |
Missing required request parameters |
| 400 | VR-209 | {field name} is required | Missing required request parameters |
| 400 | VR-210 | Formal validation errors of request parameters |
|
| 400 | VR-211 | When using a merchant for binding cards, a clientId must be specified |
Missing required request parameters |
| 400 | VR-212 | When using the FORCE_CREATE_BINDING feature, a clientId must be specified |
Missing required request parameters |
| 400 | VR-215 | The request specifies a currency that is not available to the Partner in any bank |
|
| 400 | VR-221 | At the time of request execution, the order's lifetime has already expired; operations on the order are not allowed |
|
| 400 | VR-222 | The order was explicitly canceled; operations on the order are not allowed | Attempt to perform an operation on an order with status DECLINED
|
| 400 | VR-223 | The order has already been processed. Repeated payment requests for this order are not accepted | Attempt to pay for an already paid order again |
| 400 | VR-230 | Incorrect data in orderBundle.orderCreationDate
|
Bad datetime format or date is further than current date |
| 400 | VR-231 | Incorrect data in orderBundle.customerDetails
|
One or more fields in customerDetails is missing or malformed |
| 400 | VR-232 | Incorrect data in orderBundle.customerDetails.deliveryInfo
|
One or more fields in customerDetails.deliveryInfo is missing or malformed |
| 400 | VR-233 | Incorrect data in orderBundle.cartItems.items
|
One or more fields in orderBundle.cartItems.items is missing or malformed |
| 400 | VR-234 |
itemAmount shall be equal to itemPrice multiplied by quantity
|
itemAmount differs from itemPrice x quantity
|
| 400 | VR-235 | Order amount shall be equal to bundle amount | Calculated bundle amount differs from order amount |
| 400 | VR-236 | Incorrect data in orderBundle.cartItems.items.itemAttributes
|
One or more fields in orderBundle.cartItems.items.itemAttributes is missing or malformed |
| 400 | VR-242 |
clientId is required for order registration with bindingId
|
Required request parameters are missing |
| 400 | VR-244 | Either bindingId or defaultBindingId can be specified in the order registration, but not both of them |
Both bindingId and defaultBindingId were specified in the order registration request. Only one of those is allowed. |
| 400 | VR-245 | Incorrect binding type when pay an order | Trying to pay for a eCom order with recurrent or installment stored credential |
| 400 | VR-246 | Invalid binding type when paying for an order. This binding cannot be used for recurring payment | A non-recurring binding is used for recurring payment |
| 400 | VR-261 | Additional parameters back2app and app2app must not be used simultaneously |
Invalid value of passed parameters |
| 400 | VR-264 | Invalid value of additional parameter app.osType
|
Invalid value of passed parameters |
| 400 | VR-265 | Invalid value of additional parameter app.deepLink
|
Invalid value of passed parameters |
| 400 | VR-271 | Invalid value of additional parameter yandex_paymentWay
|
Invalid value of passed parameters |
| 400 | VR-275 | The target bank for payment is specified incorrectly |
|
| 400 | VR-306 | Order has been already processed | Trying to perform instantPayment.do again with the same orderNumber or calling instantPayment.do with previously registered orderNumber
|
| 400 | VR-307 | Order has been already processed | Trying to perform recurrentPayment.do again with the same orderNumber or calling recurrentPayment.do with previously registered orderNumber
|
| 424 | VR-330 | No active keys for SeToken decryption | Payment service configuration error |
| 400 | VR-331 | No key in the Payment service could decrypt the SeToken | The merchant is using an incorrect key |
| 400 | VR-332 ... VR-337 | Errors validating the contents of seToken. The reason is specified in the error text. | The token contents are invalid. |
| 400 | VR-351 | Request signature verification error. Empty request body | Request body is missing. |
| 400 | VR-352 | Signature verification error: empty X-Hash header | Request body hash missing |
| 400 | VR-353 | Signature verification error: incorrect X-Hash header | The request hash was generated incorrectly or passed in an invalid encoding. Pass the hash in base64 encoding. |
| 400 | VR-354 | Signature verification error: empty X-Signature header | Request signature missing |
| 400 | VR-355 | Signature verification error: incorrect signature | The request signature is generated incorrectly |
| 424 | VR-356 | No active keys for signature verification | Payment service configuration error |
| 400 | VR-357 | Request signature verification errors - signature not correctly encoded in base64 | The signature is encoded incorrectly |
| 400 | VR-990 | Generic error in the request (without specifying the reason) | The specific error has not yet received an individual code |