Payments 3 min read

Stripe Decline Codes Explained

Complete reference of Stripe's top 15 decline codes with soft vs hard categories, retry guidance, and action items for each.

🔒 Read-only access ⚡ Works in 2 minutes ✅ Free to start
📋 Manual: ~10 min vs ⚡ Coby: ~3 seconds
📋
The Manual Way ~10 min
🤖
Or just ask Coby ~3 sec
1

Know the Two Categories

Stripe decline codes split into soft declines (temporary, retryable) and hard declines (permanent, don't retry). Soft declines include insufficient_funds, processing_error, and try_again_later. Hard declines include stolen_card, lost_card, and do_not_honor. Knowing the difference determines your recovery strategy.

2

Learn the Top 5 Codes You'll See Most

card_declined (generic, ~35% of failures) — bank gave no specific reason, retry after 24hrs. insufficient_funds (~25%) — soft decline, retry around paydays (1st/15th). expired_card (~15%) — hard decline, customer must update. do_not_honor (~10%) — bank-specific block, customer calls bank. processing_error (~5%) — Stripe/bank glitch, retry immediately.

3

Check the Retryable Flag

In the Stripe API response, the decline_code field tells you the reason. Cross-reference with the payment_method_details.card.network to see if the card network allows retries. Soft declines on Visa/Mastercard allow up to 15 retries within 30 days before the bank blocks the merchant.

4

Map Codes to Recovery Actions

For insufficient_funds: enable Smart Retries (Stripe retries at optimal times). For expired_card: trigger a card update email via dunning. For authentication_required: your checkout needs 3D Secure (SCA). For do_not_honor: customer must call their bank. For fraudulent: review in Stripe Radar, do not retry.

5

Export Decline Data for Analysis

Go to Payments → filter FailedExport. The CSV includes decline_code and amount columns. Pivot by code to find your top 3 failure reasons — these typically account for 80% of lost revenue.

6

Set Up Monitoring

The average SaaS company has a 2-3% decline rate. Above 5% signals a systemic issue. Track your decline rate monthly (failed ÷ total attempts) and break down by code. Stripe’s Smart Retries recover ~15% of soft declines automatically if enabled.

Total time per check
~10 min
🤖

Team Coby

Online — watching your Stripe
Break down my decline codes this month
🤖

Decline Code Breakdown (This Month):

card_declined (generic)18 · $2,340
insufficient_funds12 · $1,080 (retryable)
expired_card7 · $630
do_not_honor4 · $520
Total at risk: $4,570 · Recoverable with retries: ~$1,620
Answered in 2.3 seconds

Skip the manual work

Install Coby on Stripe and ask anything — like a teammate who never sleeps.

Install Coby Free →

Stop exporting CSVs.
Start asking questions.

Install Coby on your Stripe account in 30 seconds. Free to start, no credit card required.

Install on Stripe → See a live demo