## 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
```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
