Skip to content

Error Codes ​

Every error response from the gateway has the same shape:

json
{
  "result": null,
  "error": {
    "code": "insufficient_funds",
    "message": "There are insufficient funds on the card."
  }
}
  • error.code — a stable, lowercase machine-readable identifier. Check this in your code.
  • error.message — a human-readable description (English). For display only; do not parse it.
  • Some errors include an optional error.data object with extra context (e.g. a field name or a blocked_until timestamp).

Important change

The gateway no longer returns raw processing-center codes or text (e.g. UzCard/Humo/Paynet numeric codes or provider messages). The same situation from different providers now maps to one unified error.code with a clear English message. If your integration previously matched on processing_error plus a raw code/text in message/data, switch to matching the specific error.code below.

Card errors ​

CodeMessageWhen it happens
card_not_foundThe card was not found.The card id/token does not exist or does not belong to the merchant.
card_expiredThe card has expired.The card's expiry date has passed (provider decline).
card_is_blockedThe card is blocked.The card is blocked by the issuer.
card_is_blocked_in_processing_centerThe card is temporarily blocked. Please try again later.The processing center temporarily blocked the card.
card_temporarily_blockedThe card is temporarily blocked. Please try again later.Blocked by anti-fraud (e.g. too many attempts). data.blocked_until, data.reason.
card_not_activeThe card is not active.The card is not active in the processing center or SMS is off. data: is_active, status_message, sms_info.
card_is_not_supportedThis card is not supported.The card type/vendor is not supported for this operation.
card_is_already_activatedThe card is already active.Attempt to (re)activate an already active card.
card_existsThe card is already added.The card is already registered for this user.
invalid_cardThe card is invalid.The card data is invalid.
invalid_card_tokenThe card token is invalid.The supplied card token is invalid.
pan_not_validThe card number is invalid.The PAN failed validation.
lost_cardThe card has been reported lost.Provider decline: card reported lost.
stolen_cardThe card has been reported stolen.Provider decline: card reported stolen.
card_capturedThe card cannot be used. Please contact your bank.Provider decline: pick-up card.
restricted_cardOperations on this card are restricted.Provider decline: restricted card.

Funds, limits and amount ​

CodeMessageWhen it happens
insufficient_fundsThere are insufficient funds on the card.Not enough money on the card.
insufficient_depositThere is not enough deposit to complete the operation.Merchant deposit / terminal deposit too low (A2C, service payment).
invalid_amountThe amount is invalid.Amount out of allowed range or malformed.
limit_exceededThe card limit has been exceeded.Card/terminal limit exceeded (provider decline).
daily_limit_used_for_this_cardThe daily limit for this card has been reached.Daily card limit reached.

Transaction decline / processing ​

CodeMessageWhen it happens
do_not_honorThe transaction was declined by the card issuer.Generic issuer decline (do not honor).
call_issuerThe transaction was declined. Please contact your bank.Issuer asks the cardholder to contact the bank.
transaction_not_permittedThis transaction is not permitted for the card.Operation not allowed for this card.
duplicate_transactionA duplicate transaction was detected.The provider detected a duplicate.
issuer_unavailableThe card issuer is temporarily unavailable. Please try again later.Issuer/host temporarily unavailable.
invalid_merchantThe merchant configuration is invalid.Merchant/terminal configuration problem.
processing_errorThe payment could not be processed. Please try again.Generic processing failure that does not map to a specific code.
transaction_not_foundThe transaction was not found.No transaction with the given id/externalId.
transaction_not_available_for_paymenttransaction_not_available_for_paymentThe transaction is not in a payable state.
transaction_not_available_for_canceltransaction_not_available_for_cancelThe transaction cannot be cancelled.
error_at_payerror_at_payPayment confirmation failed (generic wrapper).

Confirmation code (OTP) and PIN ​

