← Back to Stripe Error Codes

Stripe Error: Authentication Required — What It Means & How to Fix It

Issuer requires additional customer authentication (usually 3D Secure/SCA) before approving payment.

What authentication_required means in Stripe

The right recovery response depends on whether the decline is temporary, customer-actionable, or unlikely to succeed without a new payment method.

Decline type
Soft or potentially recoverable decline
Retry guidance
Use the decline type to decide whether to retry automatically, wait for customer action, or stop retrying this payment method.

Common causes

  • Off-session payment requiring step-up authentication
  • Regulatory SCA requirement in customer region
  • Issuer risk policy triggered challenge flow

How to fix it

  1. Bring customer on-session to complete authentication.
  2. Use Stripe PaymentIntents with proper next_action handling.
  3. Store authenticated payment method for future off-session billing where allowed.

Recovery email template

Use this as a starting point when the payment needs customer action.

Subject

Payment update needed for Authentication Required

Body

Hi {{customer_name}}, we could not process your latest payment. Please review or update your payment method here: {{billing_portal_link}}.

Related Stripe decline-code questions

What does authentication_required mean in Stripe?

It is a Stripe decline code that explains why the issuer or payment network rejected the payment.

Should I retry this failed payment?

Retry only when the decline is likely to recover. Hard declines usually need a new payment method first.

How can RetryKit help?

RetryKit classifies failed invoices, runs timed retries, sends dunning emails, and tracks recovered revenue.

Should you retry this Stripe error?

Soft decline: Soft decline with customer interaction required. RetryKit can trigger a targeted email to complete authentication and recover the invoice.

Stop losing revenue to failed payments. RetryKit automatically recovers failed Stripe payments. Connect in 5 minutes.

Start with RetryKit