# Bloquer une somme d'argent sur un moyen de paiement Séparez l'autorisation et la capture du paiement pour créer immédiatement le paiement et ne capturer les fonds qu'ultérieurement. Lorsque vous créez un paiement, vous pouvez bloquer une somme sur un moyen de paiement admissible pour mettre ces fonds en réserve et les capturer plus tard. Par exemple, les hôtels autorisent souvent l’intégralité du paiement avant l’arrivée du client, puis capturent l’argent au moment du départ du client. On parle parfois de *capture manuelle* (Manually capture funds separately from an authorization). Autoriser un paiement permet d’en garantir le montant en retenant les fonds correspondant sur le moyen de paiement du client. Si vous utilisez l’API, l’attribut [payment_method_details.card.capture_before](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-capture_before) du paiement précise la date de fin de l’autorisation. Vous devez capturer les fonds avant l’expiration de l’autorisation. Si celle-ci expire avant la capture des fonds, la mise en réserve des fonds est levée et le paiement passe à l’état `canceled`. En savoir plus sur les [états des paiements asynchrones](https://docs.stripe.com/payments/paymentintents/lifecycle.md). ## Durée de validité de l’autorisation Les tableaux suivants présentent les délais de validité de l’autorisation des différents types de transaction. ### Transactions sans présentation de la carte bancaire | Marque de la carte bancaire | Délai de validité de l’autorisation d’une [transaction initiée par le marchand](https://docs.stripe.com/payments/cits-and-mits.md) | Délai de validité de l’autorisation d’une [transaction initiée par le client](https://docs.stripe.com/payments/cits-and-mits.md) | | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | | **Visa** | 5 jours* | 7 jours | | **Mastercard** | 7 jours | 7 jours | | **American Express** | 7 jours | 7 jours | | **Discover** | 7 jours | 7 jours | La fenêtre d’autorisation exacte est de 4 jours et 18 heures, afin de laisser du temps pour les processus de compensation. ### Transactions avec présentation de la carte bancaire (paiements par TPE) | Marque de la carte bancaire | Durée de validité de l’autorisation | | --------------------------- | ----------------------------------- | | **Visa** | 5 jours* | | **Mastercard** | 2 jours | | **American Express** | 2 jours | | **Discover** | 2 jours | La fenêtre d’autorisation exacte est de 4 jours et 18 heures, afin de laisser du temps pour les processus de compensation. ### Délai d’autorisation de 30 jours au Japon Si votre compte est établi au Japon, les transactions en JPY effectuées par Visa, Mastercard, JCB, Diners Club et Discover peuvent faire l’objet d’une retenue pendant 30 jours maximum. Les transactions non libellées en JPY et celles d’American Express expirent au bout du délai standard de 7 jours. > Depuis le 14 avril 2024, Visa a raccourci le délai d’autorisation des [transactions en ligne initiées par le marchand](https://docs.stripe.com/payments/cits-and-mits.md) de 7 à 5 jours. Visa a également allongé le délai d’autorisation des transactions par TPE (Terminal) de 2 à 5 jours. ## Limites des moyens de paiement Avant de passer à l’implémentation, sachez que la séparation entre l’autorisation et la capture est soumise aux limites suivantes. - Seuls certains moyens de paiement prennent en charge les fonctionnalités d’autorisation et de *capture* (Fulfillment is the process of providing the goods or services purchased by a customer, typically after payment is collected) distinctes. C’est notamment le cas des cartes, d’Affirm, d’Afterpay, de Cash App Pay, de Klarna et de PayPal. En revanche, [ACH](https://docs.stripe.com/payments/ach-direct-debit.md) et [iDEAL](https://docs.stripe.com/payments/ideal.md), entre autres, ne les prennent pas en charge. En savoir plus sur la [prise en charge des fonctionnalités des moyens de paiement](https://docs.stripe.com/payments/payment-methods/payment-method-support.md). - Au-delà de ce qui est indiqué dans les tableaux ci-dessus, d’autres moyens de paiement ont des règles et des fenêtres d’autorisation différentes : - Paiements par carte : le montant est généralement bloqué pendant sept jours pour les paiements en ligne et deux jours pour les paiements Terminal (en fonction du type de transaction et du réseau de cartes). Vous pouvez demander une autorisation prolongée pour certaines [autorisations en ligne](https://docs.stripe.com/payments/extended-authorization.md) ainsi que certaines [autorisations de paiement Terminal](https://docs.stripe.com/terminal/features/extended-authorizations.md) admissibles à des délais prolongés. Les réseaux de cartes peuvent également restreindre les autorisations de 1 USD si vous n’avez pas l’intention de les capturer. - [Affirm](https://docs.stripe.com/payments/affirm/accept-a-payment.md?platform=web#manual-capture) : si Affirm exige un acompte pour des montants de commande très élevés, cet acompte est facturé lors de l’autorisation et est remboursé si le paiement n’est pas capturé. Vous disposez ensuite de 30 jours pour capturer le solde du paiement. - [Afterpay/Clearpay](https://docs.stripe.com/payments/afterpay-clearpay/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture) : lors de l’autorisation, le client paie le premier versement échelonné. Afterpay rembourse le paiement s’il n’est pas capturé. Vous disposez alors de 13 jours pour capturer le solde du paiement. - [Cash App Pay](https://docs.stripe.com/payments/cash-app-pay/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture) : les autorisations valides doivent être capturées sous 7 jours pour effectuer un paiement. - [Klarna](https://docs.stripe.com/payments/klarna/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture) : vous devez capturer le paiement au plus tard à minuit du 28e jour calendaire qui suit la demande de paiement, sinon l’autorisation expirera. Par exemple, vous devez capturer une demande de paiement effectuée le 01/10/2020 à 14 h 00 UTC au plus tard le 29/10/2020 à 00 h 00. - [PayPal](https://docs.stripe.com/payments/paypal/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture) : bloque le montant pendant 10 jours. Stripe tente automatiquement de bloquer les fonds pour 10 jours supplémentaires, soit un total de 20 jours. Votre [préférence de règlement](https://docs.stripe.com/payments/paypal/choose-settlement-preference.md) peut affecter la durée de l’autorisation. Pour en savoir plus, reportez-vous à la section [autorisation et capture distinctes](https://docs.stripe.com/payments/paypal/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture). ## Utiliser le Dashboard pour autoriser et capturer Vous pouvez autoriser un paiement et capturer les fonds séparément sans écrire une seule ligne de code. 1. Dans le Dashboard, [créez un nouveau paiement](https://dashboard.stripe.com/test/payments/new). Sélectionnez **ponctuel**. 1. Lorsque vous saisissez ou sélectionnez le moyen de paiement, sélectionnez **Autres options** puis **Capturer les fonds plus tard**. Le paiement apparaît sur votre [page de paiement](https://dashboard.stripe.com/test/payments) comme **Non capturé**. Pour capturer les fonds, accédez à la page des détails du paiement et cliquez sur **Capturer**. ## Indiquer à Stripe d’autoriser uniquement #### L'API Checkout Session Pour indiquer que vous souhaitez séparer l’autorisation de la capture, définissez la valeur de l’option [capture_method](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-capture_method) sur `manual` lors de la création de la session Checkout. Ce paramètre indique à Stripe d’autoriser le montant mais de ne pas le capturer sur le moyen de paiement du client. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price]={{PRICE_ID}}" \ -d "line_items[0][quantity]=2" \ -d mode=payment \ -d ui_mode=custom \ -d "payment_intent_data[capture_method]=manual" ``` Avec l’approche ci-dessus, vous indiquez à Stripe que vous pouvez uniquement utiliser la « capture après » pour un Checkout Session avec les moyens de paiement éligibles. #### API Payment Intents Pour indiquer que vous souhaitez séparer l’autorisation de la capture, définissez [capture_method](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-capture_method) sur `manual` lors de la création du PaymentIntent. Ce paramètre indique à Stripe d’autoriser le montant mais de ne pas le capturer sur le moyen de paiement du client. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]=card" \ -d capture_method=manual ``` Avec l’approche ci-dessus, vous indiquez à Stripe que vous pouvez uniquement utiliser la « capture ultérieure » pour un PaymentIntent avec des moyens de paiement admissibles. Par exemple, vous ne pouvez pas accepter les paiements par carte ni par prélèvement automatique SEPA (lequel ne prend pas en charge la capture ultérieure) pour un seul PaymentIntent. Pour accepter des moyens de paiement qui ne prennent peut-être pas tous en charge la capture ultérieure, vous pouvez configurer cette fonctionnalité pour chaque moyen de paiement en définissant `capture_method=manual` sur l’objet `payment_method_options[]`. Par exemple, en configurant `payment_method_options[card][capture_method]=manual`, vous ne mettez en attente que les paiements par carte. Vous pouvez gérer les moyens de paiement à partir du [Dashboard](https://dashboard.stripe.com/settings/payment_methods). Stripe gère la logique d’[affichage dynamique](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md) des moyens de paiement admissibles les plus pertinents pour chaque client en fonction d’éléments tels que le montant de la transaction, la devise et le tunnel de paiement. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "automatic_payment_methods[enabled]=true" \ -d "payment_method_options[card][capture_method]=manual" ``` Vous pouvez aussi répertorier `card` et `sepa_debit` à l’aide [du paramètre de sélection du type de moyen de paiement](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types) comme dans l’exemple ci-dessous. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=eur \ -d "payment_method_types[]=card" \ -d "payment_method_types[]=sepa_debit" \ -d "payment_method_options[card][capture_method]=manual" ``` Avant de passer à la capture, joignez un moyen de paiement comportant des informations de carte au PaymentIntent et autorisez la carte en confirmant le PaymentIntent. Pour cela, définissez les champs `payment_method` et `confirm` du PaymentIntent. > #### Autorisations prolongées > > En règle générale, une autorisation de paiement par carte en ligne est valable 7 jours. Pour prolonger la période de validité, vous pouvez [bloquer une somme sur une carte de paiement en ligne pour une période prolongée](https://docs.stripe.com/payments/extended-authorization.md). ## Capturer les fonds > #### Checkout Sessions dispose d’un ID PaymentIntent > > Si vous utilisez l’API Checkout Sessions, veillez à utiliser l’[ID PaymentIntent](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-payment_intent) renvoyé dans l’objet Checkout Session. Lorsque le moyen de paiement est autorisé, l’[état](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-status) du PaymentIntent passe à `requires_capture`. Pour capturer les fonds autorisés, effectuez une demande de [capture](https://docs.stripe.com/api/payment_intents/capture.md) du PaymentIntent. Le montant total autorisé est capturé par défaut. Pour capturer un montant inférieur ou (pour certains paiements par carte en ligne) supérieur à ce qui a été autorisé, transmettez l’option [amount_to_capture](https://docs.stripe.com/api/payment_intents/capture.md#capture_payment_intent-amount_to_capture). Une capture partielle libère automatiquement le montant restant. Si vous tentez de capturer un montant supérieur au montant initial d’un paiement par carte en ligne, reportez-vous à la [documentation relative aux surcaptures](https://docs.stripe.com/payments/overcapture.md) pour en savoir plus. L’exemple suivant montre comment capturer 7,50 USD sur le paiement autorisé de 10,99 USD : ```curl curl https://api.stripe.com/v1/payment_intents/pi_123/capture \ -u "<>:" \ -d amount_to_capture=750 ``` Bien que certains paiements par carte soient admissibles à la [capture multiple](https://docs.stripe.com/payments/multicapture.md), pour la plupart des paiements, vous ne pouvez effectuer qu’une capture par paiement autorisé. Si vous capturez un montant partiel, vous ne pouvez pas réaliser une deuxième capture pour la différence. Envisagez plutôt d’[enregistrer les informations de paiement du client](https://docs.stripe.com/payments/save-during-payment.md#save-payment-details-for-future-use) afin de créer ultérieurement des paiements selon vos besoins. Les relevés de carte bancaire de certains émetteurs et certaines interfaces de moyens de paiement ne permettent pas de distinguer les autorisations et les paiements capturés (réglés), ce qui peut parfois induire les clients en erreur. Par ailleurs, lorsqu’un client finalise le processus de paiement sur un PaymentIntent par une capture manuelle, l’événement `payment_intent.amount_capturable_updated` est déclenché. Vous pouvez consulter la propriété [amount_capturable](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-amount_capturable) du PaymentIntent pour connaître le montant total du PaymentIntent pouvant être capturé. ## Annuler l’autorisation Si vous devez annuler une autorisation, vous pouvez [annuler le PaymentIntent](https://docs.stripe.com/refunds.md#cancel-payment) correspondant. ## Capturer le paiement avant l’expiration de l’autorisation (Private preview) Vous pouvez demander à Stripe de capturer automatiquement avant l’expiration de l’autorisation plutôt que de déclencher manuellement la capture pour les moyens de paiement par carte bancaire. Utilisez la capture différée automatique pour ne pas manquer de capturer les paiements autorisés. Vous pouvez également spécifier un délai personnalisé entre l’autorisation et la capture. Pour activer la capture automatique différée, définissez [capture_method](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-card) sur `automatic_delayed` sur le PaymentIntent : ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]=card" \ -d "payment_method_options[card][capture_method]=automatic_delayed" ``` Avec cette approche, Stripe capture votre paiement par carte bancaire avant l’expiration de l’autorisation, ce qui déclenche la capture environ 6 heures avant l’heure d’expiration. Cela sert de processus de secours pour nous assurer que nous capturons les paiements autorisés avant leur expiration. Vous pouvez toujours [capturer](https://docs.stripe.com/api/payment_intents/capture.md) ou [annuler](https://docs.stripe.com/refunds.md#cancel-payment) manuellement la demande de PaymentIntent avant qu’il ne soit automatiquement capturé. Vous pouvez spécifier une période de délai personnalisée pour la capture en incluant le paramètre `capture_delay_days`. Ce paramètre indique le nombre de jours pour retarder la capture après une autorisation réussie : ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]=card" \ -d "payment_method_options[card][capture_method]=automatic_delayed" \ -d "payment_method_options[card][capture_delay_days]=3" ``` Dans cet exemple, Stripe capture automatiquement le PaymentIntent 3 jours après l’autorisation réussie. Ceci est utile si vous connaissez le temps nécessaire pour effectuer des actions entre l’autorisation et la capture, tout en garantissant la capture avant l’expiration de l’autorisation. > Avec `capture_method=automatic_delayed`, Stripe donne la priorité à la capture du paiement avant l’expiration de l’autorisation. Si la période d’autorisation est plus courte que la période de délai spécifiée, nous capturons le PaymentIntent avant l’expiration, en ignorant la période de délai. ## See also - [Séparez l’autorisation et la capture à l’aide de Checkout](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=stripe-hosted#auth-and-capture) - [Bloquer une somme sur une carte de paiement en ligne pour une période prolongée](https://docs.stripe.com/payments/extended-authorization.md)