CodeMessageWhen it happens
invalid_otpThe confirmation code is incorrect.Wrong OTP code.
otp_expiredThe confirmation code has expired.OTP window elapsed.
try_new_otpPlease request a new confirmation code.OTP verification failed; request a new one.
otp_code_already_sentA confirmation code has already been sent. Please wait before requesting a new one.An OTP was already sent recently.
incorrect_pinThe PIN is incorrect.Wrong PIN (provider decline).
pin_attempts_exceededThe number of PIN attempts has been exceeded.Too many wrong PIN attempts.
too_many_attemptsToo many attempts. Please try again later.Rate/attempt guard triggered.

Card phone / SMS ​

CodeMessageWhen it happens
sms_not_activeSMS notification is not active for this card.The card has no active SMS/OTP capability.
phone_not_matchThe phone number does not match the card.Supplied phone does not match the card's phone.
card_phone_not_linkedNo phone number is linked to this card.No phone linked to the card.
card_has_no_phoneNo phone number is registered for this card.The card has no registered phone.

MyID / PINFL (identity verification) ​

Applies when the merchant has is_myid_required and/or is_pinfl_required enabled (e.g. A2C).

CodeHTTPWhen it happens
official_profile_required403MyID is required but the user has no official profile. Create it via /userCard/createOfficialProfile/.
merchant_user_myid_not_verified400The merchant user does not exist / MyID not verified.
pinfl_check_required403PINFL is required but has not been verified for this card.
pinfl_not_match403The verified PINFL does not match the official profile / the card.

Service payment (Paynet / HGT / uzsuv / Hamkorbank / …) ​

Provider-specific numeric codes and provider text are not returned. They are unified below.

CodeMessageWhen it happens
service_payment_errorThe payment could not be completed. Please try again.Generic service-payment failure.
account_not_foundThe account was not found.Subscriber / account not found at the provider.
provider_unavailableThe service provider is temporarily unavailable. Please try again later.Provider unreachable / overloaded / declined.
service_under_maintenanceThe service is under maintenance. Please try again later.Provider maintenance.
payment_cancel_not_allowedThis payment cannot be cancelled.Cancellation not allowed / window expired at the provider.
service_not_foundThe service was not found.Service/product not found.
service_not_availableThe service is temporarily unavailable. Please try again later.Service temporarily unavailable.
service_temporarily_not_accepting_paymentsservice_temporarily_not_accepting_paymentsThe service is not accepting payments right now.
pinfl_check_requiredsee aboveSome services require a verified PINFL before paying.

OFD / fiscalization ​

CodeMessageWhen it happens
ofd_commitent_or_subcommission_not_activeofd_commitent_or_subcommission_not_activeThe commitent (TIN) or sub-commission (PINFL) on a receipt item has no active contract in the OFD catalogue. data: itemIndex, tin, pinfl.
ofd_check_already_generatedofd_check_already_generatedA fiscal receipt was already generated for this transaction.
ofd_too_many_requests_for_this_receiptofd_too_many_requests_for_this_receiptToo many receipt requests for this transaction.
ofd_check_not_foundofd_check_not_foundThe fiscal receipt was not found.

Authorization, validation and generic ​

CodeHTTPWhen it happens
permission_denied401 / 400Missing/invalid credentials, or the merchant lacks permission for this API (e.g. A2C, A2C-by-PAN, split, fiscalization).
ip_not_allowed403The caller IP is not in the merchant/key allowlist.
validation_error400The request body/params are invalid. data may contain per-field details.
field_required400A required field is missing. data.field.
field_not_valid400A field value is invalid. data.field.
not_found404The requested resource was not found.
bank_not_found400The bank was not found.
terminal_does_not_exist400No terminal is available for the operation.
hold_not_found400The hold was not found.
gateway_not_working400The merchant is not active / not configured for this gateway.
rate_limit_exceeded429Too many requests.
payload_too_large413The request body exceeds the size limit (64 KB).
server_error500An unexpected server error.
unknown_error400An unexpected error occurred. Please try again.

INFO

This list covers the codes you are most likely to encounter. New codes may be added over time, so always handle an unknown error.code gracefully (treat it as a generic failure).