Sur une plateforme de location de véhicules, j'ai eu à gérer des acomptes et des cautions avec Stripe. Les deux ressemblent à un paiement, mais ce n'est pas la même opération.
L'acompte est un paiement normal : l'argent est pris tout de suite, pour une partie du prix.
La caution ne doit pas être encaissée. On la bloque sur la carte du client, puis on la libère quand le véhicule revient en bon état. Chez Stripe, ça s'appelle séparer l'autorisation de la capture :
# exemple : 500 € bloqués, rien d'encaissé
curl https://api.stripe.com/v1/payment_intents \
-u "$STRIPE_SECRET_KEY:" \
-d amount=50000 \
-d currency=eur \
-d "automatic_payment_methods[enabled]=true" \
-d capture_method=manual
Une fois la carte confirmée, le paiement passe en requires_capture. L'argent est retenu, pas encaissé.
Trois choses à savoir.
-
L'autorisation expire. Pour une carte payée en ligne, c'est en général 7 jours. Passé ce délai, le blocage est levé et le paiement passe en
canceled. Pour une location plus longue, la caution bloquée au départ ne tient plus : il faut une autorisation prolongée (réservée à certains cas), ou enregistrer le moyen de paiement pour débiter plus tard si besoin. -
On peut capturer moins que le montant bloqué. Avec
amount_to_capture, le reste est libéré automatiquement. Mais dans la plupart des cas, on ne peut capturer qu'une seule fois. - Libérer, c'est annuler le paiement. Rien de plus.
Un détail côté client : certains relevés bancaires ne font pas la différence entre une somme bloquée et une somme prélevée. Mieux vaut le dire dans l'email de confirmation.
Et tous les moyens de paiement ne le permettent pas : le prélèvement SEPA ou iDEAL, par exemple, ne supportent pas cette séparation.
Amine Affif, développeur full-stack à Paris. amineaffif.com
Top comments (1)
La distinction est bien posée : l'acompte capture, la caution bloque puis libère. Deux pièges à ajouter d'expérience : l'expiration de l'autorisation varie selon l'émetteur (7 jours est l'ordre de grandeur, mais rien de garanti), et beaucoup de banques affichent la somme bloquée comme une dépense réelle, ce qui génère des tickets support que le code ne peut pas empêcher. Le choix du moyen de paiement compte autant que le flux : réserver les cautions aux cartes et garder SEPA/iDEAL pour les acomptes évite les mauvaises surprises.