Decline code

Generic Decline

`generic_decline` means the card issuer declined the charge without giving Stripe a specific reason. Stripe's own definition is blunt: the card was declined for an unknown reason, or Stripe's own Radar or Adaptive Acceptance systems blocked the payment before it reached the network. Either way, there is no diagnostic detail attached to the code itself. It is a soft decline, not a signal that the card is closed, stolen, or invalid. Banks use `generic_decline` as a catch-all for a range of temporary situations: a fraud flag that clears within hours, a spending limit the customer bumped against, a bank system hiccup, or a short hold placed on the account. None of these describe a permanent problem with the card.

Back to decline codes
generic_declineRetries automatically
Draft content: this page's explanatory copy is Pass 3 template writing pending a dedicated content pass. The classification badge above and the recovery behavior described below are live, not draft: both come directly from the recovery engine.

Why it happens

Recurring charges hit `generic_decline` more often than one-time purchases for a few reasons. Bank fraud systems apply stricter automated scrutiny to charges that look like recurring billing, and a charge firing at 2am during a batch billing run reads differently to that system than a charge a customer initiates themselves at checkout. Card velocity limits can also contribute: if a customer has been charged several times in a short window across different merchants, the next charge is more likely to get flagged. On top of that, Stripe Radar rules configured by the merchant can themselves produce a `generic_decline` when a transaction matches a risk pattern, even when the bank would have approved it.

How to fix it

Yes, but not immediately. Retrying the instant a `generic_decline` comes back rarely works, because the condition that caused the decline (a fraud hold, a limit, a system issue) is usually still present a few seconds or minutes later. Waiting gives those temporary conditions time to clear. Card networks also enforce hard caps on retry volume: Mastercard allows up to 35 retry attempts per card within 30 days, and Visa allows up to 15. Exceeding either threshold triggers network penalty fees, so retry timing and count both matter, not just persistence. Space retries out over hours or days rather than firing them back to back. Track how many attempts have been made against network limits. If retries are exhausted without success, move to a direct, low-friction message to the customer asking them to update or confirm their payment method, rather than a generic "payment failed" notice that gives them no path forward.

How Foxhound recovers it

A Foxhound-scheduled silent retry runs first, timed for the specific decline pattern rather than an immediate repeat. If the retry succeeds, the customer never sees anything happened. If it does not, Foxhound moves to a dunning email sequence across the following weeks, written in the merchant's own brand voice, with a hosted card-update link on every email as a passive fallback channel.

Questions

  • No. It means the issuer declined one charge without stating why. The card itself may work fine on the next attempt or on a different merchant charge.

  • It rarely helps. Banks typically will not disclose the specific reason behind a `generic_decline`, since the code exists precisely because they chose not to share detail with Stripe.

  • Recurring charges get more automated scrutiny from bank fraud systems, and batch billing runs (often overnight) can look unusual compared to a customer-initiated purchase.

  • Network rules cap it at 35 attempts per card in 30 days for Mastercard and 15 for Visa. Going over either limit brings penalty fees, so retry pacing matters as much as retry count.

  • Not under Foxhound's handling. Retries run silently in the background first. A customer only hears from the merchant if the full retry schedule runs out without recovering the charge.

See what this looks like on your account

The free audit shows what Stripe already recovered and what is still dying, no signup required.

Run your free audit