Skip to content

Stripe errorStripe: setup_intent_authentication_failure

setup_intent_authentication_failure is the Stripe error for a SetupIntent whose payment method failed authentication, usually 3D Secure. The card is not saved, and the SetupIntent goes back to requires_payment_method.

Short answer

Show the customer that the card could not be verified, and let them try again or enter another card on the same SetupIntent. Don’t save the payment method or start the subscription until the SetupIntent succeeds. In test mode, check the flow with the always-authenticate test card.

Rather not fix it yourself? Stripe Billing Fix and Setup handles it at a fixed price, agreed before work starts.

Why the card fails authentication, and the fix

  1. 01

    The customer failed or closed the 3D Secure check

    “The provided payment method has failed authentication. Provide a new payment method to attempt to fulfill this SetupIntent again.” Stripe, Error codes (setup_intent_authentication_failure)

    A wrong code, a closed bank window or a timeout all end here. Keep the SetupIntent and confirm it again with a new payment method; the customer can re-enter the same card.

    const { setupIntent, error } = await stripe.confirmSetup({
      elements,
      confirmParams: { return_url: 'https://example.com/billing' },
    });
    if (error?.code === 'setup_intent_authentication_failure') {
      showMessage('Your bank could not verify this card. Try again or use another card.');
    }
  2. 02

    The app treats the card as saved anyway

    “Setup Intents use 3DS to authenticate a payment method without charging it, then create a mandate or agreement for future charges.” Stripe, How Payment Intents and Setup Intents work

    If your code stores the payment method or marks the account active before checking the result, later charges fail. Check that the status is succeeded, or listen for setup_intent.succeeded on your webhook.

  3. 03

    The 3D Secure window never opens

    With a custom flow, an unhandled requires_action status leaves the customer without the bank page. Use confirmSetup or handleNextAction from Stripe.js so the challenge shows.

  4. 04

    Testing with the wrong card

    “This card requires authentication on all transactions, regardless of how the card is set up.” Stripe, Testing (3D Secure cards)

    Also check: a card that never asks for 3D Secure can’t show this flow. Use the always-authenticate test card 4000002760003184 and fail the challenge on the test page.

Checked against the vendor’s docs on : Stripe docs: Error codes; Stripe docs: How Payment Intents and Setup Intents work; Stripe docs: Testing.

Rather hand it over?

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

“Working with Simon makes everything run so smoothly and better than I could ask for it. Amazingly communicative, extremely knowledgeable of coding and the backend processes. I strongly recommend.”
A buyer in the United States, January 2026. App development on Fiverr
All 127 Fiverr reviews

Related: Stripe authentication_required · Stripe no default payment method · Stripe generic_decline · Stripe payment_intent_authentication_failure

Questions

More on this error

Do I need a new SetupIntent to retry?

No. After a failed setup, the SetupIntent returns to requires_payment_method, so you can confirm the same one again with a new payment method.

Is this a decline?

No. The bank did not refuse a charge; the customer did not pass the bank’s identity check, and nothing was charged.

Can you fix it for me?

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.

A different error?

Describe it and get a written quote

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; Simon replies by email, usually within one business day.