Stripe subscription expired after 23 hours? Why customers lose access

Ship ItChecked against the official source

The short answer

For a subscription that charges automatically, the customer has 23 hours to pay the first invoice. Until then the subscription is incomplete, for example when the payment requires customer authentication (3D Secure). If the first invoice is not paid within 23 hours, the subscription transitions to incomplete_expired and the open invoice is voided. So if your app unlocked the plan the moment the subscription was created, that customer loses it about a day later.

What to do

  1. Unlock the paid plan only when the subscription status is active or trialing, not the moment it's created.
  2. Stripe's docs: provision access when you receive invoice.paid and the subscription status is active.
  3. When a subscription changes to canceled or unpaid, revoke access. On past_due, notify the customer and ask them to update their payment details.

Good to know

  • Stripe calls incomplete_expired a terminal status. To reactivate the customer's access, you create a new subscription.

Source

Checked on 5 Oct 2026. Prices, limits and settings change, so check the source before you rely on them.

Related