Guide

Stripe decline codes explained (and how to recover each)

A Stripe decline code tells you why a card payment failed. They split into two groups: soft declines (temporary — like insufficient funds or a processing error) that are worth retrying, and hard declines (permanent — an expired, lost, or stolen card) where retrying the same card won't work and the customer has to update it. RetryFi reads the decline code on every failed invoice and routes each one automatically.

Common Stripe decline codes

CodeTypeWhat it meansWhat to do
insufficient_fundsSoftThe card has insufficient funds to cover the charge.Retry on a schedule — funds often appear within days (payday, deposits).
card_declinedSoftThe issuer declined the charge without a specific reason.Retry; if it keeps failing, ask the customer to contact their bank or update the card.
do_not_honorSoftA generic issuer decline — the bank won't authorize the charge right now.Retry on a schedule; persistent failures need the customer to update the card.
processing_errorSoftA temporary error occurred while processing the payment.Retry shortly — these usually clear on their own.
incorrect_cvcSoftThe CVC security code was wrong.Prompt the customer to re-enter their card details.
authentication_requiredSoftThe bank requires 3D Secure authentication (SCA).Send the customer to the hosted card-update / authentication page.
expired_cardHardThe card has passed its expiry date.Don't retry the same card — ask the customer to add a new one.
card_not_supportedHardThe card type isn't supported for this kind of purchase.Ask the customer for a different card.
lost_cardHardThe card was reported lost.Don't retry — request a new card immediately.
stolen_cardHardThe card was reported stolen.Don't retry — request a new card immediately.
pickup_cardHardThe issuer has flagged the card to be retained.Don't retry — the customer must use a different card.
fraudulentHardThe charge was flagged as likely fraud.Don't retry — request a new payment method.
card_velocity_exceededHardThe card exceeded its allowed transaction frequency/amount.Don't retry immediately — ask the customer to use another card.

How RetryFi recovers each type

Soft declines are retried automatically at 4 hours, 3 days, 4 days, then 7 days, while a branded dunning sequence runs in parallel (immediately, then on day 3, day 4, and day 5) so the customer is nudged to act.

Hard declines skip retries entirely — there's no point retrying an expired or stolen card — and go straight to the dunning emails asking the customer to update their card. RetryFi runs alongside Stripe Smart Retries, not instead of it.

See which declines are costing you

Connect Stripe (read-only) and RetryFi scans the last 90 days of failed invoices — broken down by decline reason. Free, no card required.

FAQ

A soft decline is temporary — insufficient funds, a processing error, a bank holding the charge. Retrying the same card later often succeeds. A hard decline is permanent — an expired, lost, stolen, or unsupported card — where retrying the same card will keep failing and the customer has to update their payment method.

Last updated: . Decline-code behavior follows Stripe's documentation; verify specific codes at stripe.com.