Error codes

Hard decline

Stripe

authentication_required

The card was declined because the transaction requires authentication such as 3D Secure.

What does authentication_required mean?

The authentication_required decline code indicates that the issuing bank has requested additional cardholder verification via 3D Secure (3DS) before authorizing the transaction. The card and account are valid — the issuer just requires the cardholder to complete an authentication step such as a password, biometric, or one-time code.

Is it a soft or hard decline?

Stripe classifies it as a hard decline in the sense that the current transaction cannot be recovered through retry alone. However, the underlying card is fully functional — recovery requires customer interaction, not a retry of the same off-session charge.

Common root causes

  • Strong Customer Authentication (SCA) regulations in Europe requiring 3DS

  • Issuer risk models requesting step-up authentication on specific transactions

  • First-time or infrequent transactions on a card-on-file

  • High-value charges exceeding issuer's no-auth threshold

  • Off-session charges on cards that require on-session verification

Recommended recovery steps

  1. Route the customer to an authentication flow. Off-session retries will keep failing until 3DS is completed.

  2. Use Stripe's Payment Element or Checkout for built-in 3DS handling.

  3. Mark recurring charges as Merchant-Initiated Transactions (MIT) with proper authorization flags to reduce 3DS requests over time.

  4. Use network tokens for cards where available — they reduce authentication friction for subsequent charges.

  5. Do not repeatedly retry off-session. The result will always be the same until the customer authenticates.

How FlyCode handles authentication_required

FlyCode automatically applies network tokens and proper MIT signaling to recurring subscription charges, reducing false positive 3DS requests from issuers. For charges that still require authentication, FlyCode routes customers to streamlined re-authentication flows at the optimal moment — maximizing completion rates while minimizing subscription disruption.

What does authentication_required mean?

The authentication_required decline code indicates that the issuing bank has requested additional cardholder verification via 3D Secure (3DS) before authorizing the transaction. The card and account are valid — the issuer just requires the cardholder to complete an authentication step such as a password, biometric, or one-time code.

Is it a soft or hard decline?

Stripe classifies it as a hard decline in the sense that the current transaction cannot be recovered through retry alone. However, the underlying card is fully functional — recovery requires customer interaction, not a retry of the same off-session charge.

Common root causes

  • Strong Customer Authentication (SCA) regulations in Europe requiring 3DS

  • Issuer risk models requesting step-up authentication on specific transactions

  • First-time or infrequent transactions on a card-on-file

  • High-value charges exceeding issuer's no-auth threshold

  • Off-session charges on cards that require on-session verification

Recommended recovery steps

  1. Route the customer to an authentication flow. Off-session retries will keep failing until 3DS is completed.

  2. Use Stripe's Payment Element or Checkout for built-in 3DS handling.

  3. Mark recurring charges as Merchant-Initiated Transactions (MIT) with proper authorization flags to reduce 3DS requests over time.

  4. Use network tokens for cards where available — they reduce authentication friction for subsequent charges.

  5. Do not repeatedly retry off-session. The result will always be the same until the customer authenticates.

How FlyCode handles authentication_required

FlyCode automatically applies network tokens and proper MIT signaling to recurring subscription charges, reducing false positive 3DS requests from issuers. For charges that still require authentication, FlyCode routes customers to streamlined re-authentication flows at the optimal moment — maximizing completion rates while minimizing subscription disruption.

What does authentication_required mean?

The authentication_required decline code indicates that the issuing bank has requested additional cardholder verification via 3D Secure (3DS) before authorizing the transaction. The card and account are valid — the issuer just requires the cardholder to complete an authentication step such as a password, biometric, or one-time code.

Is it a soft or hard decline?

Stripe classifies it as a hard decline in the sense that the current transaction cannot be recovered through retry alone. However, the underlying card is fully functional — recovery requires customer interaction, not a retry of the same off-session charge.

Common root causes

  • Strong Customer Authentication (SCA) regulations in Europe requiring 3DS

  • Issuer risk models requesting step-up authentication on specific transactions

  • First-time or infrequent transactions on a card-on-file

  • High-value charges exceeding issuer's no-auth threshold

  • Off-session charges on cards that require on-session verification

Recommended recovery steps

  1. Route the customer to an authentication flow. Off-session retries will keep failing until 3DS is completed.

  2. Use Stripe's Payment Element or Checkout for built-in 3DS handling.

  3. Mark recurring charges as Merchant-Initiated Transactions (MIT) with proper authorization flags to reduce 3DS requests over time.

  4. Use network tokens for cards where available — they reduce authentication friction for subsequent charges.

  5. Do not repeatedly retry off-session. The result will always be the same until the customer authenticates.

How FlyCode handles authentication_required

FlyCode automatically applies network tokens and proper MIT signaling to recurring subscription charges, reducing false positive 3DS requests from issuers. For charges that still require authentication, FlyCode routes customers to streamlined re-authentication flows at the optimal moment — maximizing completion rates while minimizing subscription disruption.

Understanding This Decline Code

Extended content body

Frequently Asked Questions

What does authentication_required mean?

Can I retry authentication_required silently?

No. Off-session retries will continue to fail until the customer completes authentication. You must route the customer through a 3D Secure flow to recover the charge.

How does FlyCode handle authentication_required?

FlyCode uses network tokens and cardholder-initiated transaction signals where possible to reduce authentication friction on recurring charges, and routes customers to seamless re-authentication flows when needed.

FlyCode partnered with Stripe, to turn failed payment intro revenue.

With our newest Stripe app, you can stop chasing your customers about their failed payments and recover more payments with zero development work.

With our newest Stripe app, you can stop chasing your customers about their failed payments and recover more payments with zero development work.

Backed and Recognized by

Visa Everything Award 2024
Logo for Stripe with the text "Find it on the Stripe App Marketplace" on a dark background.
NVIDIA Inception Program logo, featuring the NVIDIA logo and text in a clean, modern design.

© NVIDIA, the NVIDIA logo are registered trademarks of NVIDIA Corporation in the U.S. and other countries.

2027 We're ahead ©FlyCode. All Right Reserved.

Backed and Recognized by

Visa Everything Award 2024
Logo for Stripe with the text "Find it on the Stripe App Marketplace" on a dark background.
NVIDIA Inception Program logo, featuring the NVIDIA logo and text in a clean, modern design.

© NVIDIA, the NVIDIA logo are registered trademarks of NVIDIA Corporation in the U.S. and other countries.

2027 We're ahead ©FlyCode. All Right Reserved.