Reference

Card decline codes explained: what each one means and what to do

When a card payment fails, the issuing bank returns a decline code. The code decides the right next step: retry later, ask the customer to act, or stop retrying altogether. Retrying the wrong codes wastes attempts and can cost you network fees; not retrying the right ones leaves money on the table.

Soft vs hard declines

Soft declines are temporary: the card is fine but the payment could not go through right now (low balance, issuer outage, velocity limit). They often succeed on a later retry. Hard declines mean the card itself cannot be charged (lost, stolen, closed, invalid number). Retrying them will not work and card networks restrict repeated attempts, so the only fix is a new payment method from the customer.

Soft declines: retry later

Temporary problems with the bank or the account. A well-timed retry often succeeds without the customer doing anything.

CodeMeaningRetry?
insufficient_fundsInsufficient fundsYes, after a few days
card_velocity_exceededCard velocity exceededYes, after the limit resets
withdrawal_count_limit_exceededWithdrawal count limit exceededYes, after a few days
processing_errorProcessing errorYes, soon
issuer_not_availableIssuer not availableYes, soon
reenter_transactionRe-enter transactionYes
try_again_laterTry again laterYes, later
approve_with_idApprove with IDOnce, then contact the customer
duplicate_transactionDuplicate transactionCheck first

Needs the customer: contact the bank or confirm details

The issuer refused for a reason only the cardholder can clear up. Retries rarely help until the customer acts, so reach them quickly.

CodeMeaningRetry?
do_not_honorDo not honorRarely helps on its own
generic_declineGeneric declineOnce or twice, spaced out
card_declinedCard declinedDepends on the decline_code
currency_not_supportedCurrency not supportedNo
authentication_requiredAuthentication requiredNot without the customer
call_issuerCall issuerNot until the customer calls
transaction_not_allowedTransaction not allowedNo
not_permittedNot permittedNo
service_not_allowedService not allowedNo
incorrect_cvcIncorrect CVCOnly with the correct CVC
incorrect_numberIncorrect card numberOnly with the correct number
incorrect_zipIncorrect postal codeOnly with the correct postal code
invalid_cvcInvalid CVCOnly with the correct CVC
invalid_numberInvalid card numberOnly with a valid number
invalid_expiry_monthInvalid expiry monthOnly with the correct date
invalid_expiry_yearInvalid expiry yearOnly with the correct date
invalid_amountInvalid amountOnly after checking

Hard declines: get a new payment method

The card can never be charged again. Stop retrying and ask the customer for a different card.

CodeMeaningRetry?
expired_cardExpired cardNo
lost_cardLost cardNo
stolen_cardStolen cardNo
fraudulentSuspected fraudNo
pickup_cardPick up cardNo
restricted_cardRestricted cardNo
card_not_supportedCard not supportedNo
stop_payment_orderStop payment orderNo
revocation_of_authorizationRevocation of authorizationNo
revocation_of_all_authorizationsRevocation of all authorizationsNo
invalid_accountInvalid accountNo
new_account_information_availableNew account information availableNot the old card
merchant_blacklistMerchant block listNo

Recover failed payments on autopilot

Revnio retries failed payments at the right time and reaches customers by email and WhatsApp until the card is fixed. Works with Stripe, Chargebee and Paddle.

Related