Short answer
Get the PaymentIntent on the invoice and have the customer complete it on your site, for example by confirming it with Stripe.js while they are present. For off-session renewals, turn on “Send a Stripe-hosted link for customers to confirm their payments when required” in the Billing email settings.
Rather not fix it yourself? Stripe Billing Fix and Setup handles it at a fixed price, agreed before work starts.
Why the invoice payment needs action, and the fix
01
The card issuer asked for authentication
“Payment can be completed using the PaymentIntent associated with the invoice.” Stripe, Error codes (invoice_payment_intent_requires_action)
The customer has to complete the extra step themselves. Pass the client secret of the PaymentIntent on the invoice to the front end and let the customer complete it there.
02
The app doesn’t handle next actions
“Verify that you’re handling next actions, such as authentication.” Stripe, Strong Customer Authentication (failed payments)
If the code treats requires_action as a failure, the customer never gets the authentication step. Handle the next action instead of retrying the same charge.
03
The renewal ran while the customer was away
“Some payments might require manual customer intervention, like those that use 3D Secure or the Boleto payment method.” Stripe, Customer emails (payment confirmation notifications)
Renewals are charged off-session, so the customer has to be reached another way. Turn on “Send a Stripe-hosted link for customers to confirm their payments when required” in the Billing email settings.
04
The customer abandoned checkout
“Make sure your customer isn’t actively authenticating an on-session payment.” Stripe, Strong Customer Authentication (failed payments)
Also check: the payment can sit in requires_action because the customer is still authenticating or left the checkout flow. Wait or ask them to finish before charging again.
Checked against the vendor’s docs on : Stripe docs: Error codes; Stripe docs: Strong Customer Authentication for Billing; Stripe docs: Customer emails.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- $950Stripe Billing Fix and SetupSubscriptions, webhooks, customer portal and failed payments set up or fixed, tested in Stripe test mode.See scope and start
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.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.See scope and start
“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.”
Related: Stripe subscription incomplete (requires_action) · Stripe authentication_required · Stripe payment_intent_authentication_failure · Stripe customer_max_payment_methods