KashierDevelopersKashier Developers
Accept payments

Payment reason codes

Codes and messages returned on every payment outcome

Every payment outcome carries a transactionResponseCode and a bilingual transactionResponseMessage object ({ en, ar }). Both appear on webhook payloads, in order reconciliation responses, and in transaction responses — a declined authorisation still returns HTTP 200 with the reason in the code.

Branch on both status and transactionResponseCode. Matching is exact and case-sensitive: compare against the codes exactly as written here, including lowercase k_*. Blank Arabic cells mean no Arabic message is published for that code.

ISO numeric codes

Each numeric code is stored and returned individually. There are no range values — you will receive 47, never 46-50.

Authentication and 3DS codes

Returned by the 3D Secure and authentication step.

transactionResponseCodetransactionResponseMessage - entransactionResponseMessage - ar
AAUNSPECIFIED FAILUREفشل غير محدد
BBACQUIRER SYSTEM ERRORخطأ في نظام البنك
CCUNKNOWNغير معلوم
UAuthentication is not availableالمصادقة غير متوفرة
XAuthentication is not availableالمصادقة غير متوفرة
PAuthentication failed, please check your card info.المصادقة فشلت، خطأ في بيانات الكارت.
NAuthentication failedالمصادقة فشلت
SInvalid Signature on Authentication Responseتوقيع غير صالح في استجابة المصادقة
IMPI Processing ErrorMPI Processing Error
MAuthentication Attempted (No CAVV)Authentication Attempted (No CAVV)

Card enrolment and ACS outcomes can also arrive as a transactionResponseCode: CARD_ENROLLED, CARD_NOT_ENROLLED, ACS_ERROR, ACS_SUCCESS, ACS_FAILED, AUTHENTICATION_SUCCESSFUL, AUTHENTICATION_ATTEMPTED, AUTHENTICATION_FAILED, CARD_ENROLLEMENT_UNSPECIFIED, INVALID_CARD_NUMBER, REJECTED_CARD.

Gateway codes

When a card is processed through the MPGS gateway, the gateway result word becomes the transactionResponseCode verbatim. APPROVED and AUTHENTICATION_IN_PROGRESS are returned on the intermediate 3DS step of a card order, so expect them in reconciliation responses.

transactionResponseCodetransactionResponseMessage - entransactionResponseMessage - ar
gw_0Declined.
ABORTEDTransaction aborted by payer
ACQUIRER_SYSTEM_ERRORAcquirer system error occurred processing the transaction
APPROVEDApproved
APPROVED_AUTOThe transaction was automatically approved by the gateway …
APPROVED_PENDING_SETTLEMENTTransaction Approved - pending batch settlement
AUTHENTICATION_IN_PROGRESSAuthentication in progressالمصادقة قيد التقدم
BALANCE_AVAILABLEBalance / points-redemption hints
BALANCE_UNKNOWNBalance / points-redemption hints
BLOCKEDYour card is blocked, Kindly contact your issuer bank
CANCELLEDTransaction cancelled by payer
DECLINEDPayment was declined by issuer or payer authentication …
DECLINED_AVSAddress / CSC verification declines
DECLINED_AVS_CSCAddress / CSC verification declines
DECLINED_CSCAddress / CSC verification declines
DECLINED_DO_NOT_CONTACTTransaction declined - do not contact issuer
DECLINED_INVALID_PINPIN declines
DECLINED_PIN_REQUIREDPIN declines
DECLINED_PAYMENT_PLANTransaction declined due to payment plan
DEFERRED_TRANSACTION_RECEIVEDDeferred transaction received and awaiting processing
DUPLICATE_BATCHTransaction declined due to duplicate batch
EXCEEDED_RETRY_LIMITTransaction retry limit exceeded
EXPIRED_CARDTransaction declined due to expired card
INSUFFICIENT_FUNDSTransaction declined due to insufficient funds
INVALID_CSCInvalid card security code
LOCK_FAILUREOrder locked - another transaction is in progress for this order
NO_BALANCENo balance available on the card
NO_MATCHCVV Validation Error
NOT_ENROLLED_3D_SECUREAuthentication not supported.
NOT_SUPPORTEDTransaction type not supported, please refer to your bank.
PARTIALLY_APPROVEDPartially Approved transaction
PENDINGTransaction is pending
REFERREDTransaction declined - refer to issuer
SUBMITTEDTransaction submitted without a known response
SYSTEM_ERRORSystem error
TIMED_OUTTransaction timeout
UNKNOWNUnkown Result
UNSPECIFIED_FAILUREunspecified failure

Kashier codes

Kashier-internal outcomes covering tokenization, refunds, wallets, QR, and payouts. These keys are lowercase — an uppercase K_4 will not match.

transactionResponseCodetransactionResponseMessage - entransactionResponseMessage - ar
k_defaultA General Error Occured, please contact support.حدث خطأ عام ، يرجى الاتصال بالدعم.
k_0Invalid detoken parameter.رمز غير صالح
k_1Token not found.لم يتم العثور على الرمز
k_2Token expired after 10 minutes of inactivity.انتهت صلاحية الرمز بعد 10 دقائق من عدم النشاط.
k_3card security code does not exist.رمز أمان البطاقة غير موجود.
k_4Request to pay message send successfully.
k_5The Mobile number is not registered on any provider.
k_6Approved
k_7Order not paid
k_8Transaction refunded successfully
k_9Invalid refund body, please check your inputs
k_10Transaction already refunded
k_11QR code generated successfully
k_12Payment not completed, OTP page did not displayed to the user
k_13Transaction not found on provider
k_14Expired
k_15Self-transfer is not allowed
k_16Internal account credit failed
k_17Recipient credit not found
k_101Transaction In Progress
REFUND_DISABLEDThe bank has disabled refund operations for this merchant. Please contact your bank to enable refunds.

k_default is also the fallback message for any code Kashier does not recognise, so it can accompany a code that is not in these tables.

Two further codes reach you without a dictionary entry of their own, and both carry the k_default message: k_timeout, returned when the gateway sends no response, and k_risk, a retry-guard decline. Treat k_timeout as an unknown outcome and reconcile it against the order — never read it as a success or a failure.

Installment and OTP codes

Returned by the buy-now-pay-later and OTP flows, such as valU and Souhoola.

transactionResponseCodeMeaning
ERR_00Technical Failure, Please restart the process.
ERR_CST_01Not enrolled
ERR_CST_02No limit or inactive
ERR_CST_03Amount exceeds limit
ERR_CST_04Not eligible
ERR_DTA_01Invalid request
ERR_DTA_02OTP not found
ERR_DTA_03OTP expired
ERR_DTA_04Invalid OTP
ERR_DTA_05Already verified
ERR_DTA_06Max OTP attempts
ERR_DTA_07Invalid downpayment
ERR_DTA_08Invalid financed amount
ERR_DTA_09Wrong payment plan
ERR_ORD_01Order not found
ERR_ORD_02Duplicate order.
ERR_PRD_01Product not found
ERR_PRD_02Product Already refunded
ERR_VDR_01Vendor not found
ERR_VDR_02Store details not found
ERR_VDR_03Vendor not allowed to redeem discount

On this page