Payments & Declines

Decline Code

An error message returned by a payment processor explaining why a transaction failed. Examples: `insufficient_funds`, `card_expired`, `do_not_honor`.

Definition

What is a decline code?

A decline code is an error response returned by a payment processor or issuing bank when a transaction cannot be completed. Each code identifies a specific (or sometimes generic) reason for the failure, giving the merchant a starting point for determining how to respond.

Common decline codes include insufficient_funds, card_expired, do_not_honor, stolen_card, processing_error, and incorrect_cvc. Payment processors like Stripe, Adyen, and Braintree each have their own code taxonomies, though many map to the same underlying card network response codes.

Soft declines vs. hard declines

Decline codes are generally classified into two categories. Soft declines are temporary failures that may succeed on a subsequent retry — examples include insufficient_funds, do_not_honor, and issuer_not_available. Hard declines indicate a permanent issue that retrying will not resolve, such as stolen_card, invalid_account_number, or card_not_supported.

This classification is critical for payment recovery. Retrying a hard decline wastes processing resources and can trigger fraud flags. Retrying a soft decline at the right time can recover revenue that would otherwise be lost.

Why decline code analysis matters

Understanding your decline code distribution reveals the health of your payment stack. A high rate of generic declines suggests issuer-side friction that smart retries can address. A spike in card_expired declines may indicate you need card account updater coverage. FlyCode analyzes decline codes across your entire payment flow to apply the right recovery strategy for each failure type.

Frequently Asked Questions

What is the difference between a soft decline and a hard decline?

Soft declines are temporary and may succeed on retry (e.g., insufficient_funds, do_not_honor). Hard declines indicate permanent issues that retrying will not resolve (e.g., stolen_card, invalid_account_number).

Should I retry all decline codes?

No. Only soft declines should be retried. Retrying hard declines wastes resources and can trigger additional fraud flags from the issuer or card network.

How can I use decline code data to improve my recovery rate?

Analyze your decline code distribution to identify patterns. A high rate of generic declines calls for smart retries. Frequent card_expired codes suggest you need card account updater coverage. Each code type requires a different recovery approach.

Explore more payment and subscription terms

Giving Back

Partnering with organizations that promote women in technology and families in need is something we are proud to do.

Text graphic displaying "SPE CODES; NEXT LEVEL" in a bold, stylized font on a solid background.
Logo featuring a stylized text "Catching" with an orange accent, set against a simple background.

2026 FlyCode © All Right Reserved.

Giving Back

Partnering with organizations that promote women in technology and families in need is something we are proud to do.

Text graphic displaying "SPE CODES; NEXT LEVEL" in a bold, stylized font on a solid background.
Logo featuring a stylized text "Catching" with an orange accent, set against a simple background.

2026 FlyCode © All Right Reserved.