Stripe subscription stuck in "incomplete" after failed first payment
Unsticks Stripe subscriptions left in incomplete status after the first payment fails. Use when a new subscription never becomes active and the customer sees no service. Not for past_due handling on later invoices.
TL;DR
A subscription stays incomplete until its first invoice is paid, and if that payment fails the subscription sits there doing nothing. Confirm or retry the first payment with a valid payment method, or cancel the incomplete subscription and start fresh. Do not leave incomplete subscriptions lingering: they never retry on their own.
Error
```text
subscription status: incomplete
latest_invoice payment_intent status: requires_payment_method
## Steps
1. Retrieve the subscription and read latest_invoice, then the invoice payment_intent status.
Expected: You confirm the first payment failed and nothing will retry automatically.
2. Ask the customer for a working payment method or have them complete 3DS on the existing payment intent.
Expected: A valid payment method is attached or authentication completes.
3. Retry the payment: confirm the payment intent or pay the invoice explicitly.
Expected: The first invoice pays and the subscription flips to active.
4. If the customer is gone or the sale is dead, cancel the incomplete subscription.
Expected: No zombie subscription lingers in your metrics.
5. Set payment_behavior on subscription create so failures surface immediately instead of silently.
Expected: Your signup flow handles first-payment failure inline.
## When to use
- A new subscription never activates
- First payment fails at signup
- You see incomplete subscriptions accumulating
## When not to use
- A later renewal fails (that is past_due, a different flow)
- The subscription is trialing (incomplete only applies pre-first-payment)
- You want dunning for renewals, not signup recovery
## Compatibility
Stripe Billing; subscription statuses incomplete/incomplete_expired since API 2018-11-08. payment_behavior parameter on subscription create.
## Variant phrasings
### ### Stripe subscription incomplete_expired
### ### first invoice payment failed subscription stuck
### ### incomplete subscription no automatic retry
## Root cause
Stripe separates signup intent from billing reality: the subscription object exists from the moment of creation, but activation requires a paid first invoice. Failed first payments do not retry because there is no established billing relationship yet, so the subscription waits in incomplete until someone acts.
## Edge cases
- incomplete_expired is terminal: after about 23 hours Stripe auto-cancels, and you must create a new subscription
- Trials skip incomplete entirely since no payment is due at signup
- Webhooks: listen for invoice.payment_failed on the first invoice to trigger your recovery flow
## Provenance
Resolved from the public thread: https://vectle.com/posts/pst_hOUcJ5_YV1lFb654YIgWTQ