← Decline Codes
Hard Decline

Stripe Decline Code · Glossary

invalid_account

invalid_account fires when the issuing bank or card network cannot recognize or locate the account associated with the card being charged — the card number may be syntactically valid, but the account it references does not exist, has been closed, or is in a state the bank cannot service.

Non-recoverable·15–28%·Updated May 2026

What It Means

What invalid_account actually means.

invalid_account fires when the issuing bank or card network cannot recognize or locate the account associated with the card being charged — the card number may be syntactically valid, but the account it references does not exist, has been closed, or is in a state the bank cannot service. It is a hard, account-level decline that is structurally different from a temporary hold or a policy restriction: the bank's system has no valid, active account record to authorize against, making it one of the most definitive non-fraud hard declines in Stripe's taxonomy.

Not sure if this code is recoverable for your specific situation? Use the Stripe Failure Lookup →

Why It Happens

The root causes.

  • 1Card linked to a closed bank accountThe most common cause: the customer's underlying bank account has been closed — either by the customer or the bank — but the card credentials still exist in your stored payment methods; authorization attempts fail because there is no live account to debit
  • 2Card issued on a decommissioned or migrated accountThe issuing bank migrated, merged, or restructured accounts — the old card number no longer maps to a valid account in the bank's current system, even though the card is physically intact
  • 3Test or invalid card number entered in productionA card number was stored that passes basic Luhn algorithm validation but doesn't correspond to a real, active issuer account — common when test card numbers are accidentally submitted in production environments
  • 4Account number reassigned or invalidatedThe bank invalidated the account number associated with this card as part of a fraud response, compliance action, or account restructuring — the card number exists in records but the account behind it is no longer serviceable
  • 5Foreign or unrecognized card formatThe card was issued by a bank or network that your Stripe merchant configuration cannot route to — the account lookup fails at the network level because the issuer is unrecognized

What NOT to Do

Common mistakes that make it worse.

Never retry — this is a permanent account-level hard decline

There is no account to charge. Retrying the same card against a non-existent or closed account produces the same failure permanently — the bank has no record to authorize against and never will for this card. Zero retries, no exceptions.

Don't ask the customer to contact their bank to "authorize the charge"

Unlike call_issuer or do_not_honor, a bank call cannot resolve invalid_account — the account either doesn't exist or has been permanently closed. Routing customers through a bank call for an account that no longer exists creates frustration without any possibility of resolution.

Don't confuse it with incorrect_number or card_declined

incorrect_number is a data entry error — the card number was typed wrong. invalid_account means the card number is correctly formatted but the account behind it is genuinely non-existent or closed. The recovery path differs completely: incorrect_number asks for a card number correction; invalid_account requires an entirely new payment method.

Retry Timing

Optimal retry schedule.

Zero retries — permanent. The response is a new payment method capture sequence only.

Recovery Benchmark

What good looks like.

MetricResult
Overall recovery rate15–28%
Recovery for long-tenure customers30–40% — genuinely want to continue
Recovery for short-tenure or new accounts5–12% — higher abandonment rate
Recovery via alternate payment method offer+12–18% additional lift
Recovery with blind retries~0%
Recovery with generic card update email5–8%
Recovery with specific, neutral account-closure framing20–30% of those who engage

A 25%+ overall recovery rate is achievable when your email copy is specific and non-alarming — framing it as "the account linked to your card is no longer active" rather than "your payment failed" gives customers the context they need to understand what happened and what to do next. Pairing this with prominent alternate payment method options (PayPal, bank transfer, UPI) captures the segment that doesn't have a replacement card ready.

At Scale

How to handle it at scale.

Automated

  • Webhook trigger: invoice.payment_failed → check failure_code === 'invalid_account' → immediately route to permanent-hard-decline workflow — zero overlap with soft decline retry tracks
  • Absolute no-retry lock: Add invalid_account to your permanent no-retry blocklist alongside pickup_card, lost_card, stolen_card — no automation, no scheduler, no override
  • Email Day 0 — account closure framing: Neutral, clear, non-alarming — "The card on file is linked to a bank account that is no longer active. Please add a new card or payment method to continue your subscription." — direct one-click link to payment update page
  • Alternate methods prominently featured: PayPal, bank transfer, UPI, and ACH must be first-class options — not secondary footnotes — on your payment update page; customers with a recently closed bank account may not have a replacement card yet
  • Fraud review gate for new accounts: If invalid_account fires on a new customer's first or second billing cycle, cross-reference with fraud signals — invalid account numbers on brand-new signups can indicate use of synthetic or fraudulent card data; apply the same review gate as pickup_card for accounts under 60 days old

Manual Escalation

  • High-ACV long-tenure accounts: Personal CSM outreach within 2–4 hours — warm, direct message: "It looks like the bank account linked to your card may have been closed or changed. Happens to everyone — let's get you set up on a new payment method so you don't lose access."
  • Annual plan customers: Any invalid_account on an annual renewal warrants personal phone or email outreach on Day 1 — a customer who committed to a full year is worth the direct personal effort to retain before they passively churn
  • B2B accounts: Direct outreach to the billing contact offering ACH, wire, or Stripe Invoices as a permanent billing alternative — bank account closures in business contexts often come with a period of transition where invoice-based billing is the most practical bridge

FAQs

Frequently asked questions.

What does the Stripe invalid_account decline code mean?

invalid_account means the issuing bank cannot locate or recognize the account associated with the card being charged. The account may have been closed, decommissioned, migrated, or invalidated — the card number exists but there is no active account behind it for the bank to authorize against. It is a permanent hard decline with no retry path.

What are the most common causes of an invalid_account error in Stripe?

Common causes include the customer's bank account being closed while the card remains stored, account numbers invalidated after bank account migrations or mergers, test card numbers accidentally saved in production, accounts deactivated as part of a fraud response or compliance action, and cards issued on unrecognized foreign networks that cannot be routed by your merchant configuration.

Should I retry a payment after a Stripe invalid_account decline?

Never. There is no active account to charge — retrying the same card produces the same failure permanently. Add invalid_account to your permanent no-retry blocklist and focus all recovery effort on capturing a new payment method through a clear, fast, non-alarming customer outreach sequence.

How is invalid_account different from incorrect_number?

incorrect_number means the card number was entered incorrectly — a data entry error that is fixed by re-entering the correct number. invalid_account means the card number is correctly formatted but the account behind it genuinely does not exist or has been closed — a structural account-level issue that requires a completely new payment method, not a card number correction.

What is the recovery rate for Stripe invalid_account failures?

Overall recovery rates are 15–28%. Long-tenure customers whose bank account was recently closed recover at 30–40% with fast, account-closure-framed outreach. Short-tenure accounts recover at 5–12%. Alternate payment method offers add 12–18% additional lift. Recovery with generic card update emails is only 5–8% — specific account-closure framing significantly outperforms.

Before you retry

Most invalid_account failures are retried on the wrong schedule — which recovers the payment about 30% of the time. The other 70% leaves permanently. See what this code is actually costing at your MRR before deciding how to handle it.

See what invalid_account costs me →

Stop leaving revenue on the table

invalid_account can't be retried — but it can be caught earlier.

Recurflux handles code-specific retry scheduling, adaptive dunning, and dispute intelligence across all 30 Stripe decline codes. Connect in under 5 minutes.