Omesta
Pricing
Log inFree Until $1,000
All terms

Glossary

Decline codes

Definition

Decline codes are the standardized reason codes a card network returns when a payment fails. They tell you whether to retry (insufficient funds), wait (do-not-honor), or stop (lost card).

A decline code is the reason a card issuer (Visa, Mastercard, Amex, Discover) returned when it refused a charge. Every failed payment in Stripe, Adyen, Braintree, or any other processor comes with one. Reading them correctly is the difference between recovering 70% of failed payments and recovering 20%.

Why decline codes matter for recovery

The single biggest mistake in dunning systems is treating every failed payment the same way. A generic_decline and an insufficient_funds are not the same problem and should not be retried on the same schedule.

  • insufficient_funds → wait until likely payday (3-5 days), retry.
  • expired_card → email the customer to update, do not retry the same card.
  • stolen_card / lost_card → stop. Do not retry. Card is dead.
  • do_not_honor → soft decline, retry after 24-48h with different MID if possible.
  • generic_decline → ambiguous, retry once with optimized timing.

Without code-aware logic, you waste retries on dead cards and miss the window on recoverable ones.

The most common Stripe decline codes

The codes you'll see most often, in order of frequency for typical e-commerce:

  • generic_decline — most common, ambiguous, recoverable.
  • insufficient_funds — highly recoverable with timing optimization.
  • do_not_honor — recoverable, soft decline.
  • expired_card — recoverable only via card-update flow.
  • incorrect_cvc — recoverable, customer typo.
  • card_velocity_exceeded — recoverable after cooldown.
  • lost_card / stolen_card — not recoverable.
  • fraudulent — not recoverable, do not retry.

How Omesta uses decline codes

Omesta reads the decline code on every failed charge in your Stripe account and routes the retry through one of 12 distinct recovery strategies. For example, an insufficient_funds decline on a Tuesday triggers a retry on the following Monday at 9am local time. An expired_card skips retries entirely and triggers a card-update email with a one-click update link.

See the full decline-code routing for which codes map to which strategy.

Where to find the decline code

In Stripe Dashboard, open any failed payment. The decline reason is under "Outcome." In the API, it's charge.outcome.reason and charge.failure_code. The card network's underlying code is also there for network-level analysis.

Ready to put decline-code-aware recovery to work on your store? Run a leak scan — you'll see your failed-payment volume broken down by decline code in two minutes.

Get started

See the dollar value on your own stack

Two minutes. Read-only. Free until we recover $1,000 for you.

Run a leak scanSee pricing

Find the money your store is losing. To failed payments, dead ad spend, and silent churn. And put it back in your bank account. Free until we recover $1,000 for you.

Contact

Omesta Systems LLC
5830 E 2nd St
Ste 7000 #33555
Casper, WY 82609
Support@omestasystems.com

Product

  • Omesta

Solutions

  • For Ecommerce Brands
  • For Marketing Agencies
  • For Growth Teams
  • Multi-Brand Management

Resources

  • Integrations
  • Pricing
  • Blog
  • Glossary
  • Compare
  • Roadmap
  • Help Center
  • Partner Program
  • Contact Support
  • Careers
  • Press

Security & Trust

  • Data Security
  • Privacy Policy
  • Terms & Conditions
  • Cookie Policy
  • GDPR Policy
  • Integration Data Disclosure
  • Refund Policy
  • System Status

As featured in

See all 500+ features →
AP NewsNewsBreakBoston HeraldInternational Business TimesStar TribuneStreet InsiderMilwaukee Journal SentinelBarchart
Secure Platform
Encrypted Connections (HTTPS)
API-Based Integrations
Privacy-First Data Handling

© 2026 Omesta Systems LLC. All rights reserved.