# Utilisation des webhooks avec les abonnements

Découvrez comment utiliser les webhooks pour recevoir des notifications en cas d'activité liées à vos abonnements.

Vous recevez des notifications de Stripe dans votre application via des événements webhook. Utilisez les événements webhook pour gérer les *abonnements* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis), car la plupart des activités se déroulent de manière asynchrone. Traitez ces événements sur un endpoint webhook ou d’autres destinations comme Amazon EventBridge ou Azure Event Grid en créant une [destination d’événements](https://docs.stripe.com/event-destinations.md).

Pour utiliser les webhooks avec vos abonnements&nbsp;:

1. Créez un endpoint de webhook dans votre application.
1. Enregistrez votre [endpoint webhook](https://docs.stripe.com/webhooks.md) dans Workbench.
1. Ajoutez une logique pour gérer les événements Stripe. Pour les abonnements, cela inclut les échecs de paiement et les changements d’état d’abonnement (par exemple le passage de `trial` à un état `active`). Vous pouvez utiliser le [guide de démarrage rapide du webhook](https://docs.stripe.com/webhooks/quickstart.md) pour créer un endpoint webhook minimal. Assurez-vous de [vérifier que les événements entrants proviennent bien de Stripe](https://docs.stripe.com/webhooks.md#verify-events).
1. Testez votre endpoint de webhook pour confirmer qu’il fonctionne comme prévu.

Si votre application s’exécute sur AWS, vous pouvez [configurer Stripe pour envoyer les événements directement à AWS EventBridge dans votre compte AWS](https://docs.stripe.com/event-destinations/eventbridge.md). Si votre application s’exécute sur Azure, vous pouvez [configurer Stripe pour envoyer les événements directement à Azure Event Grid dans votre abonnement Azure](https://docs.stripe.com/event-destinations/eventgrid.md).

## Événements d'abonnement

Stripe déclenche des [événements](https://docs.stripe.com/api.md#event_types) chaque fois qu’un abonnement est créé ou modifié. Certains événements sont envoyés immédiatement lors de la création d’un abonnement, tandis que d’autres se reproduisent à des périodes de facturation régulières.

Veillez à ce que votre intégration gère les événements de manière adéquate. Par exemple, vous pouvez envoyer un e-mail à votre client en cas d’échec de paiement ou révoquer son accès s’il annule son abonnement.

Le tableau suivant décrit les événements les plus courants liés aux abonnements et, le cas échéant, suggère les actions à entreprendre pour les gérer.

> L’API Accounts v2 est en disponibilité générale (GA) pour les utilisateurs de Connect, et en version bêta publique pour les autres utilisateurs Stripe.
> 
> Que vous utilisiez des objets [Accounts&nbsp;v2](https://docs.stripe.com/connect/use-accounts-as-customers.md) ou [Customer](https://docs.stripe.com/api/customers.md) pour représenter les comptes connectés ou les clients de votre plateforme, utilisez les événements `customer.subscription` pour suivre les événements d’abonnement.

| Événement                                         | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `v2.core.account.created`                         | Envoyé lorsqu’un [Compte&nbsp;v2](https://docs.stripe.com/api/v2/core/accounts/object.md) est créé avec succès.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `customer.created`                                | Envoyé lorsqu’un objet [Customer](https://docs.stripe.com/api/customers/object.md) a bien été créé.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `customer.subscription.created`                   | Envoyé lors de la création de l’abonnement. Le `status` de l’abonnement peut être `incomplete` si l’authentification du client est demandée pour finaliser le paiement ou si le paramètre `payment_behavior` est défini sur [default_incomplete](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-payment_behavior).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `customer.subscription.deleted`                   | Envoyé lorsque l’abonnement d’un client prend fin.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `customer.subscription.paused`                    | Envoyé lorsque l’`état` d’un abonnement passe à `paused`. Par exemple, nous l’envoyons lorsque vous [configurez](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-trial_settings-end_behavior-missing_payment_method) un abonnement pour qu’il soit suspendu lorsqu’une [période d’essai gratuite se termine sans moyen de paiement](https://docs.stripe.com/billing/subscriptions/trials/free-trials.md#create-free-trials-without-payment). Invoicing remporté(e) n’aura lieu qu’une fois l’abonnement [repris(/API/abonnement/reprise). Nous n’envoyons pas cet événement si vous [suspendez le recouvrement](https://docs.stripe.com/billing/subscriptions/pause-payment.md) car les factures continuent d’être créées pendant cette période.                                                                                                                                                                                                                                                            |
| `customer.subscription.resumed`                   | Envoyé lorsque vous reprenez un abonnement précédemment à l’état `paused`. Cela ne s’applique pas lorsque vous [interrompez le recouvrement des paiements](https://docs.stripe.com/billing/subscriptions/pause-payment.md#unpausing).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `customer.subscription.trial_will_end`            | Envoyé trois&nbsp;jours avant la [fin de la période d’essai](https://docs.stripe.com/billing/subscriptions/trials.md). Si la période d’essai est inférieure à trois&nbsp;jours, l’événement est déclenché.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `customer.subscription.updated`                   | Envoyé lorsqu’un abonnement démarre ou [est modifié](https://docs.stripe.com/billing/subscriptions/change.md). Par exemple, le renouvellement d’un abonnement, l’ajout d’un bon de réduction, l’application d’une réduction, l’ajout d’un poste de facture et le changement de plan déclenchent sont des situations qui déclenchent cet événement.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `entitlements.active_entitlement_summary.updated` | Envoyé lorsque les droits actifs d’un client sont mis à jour. Lorsque vous recevez cet événement, vous pouvez donner ou retirer l’accès aux fonctionnalités de votre produit. En savoir plus sur l’[intégration des droits](https://docs.stripe.com/billing/entitlements.md).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `invoice.created`                                 | Envoyé lorsqu’une facture est créée pour un nouvel abonnement ou un renouvellement. Si Stripe ne reçoit pas une réponse positive à `invoice.created`, la finalisation de toutes les factures avec l’[encaissement automatique](https://docs.stripe.com/invoicing/integration/automatic-advancement-collection.md) est retardée de 72&nbsp;heures au maximum. Renseignez-vous sur la [finalisation des factures](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#finalized).
  - Répondez à la notification en envoyant une requête à l’API [de finalisation des factures](https://docs.stripe.com/api/invoices/finalize.md).                                                                                                                                                                                                                                                                                                                                                                                  |
| `invoice.finalized`                               | Envoyé lorsqu’une facture est finalisée et prête à être payée.
  - Vous pouvez envoyer la facture au client. Familiarisez-vous avec la [finalisation des factures](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#finalized) pour en savoir plus.
  - Selon vos paramètres, nous débitons automatiquement le moyen de paiement par défaut ou tentons un encaissement. Renseignez-vous sur les [e-mails après la finalisation](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#emails) pour en savoir plus.                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `invoice.finalization_failed`                     | La facture n’a pas pu être finalisée. Découvrez [comment gérer les échecs de finalisation](https://docs.stripe.com/tax/customer-locations.md#finalizing-invoices-with-finalization-failures) et [la finalisation](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#finalized) des factures.
  - Inspectez la [last_finalization_error](https://docs.stripe.com/api/invoices/object.md#invoice_object-last_finalization_error) de la facture pour déterminer la cause de l’erreur.
  - Si vous utilisez Stripe Tax, vérifiez le champ [automatic_tax](https://docs.stripe.com/api/invoices/object.md#invoice_object-last_finalization_error) de l’objet `Invoice` .
  - Si `automatic_tax[status]=requires_location_inputs``, la facture ne peut pas être finalisée et les paiements ne peuvent pas être encaissés. Prévenez votre client et collectez l’[emplacement client](https://docs.stripe.com/tax/customer-locations.md) demandé.
  - Si `automatic_tax[status]=failed`, relancez la requête plus tard. |
| `invoice.paid`                                    | Envoyé lorsque la facture est réglée. Vous pouvez fournir l’accès à votre produit dès la réception de cet événement et le basculement du `status` de l’abonnement sur `active`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `invoice.payment_action_required`                 | Envoyé lorsque la facture nécessite une authentification du client. Découvrez comment gérer un abonnement quand une [action est requise](https://docs.stripe.com/billing/subscriptions/overview.md#requires-action) pour la facture.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `invoice.payment_failed`                          | Le paiement d’une facture a échoué. L’état du PaymentIntent bascule sur `requires_action`. L’état de l’abonnement reste `incomplet` *seulement* pour la première facture de l’abonnement. Lorsqu’un paiement échoue, plusieurs actions sont possibles&nbsp;:

  - Prévenez votre client.
  - Configurez vos [paramètres d’abonnement](https://dashboard.stripe.com/settings/billing/automatic) dans le Dashboard pour activer [Smart Retries](https://docs.stripe.com/billing/revenue-recovery/smart-retries.md) et d’autres fonctionnalités de recouvrement de revenus.
  - Si vous utilisez des PaymentIntents, recueillez de nouvelles données de paiement et [confirmez le PaymentIntent](https://docs.stripe.com/api/payment_intents/confirm.md).
  - Mettez à jour le [moyen de paiement par défaut](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-default_payment_method) de l’abonnement.                                                                                                         |
| `invoice.upcoming`                                | Envoyé quelques jours avant le renouvellement de l’abonnement. Le nombre de jours dépend de la valeur **Événements de renouvellement à venir** configurée dans le [Dashboard](https://dashboard.stripe.com/settings/billing/automatic). Pour les abonnements existants, la modification du nombre de jours prend effet à la période de facturation suivante. Vous pouvez toujours ajouter des [postes de facture supplémentaires](https://docs.stripe.com/billing/invoices/subscription.md#adding-upcoming-invoice-items) si nécessaire.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `invoice.updated`                                 | Envoyé lorsqu’un paiement aboutit ou échoue. Si le paiement aboutit, l’attribut `paid` est défini sur `true` et le `status` sur `paid`. Si le paiement échoue, `paid` est défini sur `false` et le `status` reste `open`. Les échecs de paiement déclenchent par ailleurs un événement `invoice.payment_failed`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `payment_intent.created`                          | Envoyé lorsqu’un [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) est créé.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `payment_intent.succeeded`                        | Envoyé lorsqu’un PaymentIntent a effectué un paiement avec succès.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `subscription_schedule.aborted`                   | Envoyé lorsqu’une planification d’abonnement est annulée car un défaut de paiement a entraîné la résiliation de l’abonnement correspondant.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `subscription_schedule.canceled`                  | Envoyé lorsqu’une planification d’abonnement est annulée, ce qui annule également tout abonnement actif associé.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `subscription_schedule.completed`                 | Envoyé lorsque toutes les [phases](https://docs.stripe.com/billing/subscriptions/subscription-schedules.md#subscription-schedule-phases) d’une planification d’abonnement sont terminées.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `subscription_schedule.created`                   | Envoyé lorsqu’une nouvelle planification d’abonnement est créée.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `subscription_schedule.expiring`                  | Envoyé 7&nbsp;jours avant la date d’expiration d’un abonnement.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `subscription_schedule.released`                  | Envoyé lorsqu’une planification d’abonnement est [publiée](https://docs.stripe.com/api/subscription_schedules/release.md), ou interrompue et dissociée de l’abonnement, lequel est conservé.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `subscription_schedule.updated`                   | Envoyé lorsqu’une planification d’abonnement est mise à jour.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

## Gérer les échecs de paiement

Les événements constituent un moyen sûr pour Stripe de vous informer des échecs de paiement de vos factures d’abonnement. Certains échecs de paiement sont temporaires&nbsp;: par exemple, l’émetteur de la carte peut refuser le débit initial, mais autoriser une nouvelle tentative automatique par la suite. D’autres échecs de paiement sont en revanche définitifs, comme ceux liés à l’absence de moyen de paiement utilisable pour le client, et nécessitent une action.

| Événement                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `invoice.payment_failed` | Le paiement d’une facture a échoué. L’état du PaymentIntent passe à `requires_payment_method`. L’état de l’abonnement passe à `incomplete`. En cas d’échec de paiement, plusieurs actions sont possibles&nbsp;:

  - Prévenez votre client.
  - Si vous utilisez des PaymentIntents, recueillez de nouvelles données de paiement et [confirmez le PaymentIntent](https://docs.stripe.com/api/payment_intents/confirm.md).
  - Mettez à jour le [moyen de paiement par défaut](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-default_payment_method) de l’abonnement.
  - Envisagez d’activer les relances [Smart Retries](https://docs.stripe.com/billing/revenue-recovery/smart-retries.md). |

## Gérer les paiements nécessitant une action supplémentaire

Certains moyens de paiement peuvent nécessiter des étapes supplémentaires, comme une authentification du client, pour que l’opération puisse aboutir. Si vous recevez de tels événements, votre application doit notifier le client pour qu’il effectue l’action requise. Pour plus d’informations sur la façon de [gérer les événements nécessitant une action supplémentaire](https://docs.stripe.com/billing/subscriptions/overview.md#requires-action), consultez le guide de présentation des abonnements.

| Événement                         | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `invoice.finalization_failed`     | La facture n’a pas pu être finalisée. Reportez-vous à la page consacrée à la [gestion des échecs de finalisation des factures](https://docs.stripe.com/tax/customer-locations.md#finalizing-invoices-with-finalization-failures). Davantage d’informations à propos de la [finalisation des factures](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#finalized) sont disponibles dans le guide de présentation générale des factures.
  - Inspectez le champ [last_finalization_error](https://docs.stripe.com/api/invoices/object.md#invoice_object-last_finalization_error) de l’objet Invoice pour déterminer la cause de l’erreur.
  - Si vous utilisez Stripe Tax, vérifiez le champ [automatic_tax](https://docs.stripe.com/api/invoices/object.md#invoice_object-automatic_tax) de l’objet Invoice.
  - Si `automatic_tax[status]=requires_location_inputs`, la facture ne peut pas être finalisée et les paiements ne sont pas perçus. Prévenez votre client et collectez la [localisation du client](https://docs.stripe.com/tax/customer-locations.md) demandée.
  - Si `automatic_tax[status]=failed` s’affiche, réessayez la requête plus tard. |
| `invoice.payment_failed`          | Le paiement d’une facture a échoué. L’état du PaymentIntent passe à `requires_action`. L’état de l’abonnement passe à `incomplete`. En cas d’échec de paiement, plusieurs actions sont possibles&nbsp;:

  - Prévenez votre client.
  - Si vous utilisez des PaymentIntents, recueillez de nouvelles données de paiement et [confirmez le PaymentIntent](https://docs.stripe.com/api/payment_intents/confirm.md).
  - Mettez à jour le [moyen de paiement par défaut](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-default_payment_method) de l’abonnement.
  - Envisagez d’activer les relances [Smart Retries](https://docs.stripe.com/billing/revenue-recovery/smart-retries.md).                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `invoice.payment_action_required` | Envoyé lorsque la facture nécessite une authentification du client. Découvrez comment gérer un abonnement quand une [action est requise](https://docs.stripe.com/billing/subscriptions/overview.md#requires-action) pour la facture.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |

## Suivre les abonnements actifs

Les abonnements nécessitent une coordination entre votre site et Stripe&nbsp;: le succès ou l’échec des paiements récurrents d’un client détermine s’il peut continuer à accéder à votre produit ou service.

Dans une intégration type, vous stockez les identifiants de vos clients et une valeur d’horodatage associée qui représente la date d’expiration de l’accès du client sur votre site lorsqu’un client s’abonne. Lorsque le client se connecte, vous pouvez vérifier si l’horodatage est toujours dans le futur. Si c’est le cas lors de la connexion du client, le compte est actif et le client doit toujours avoir accès au service.

Lors du [renouvellement](https://docs.stripe.com/billing/subscriptions/overview.md#subscription-lifecycle) de l’abonnement, Stripe facture le client et tente de percevoir le paiement en [débitant automatiquement](https://docs.stripe.com/invoicing/automatic-charging.md) le moyen de paiement enregistré ou [en envoyant la facture par e-mail](https://docs.stripe.com/invoicing/integration.md#accept-invoice-payment) aux clients. Stripe informe votre site de l’état de la facture par l’envoi d’un événement de webhook&nbsp;:

1. Votre site reçoit un événement `invoice.paid`.

   - Lors du débit automatique d’un moyen de paiement, votre site reçoit d’abord un événement `invoice.upcoming` sur l’[endpoint de votre webhook](https://docs.stripe.com/webhooks.md) configuré quelques jours avant le renouvellement. Vous pouvez écouter cet événement pour ajouter des [postes supplémentaires](https://docs.stripe.com/billing/invoices/subscription.md#adding-upcoming-invoice-items) à la facture à venir. En présence du paramètre `collection_method=send_invoice`, Stripe n’envoie pas d’événement `invoice.upcoming`.

1. Votre application trouve le client pour lequel le paiement a été effectué.

1. Votre application met à jour la date d’expiration de l’accès du client dans votre base de données sur la date à venir appropriée (plus un ou deux jour(s) de marge).

## Capturer les changements d’état des abonnements

Assurez-vous que votre intégration surveille et gère correctement les changements d’état des abonnements décrits dans le tableau suivant.

Certaines modifications d’état requièrent une attention particulière&nbsp;:

- Quelques jours avant la fin de la période d’essai et le passage de l’abonnement de l’état `trialing` à `active`, vous recevez un événement `customer.subscription.trial_will_end`. À la réception de cet événement, vérifiez qu’un moyen de paiement est défini pour le client afin de pouvoir le facturer. Si vous le souhaitez, vous pouvez prévenir le client qu’il va être débité.

- Lorsqu’un abonnement bascule à l’état `past_due`, prévenez votre client directement et demandez-lui de mettre ses données de paiement à jour. Stripe propose plusieurs fonctionnalités pour automatiser ce processus. Reportez-vous à la page consacrée au [recouvrement de revenus](https://docs.stripe.com/billing/revenue-recovery.md).

- Lorsqu’un abonnement passe à l’état `canceled` ou `unpaid`, révoquez l’accès à votre produit.

| État                 | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `trialing`           | L’abonnement est actuellement en période d’essai et vous pouvez fournir votre produit à votre client en toute sécurité. L’abonnement passe automatiquement à l’état `active` lorsqu’un client effectue son premier paiement.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `active`             | L’abonnement est en règle. Pour les abonnements `past_due`, le paiement de la dernière facture associée ou sa mise en impayé fait passer l’abonnement à l’état `active`. Notez que `active` n’indique pas que toutes les factures en cours ont été réglées. Vous pouvez laisser d’autres factures ouvertes, les mettre en impayé ou les annuler.                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `incomplete`         | Le client doit effectuer un paiement dans les 23&nbsp;heures suivant la création de l’abonnement pour l’activer. Ou une [action est requise](https://docs.stripe.com/billing/subscriptions/webhooks.md#requires-action) pour le paiement, telle que l’authentification du client. Les abonnements peuvent également être à l’état `incomplete` si un paiement est en attente et que l’état du PaymentIntent est défini sur `processing`.                                                                                                                                                                                                                                                                                                                                    |
| `incomplete_expired` | Le paiement initial de l’abonnement a échoué et le client n’a pas effectué de paiement dans les 23&nbsp;heures suivant la création de l’abonnement. Ces abonnements ne facturent pas les clients. Cet état vous permet de suivre les clients qui n’ont pas réussi à activer leur abonnement.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `past_due`           | Le paiement de la dernière facture *finalisée* a échoué ou n’a pas été tenté. L’abonnement continue de générer des factures. Les [paramètres d’abonnement](https://dashboard.stripe.com/settings/billing/automatic) de votre Dashboard déterminent le prochain état de l’abonnement. Si la facture reste impayée après toutes les tentatives de [relances intelligentes](https://docs.stripe.com/billing/revenue-recovery/smart-retries.md), vous pouvez configurer l’abonnement pour qu’il passe à `canceled`, `unpaid` ou reste à `past_due`. Pour réactiver l’abonnement, demandez à votre client de régler la facture la plus récente. L’état de l’abonnement devient `active`, que le paiement soit effectué avant ou après la date d’échéance de la dernière facture. |
| `canceled`           | L’abonnement a été annulé. Lors de l’annulation, l’encaissement automatique de toutes les factures impayées est désactivé (`auto_advance=false`). Cet état est définitif et ne peut pas être mis à jour.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `unpaid`             | La dernière facture n’a pas été réglée, mais l’abonnement reste actif. La dernière facture reste ouverte et les factures continuent d’être générées, mais aucune tentative de paiement n’est effectuée. Révoquez l’accès à votre produit lorsque l’abonnement passe à l’état `unpaid`, car des tentatives de paiement ont déjà été effectués à plusieurs reprises lorsque qu’il était à l’état `past_due`. Pour passer l’abonnement à l’état `active`, la facture la plus récente doit être réglée avant sa date d’échéance.                                                                                                                                                                                                                                                |
| `paused`             | L’abonnement a terminé sa période d’essai sans moyen de paiement par défaut et le paramètre [trial_settings.end_behavior.missing_payment_method](https://docs.stripe.com/billing/subscriptions/trials/free-trials.md#create-free-trials-without-payment) est défini sur `pause`. Les factures ne sont plus créées pour l’abonnement. Après avoir associé un moyen de paiement par défaut au client, vous pouvez [reprendre l’abonnement](https://docs.stripe.com/billing/subscriptions/trials/free-trials.md#resume-a-paused-subscription).                                                                                                                                                                                                                                 |

## Endpoints de webhook et factures

Enregistrez un endpoint de webhook pour garder une trace des états de la facture. L’intégration de vos abonnements dépend de la finalisation des factures et de la gestion appropriées des échecs de finalisation.

Lorsque vous activez l’[encaissement automatique](https://docs.stripe.com/invoicing/integration/automatic-advancement-collection.md), Stripe finalise automatiquement la [facture](https://docs.stripe.com/billing/invoices/subscription.md) et lance son encaissement automatique.

- Si Stripe ne reçoit pas de réponse positive à `invoice.created`, nous retardons la finalisation de toutes les factures avec l’[encaissement automatique](https://docs.stripe.com/invoicing/integration/automatic-advancement-collection.md) de 72&nbsp;heures au maximum, à l’exception de celles pour lesquelles vous avez [défini une date/heure de finalisation planifiée](https://docs.stripe.com/invoicing/scheduled-finalization.md).
- Pour répondre correctement à `invoice.created`, il faut gérer tous les endpoints de webhook configurés pour votre compte, ainsi que les endpoints de webhook de toutes les plateformes auxquelles vous vous êtes connecté. Les endpoints de webhook configurés dans une [organisation](https://docs.stripe.com/get-started/account/orgs.md) ne sont pas pris en compte. Bien que vous puissiez écouter `invoice.created` au niveau de l’organisation, une réponse positive n’affecte pas la finalisation de la facture lors de l’utilisation du recouvrement automatique.
- Mettre à jour un abonnement pour tenter des paiements en mode synchrone (sur la facture initiale et certaines mises à jour) n’entraîne pas ce délai.
- L’échec de la finalisation de la facture empêche l’encaissement du paiement correspondant. Assurez-vous d’écouter l’événement `invoice.finalization_failed` dans votre endpoint de webhook.

### Événements webhook liés à la finalisation des factures

Voir la liste complète des [types d’événements de facturation](https://docs.stripe.com/api/events/types.md#event_types-invoice.created).

| Événement                     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `invoice.created`             | La facture a été créée et peut être finalisée. Consultez la documentation pour en savoir plus sur la [finalisation des factures](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#finalized).
  - Répondez à la notification en envoyant une requête à l’API [de finalisation des factures](https://docs.stripe.com/api/invoices/finalize.md).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `invoice.finalized`           | La facture a été finalisée et est prête à être payée.
  - Vous pouvez envoyer la facture au client. Renseignez-vous sur la [finalisation des factures](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#finalized).
  - Selon vos paramètres, Stripe débite automatiquement le moyen de paiement par défaut ou tente un encaissement. Renseignez-vous sur les [e-mails post-finalisation](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#emails).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `invoice.finalization_failed` | La facture n’a pas pu être finalisée. Reportez-vous à la page consacrée à la [gestion des échecs de finalisation des factures](https://docs.stripe.com/tax/customer-locations.md#finalizing-invoices-with-finalization-failures). Davantage d’informations à propos de la [finalisation des factures](https://docs.stripe.com/invoicing/integration/workflow-transitions.md#finalized) sont disponibles dans le guide de présentation générale des factures.
  - Inspectez le champ [last_finalization_error](https://docs.stripe.com/api/invoices/object.md#invoice_object-last_finalization_error) de l’objet Invoice pour déterminer la cause de l’erreur.
  - Si vous utilisez Stripe Tax, vérifiez le champ [automatic_tax](https://docs.stripe.com/api/invoices/object.md#invoice_object-last_finalization_error) de l’objet Invoice.
  - Si `automatic_tax[status]=requires_location_inputs`, la facture ne peut pas être finalisée et les paiements ne sont pas perçus. Prévenez votre client et collectez la [localisation du client](https://docs.stripe.com/tax/customer-locations.md) demandée.
  - Si `automatic_tax[status]=failed`, relancez la requête ultérieurement. |

### Finalisation de facture réussie

Stripe attend une heure après réception d’une réponse de réussite pour l’événement `invoice.created` avant de tenter le paiement. Si nous ne recevons aucune réponse de réussite dans les 72&nbsp;heures, nous tentons de finaliser la facture et de l’envoyer.

Si vous souhaitez traiter les factures ponctuelles différemment des factures d’abonnement, cochez la propriété `subscription` dans le corps du webhook. Ceci permet d’indiquer si la facture a été créée pour un abonnement.

En mode production, si votre endpoint de webhook ne renvoie pas de réponse correcte, Stripe continue de tenter la notification de webhook pendant 3&nbsp;jours au maximum, avec un allongement exponentiel des délais. Dans un environnement de test, nous procédons à trois&nbsp;tentatives sur une période de quelques heures. Pendant ce temps, nous ne tenterons pas de débiter le client tant que nous n’aurons pas reçu une réponse positive. Nous vous enverrons également un e-mail en cas d’échec du webhook.

Ce comportement s’applique à tous les endpoints de webhook définis sur votre compte, y compris les cas où une [application Stripe Connect](https://stripe.com/works-with) ou un service tiers rencontre des problèmes pour gérer les webhooks entrants.

### Échec de la finalisation de facture

Lorsque Stripe n’est pas en mesure de finaliser une facture, il envoie un [événement](https://docs.stripe.com/api/events/types.md#event_types-invoice.finalization_failed) `invoice.finalization_failed` à votre endpoint de webhook. Un abonnement reste actif lorsqu’une facture ne peut pas être finalisée, ce qui signifie que l’utilisateur reste en capacité d’accéder à votre produit tandis que vous ne pouvez pas percevoir ses paiements. Veillez à prendre les mesures utiles pour vos factures non finalisées. Vous ne pouvez pas percevoir de paiements pour une facture qui n’a pas été finalisée.

Pour déterminer la raison de l’échec de la finalisation de la facture, inspectez le [champ](https://docs.stripe.com/api/invoices/object.md#invoice_object-last_finalization_error) `last_finalization_error` de l’objet Invoice, qui vous fournira davantage d’informations sur l’échec et vous renseignera sur la manière d’y remédier.

Si vous utilisez Stripe Tax, vérifiez si le champ [automatic_tax.status](https://docs.stripe.com/api/invoices/object.md#invoice_object-automatic_tax-status) correspond à `requires_location_inputs`, ce qui signifie que les coordonnées de l’adresse ne sont pas valides ou sont insuffisantes. Si Stripe Tax ne trouve pas de localisation client reconnue, nous ne pouvons pas finaliser la facture. Découvrez comment [gérer les échecs de finalisations de facture](https://docs.stripe.com/tax/customer-locations.md#finalizing-invoices-with-finalization-failures).

## Tests

Pour tester votre endpoint de webhook ou votre [destination d’événement](https://docs.stripe.com/event-destinations.md), choisissez l’une des deux options suivantes&nbsp;:

1. Utilisez un environnement de test pour effectuer des actions qui envoient des événements légitimes à votre destination d’événements. Par exemple, vous pouvez utiliser une [carte de test amenant un paiement à aboutir](https://docs.stripe.com/billing/subscriptions/webhooks.md#cards) pour déclencher l’événement [charge.succeeded](https://docs.stripe.com/api.md#event_types-charge.succeeded).
1. [Déclenchez des événements à l’aide de l’interface de ligne de commande Stripe](https://docs.stripe.com/webhooks.md#test-webhook) ou [via Stripe pour Visual Studio Code](https://docs.stripe.com/stripe-vscode.md#webhooks).

## See also

- [Cycle de vie d’un abonnement](https://docs.stripe.com/billing/subscriptions/overview.md#subscription-lifecycle)
- [Test des abonnements](https://docs.stripe.com/billing/testing.md)
