Remote Host Authorization Error Codes

When your Remote Host Authorization (RHA) integration rejects a transaction, you must respond with one of the error codes listed below.

Each error code includes guidance on when to use it and whether the acquirer merchant is allowed to reattempt the transaction.

For the full Remote Host Authorization API specification, see Remote Host Authorization.

Error Codes

The table below can be scrolled horizontally.

Error CodeDescriptionUse WhenUsage LimitationMerchant Reattempt Allowed (Visa)
CARD0000- Internal Server ErrorClient's remote host server faces an internal or unknown error. Unable to process transaction.Internal/unknown errors, software/code exceptions, server failures.N/AYes
CARD0001 - Insufficient BalanceCardholder does not have enough balance to complete the transaction.

On CARD0001 reject, please prompt the cardholder to top-up their balance.
Balance check fails, insufficient funds.N/AYes
CARD0002 - Duplicate Transaction IDThe transaction reference ID has already been used.Duplicate authorization request detected.N/AYes
CARD0003 - Transaction Not FoundThe referenced original transaction cannot be found.Reversal/completion references a non-existent transaction.N/AYes
CARD0004 - Card Not FoundThe card/account is already closed or does not exist in the remote host system.Card already closed, lookup failed, account not registered.N/ANo
CARD0005 - UnauthorizedThe request is not authorized (authentication failure).Invalid API key, expired token, permission denied.N/AYes
CARD0006 - Card RestrictionThe card is restricted due to country/region-related policies.Transaction attempted from a restricted country, OFAC/sanctions block.N/AYes
CARD0007 - Suspected FraudThe transaction failed one or more fraud rules in the client's fraud detection system.Velocity checks, fraud scoring, suspicious pattern detected.N/AYes
CARD0008 - Violation of LawThe transaction is rejected due to regulatory or legal restrictions.Gambling restrictions, cryptocurrency restrictions, regulatory compliance blocks.N/AYes
CARD0009 - Transaction Not Supported / Blocked by IssuerThe issuer has blocked this transaction due to restrictions on issuer or card product-level.

Must not be used for blocks on a single card. Cardholder cannot
change/exempt themselves from this restriction.
Transaction type not supported (e.g., Cash withdrawal disabled, magnetic stripe disabled), issuer policy blocks.N/AYes
CARD0010 - Blocked by CardholderCardholder has imposed certain restrictions on their card and can undo it themselves.Cardholder-configured restrictions (e.g., online transactions disabled, one or more acquirer currencies blocked).N/AYes
CARD0011 - Card LostCard has been reported lost. Cardholder cannot undo this.Card reported lost, requires replacement card.N/ANo
CARD0012 - Card StolenCard has been reported stolen. Cardholder cannot undo this.Card reported stolen, requires replacement card.N/ANo
CARD0013 - Card SuspendedCard is suspended/frozen. Cardholder can reactivate it themselves.Temporary card freeze via app or customer service (cardholder-initiated).N/AYes
CARD0014 - Invalid MerchantThe acquirer merchant or MCC is not valid or not allowed for this card under client/card product.

Used for blocks by both issuer policy and cardholder
preference.
Acquirer merchant or MCC is blocked due to issuer policy or cardholder preference.N/AYes
CARD0015 - Cash Withdrawal Amount ExceededThe cash withdrawal amount exceeds the allowed limit.Cash withdrawal amount exceeds single transaction or daily limit.Only use for cash withdrawals (transaction_type == "deduction" && metadata.processing_code.StartsWith("01"))Yes
CARD0016 - Cash Withdrawal Velocity ExceededThe cash withdrawal frequency exceeds the allowed limit.Too many cash withdrawals within a time period.Only use for cash withdrawals (transaction_type == "deduction" && metadata.processing_code.StartsWith("01"))Yes
CARD0017 - Stop This PaymentThe acquirer merchant will be instructed to stop this specific recurring payment (by cardholder preference or on behalf of them).Repeat insufficient balance for recurring payment, stop future attempts (by cardholder preference or on behalf of them).

To stop recurring payments from certain
merchants/MCCs or to stop ALL recurring payments for one or more cards, please reach out to us for assistance.
Only use for recurring payments (metadata.electronic_commerce_indicator == "02").No

FAQ

What should I return if my error doesn't fit any code above?

Use CARD0000 for internal or unknown errors. For known rejections related to your internal policies that don't fit into any other available error code, use CARD0009 for issuer/product-level blocks, or CARD0010 if the block applies to a single card and/or was configured by the cardholder themselves (i.e., the cardholder can undo it anytime).

What does "Merchant Reattempt Allowed" mean?

It indicates whether the acquirer merchant is permitted to reattempt recurring transaction in the future (e.g., tomorrow, the day after). If "No", the acquirer merchant will be prompted to stop re-attempting the recurring transaction.

What's the difference between CARD0009 and CARD0010 error code?
  • CARD0009 is for issuer/product-level policy blocks that the cardholder cannot override.
  • CARD0010 is for issuer or cardholder-initiated blocks that cardholder can opt-out or unblock themselves from.
What's the difference between CARD0011, CARD0012, and CARD0013 error codes?
  • CARD0011 (lost) and CARD0012 (stolen) are permanent. The card must be replaced.
  • CARD0013 (suspended) is temporary, and the cardholder can reactivate it themselves.