Paiements récurrents en IndeBêta
Comment mettre à jour une intégration afin de prendre en charge les mandats électroniques RBI.
La Reserve Bank of India (RBI) a émis une directive (modifiée ultérieurement en décembre 2020 et en mars 2021) qui prévoit des mesures de sécurité supplémentaires pour les paiements récurrents effectués avec des cartes émises en Inde, parmi lesquelles :
- Les banques doivent suivre un processus unique pour enregistrer les titulaires de cartes et créer un mandat électronique, à l’aide d’une authentification par facteur supplémentaire telle que 3D Secure (3DS).
- Les banques doivent alerter les titulaires de carte au moins 24 heures avant les paiements en leur permettant de refuser les transactions.
- Les transactions récurrentes de plus de 15 000 INR (ou équivalent dans une autre devise) nécessitent systématiquement l’authentification par facteur supplémentaire.
Si vous êtes un utilisateur Stripe basé en Inde ou un utilisateur Stripe international (non IN), votre activité est concernée si certains de vos clients utilisent des cartes indiennes pour :
- Paiements hors session
- Objets Subscription ou Invoice dont le paramètre
collection_
est défini surmethod charge_
automatically
Fonctionnement des paiements avec un mandat électronique
Stripe s’est associé à une plateforme partenaire pour prendre en charge l’enregistrement des mandats électroniques et l’envoi de notifications préalables de prélèvement aux clients.
Note
À l’heure actuelle, les mandats électroniques ne sont pas disponibles pour les utilisateurs Stripe au Mexique et au Japon.
En fonction de la manière dont vous avez intégré Stripe, Stripe est susceptible de vous demander des informations supplémentaires pour établir un mandat. Le client doit compléter l’authentification par facteur supplémentaire (3DS) pour enregistrer le mandat.
Les paiements ultérieurs hors session ou les prélèvements automatiques pour un abonnement subissent un changement important. Les clients doivent recevoir une notification préalable de prélèvement indiquant le montant exact au moins 24 heures avant le prélèvement réel. Cette notification contient des informations relatives au paiement et une option pour annuler le mandat. Si le montant du paiement est supérieur à 15 000 INR ou au montant maximal, la notification préalable de prélèvement contient un lien permettant de procéder à l’authentification par facteur supplémentaire (3DS) pour autoriser le paiement.
Étant donné l’intégration de Stripe avec une plateforme partenaire, nous attendons 26 heures à partir de la réception d’une demande de paiement avant de débiter le client (nous ajoutons un délai pour d’éventuels problèmes en aval, d’où la nécessité d’une notification préalable de 26 heures). Cela signifie que Stripe retarde de 26 heures l’encaissement des paiements.
Si vous n’avez pas de mandat dans le cadre d’un paiement hors session, le paiement sera refusé.
Intégration
Les réglementations de la RBI concernent les abonnements qui utilisent collection_
pour débiter des cartes émises en Inde.
Création d’abonnements
Pour apprendre à créer un nouvel abonnement, consultez la page Créer une intégration pour les abonnements.
Recouvrement de revenus d’abonnements
Stripe fournit un certain nombre de fonctions de recouvrement automatisées qui permettent de recouvrer les éventuels paiements en échec. Si vous souhaitez assumer la gestion de ces échecs de paiement, consultez la section Développer votre propre gestion des échecs pour les paiements récurrents. Autrement, vous trouverez ci-après une liste de recommandations.
Note
Les paiements effectués avec des cartes émises en Inde font l’objet d’une seule tentative. Ceci est indépendant de vos paramètres de relance de paiement. Si le paiement par carte émise en Inde échoue, l’état de votre abonnement et celui de votre facture seront tout de même mis à jour en fonction de ce que vous avez configuré dans vos paramètres d’abonnement et d’e-mail pour « En cas d’échec de toutes les tentatives de paiement ».
E-mails 3D Secure
Si aucun mandat n’est associé au moyen de paiement par défaut lors du renouvellement ou de la mise à jour d’un abonnement, Stripe tente d’en créer un. Pour enregistrer le mandat, le client doit compléter l’authentification par facteur supplémentaire (3DS). Activez l’option « Envoyer un lien hébergé par Stripe quand une confirmation du paiement par le client est nécessaire » dans les paramètres d’abonnement et d’e-mail pour inviter vos clients à rouvrir une session et compléter l’authentification, le cas échéant.
Note
Stripe ne tente pas de créer un nouveau mandat si le mandat actuel de l’abonnement est à l’état inactive
.
Gérer les échecs de paiement
Nous vous recommandons d’activer l’envoi de notifications à vos clients si le paiement de leur abonnement échoue et que leur abonnement est suspendu. Stripe peut envoyer des e-mails aux clients pour leur demander de mettre à jour les moyens de paiement par carte ayant échoué, si vous activez cette option dans les paramètres d’abonnement et d’e-mail.
Création du mandat
Si vous utilisez Stripe pour créer automatiquement le mandat, les informations relatives au mandat sont renvoyées dans le PaymentIntent sous-jacent de la facture et dans l’objet Charge correspondant, ou dans le SetupIntent si vous créez l’abonnement avec une période d’essai.
Stripe ne renvoie pas d’ID de mandat si au moins l’une des conditions suivantes est remplie :
- La carte n’a pas été émise en Inde.
- La devise du mandat n’est pas prise en charge par l’émetteur ou par le pays du compte Stripe.
- La carte émise en Inde n’est ni une carte Visa ni une carte Mastercard. Stripe ne prend en charge les mandats que pour ces deux marques de cartes.
Stripe prend en charge les mandats en INR pour toutes les entreprises. Les devises suivantes ne sont prises en charge que pour les entreprises internationales (non IN) :
- USD
- EUR
- GBP
- SGD
- CAD
- CHF
- SEK
- AED
- JPY
- NOK
- MYR
- HKD
L’Inde comptant une centaine de banques émettrices, l’adaptation complète aux nouvelles exigences devrait prendre un certain temps. Il se peut que des émetteurs ne prennent pas encore en charge les mandats électroniques pour des devises spécifiques. Dans ce cas, Stripe ne renvoie pas d’ID de mandat.
État du mandat et résolution des problèmes
Si Stripe ne parvient pas à créer un mandat, vous pouvez inviter votre client à utiliser une autre carte ou lui proposer une solution alternative, par exemple en attribuant la valeur send_
au paramètre collection_method de l’objet Subscription.
De plus, un mandat précédemment actif peut devenir inactif, par exemple si le client l’annule. Dans ce cas, le mandat passe à l’état inactive
et Stripe envoie un événement mandate.
.
Pour en savoir plus sur la réception de webhooks, consultez la section Procédure à suivre pour recevoir des webhooks.
Mises à jour d’abonnements
La notification préalable de prélèvement envoyée par la banque au titulaire de la carte indique, au minimum, les renseignements suivants : nom de l’entreprise, montant de la transaction, date ou heure du débit, numéro de référence du mandat et motif du débit. Veillez à ce que les informations de votre mandat correspondent au montant réellement facturé au client, afin d’éviter toute confusion ou tout refus.
Si vous utilisez Stripe pour créer automatiquement des mandats pour vos abonnements et que vous souhaitez mettre à jour un abonnement, nous vous recommandons d’inviter votre client à rouvrir une session pour annuler l’abonnement d’origine. Cela permet de créer un nouvel abonnement dans les scénarios suivants et de créer un mandat qui reflète fidèlement les informations de l’abonnement :
- Modification de la période de facturation d’un abonnement
- Mise à jour d’un abonnement pour lequel le client souhaite éviter d’avoir à autoriser le paiement à chaque renouvellement. Pour information, le mandat créé par Stripe est défini sur
amount_
par défaut. Pour facturer au client une somme supérieure au montant maximal, il est nécessaire de spécifiertype=maximum amount_
. Le client sera cependant invité à autoriser le paiement pour les montants supérieurs à la valeurtype=maximum mandate_
ou à 15 000 INR (selon le montant le moins élevé des deux).options[amount]
Exemples :
- Si
amount_
ettype=maximum amount=100000
sont présents, le client devra s’authentifier pour les montants supérieurs à 1 000 INR. - Si
amount=2000000
est présent, le client devra s’authentifier pour les montants supérieurs à 15 000 INR.
Notification préalable de prélèvement
Une fois que le PaymentIntent hors session est confirmé, la banque émettrice envoie au client la notification préalable de prélèvement. Le PaymentIntent passe à l’état processing
pendant toute la durée de la notification préalable de prélèvement (c’est-à-dire 26 heures) et il ne peut pas être annulé.
{ "object": "payment_intent", ... "processing": { "card": { "customer_notification": { "approval_requested": true, "completes_at": 1677307005 } }, "type": "card" }, ... "status": "processing", ... }
Si processing.card.customer_notification.approval_requested est défini sur true
, le client doit authentifier le paiement à l’aide de la notification préalable de prélèvement envoyée par la banque émettrice.
L’attribut processing.card.customer_notification.completes_at spécifie l’heure à laquelle Stripe tente de débiter la carte. Si le traitement du paiement nécessite l’approbation du client, celui-ci doit authentifier le paiement avant l’heure spécifiée.
Codes d’erreur et de refus
Nous renvoyons des codes d’erreur dans les situations suivantes :
Code d’erreur | Description |
---|---|
payment_ | Toute tentative de paiement récurrent à l’aide d’un mandat inactif renvoie ce code. Pour éviter cela, vous pouvez vérifier l’état du mandat avant d’effectuer une tentative de prélèvement. |
india_ | Toute tentative de paiement récurrent à l’aide d’un mandat annulé renvoie ce code. Cela peut se produire lorsque nous ignorions qu’un mandat avait été annulé. |
processing_ | La détection d’une erreur de traitement (généralement temporaire) renvoie ce code. |
En ce qui concerne les mandats électroniques, certains codes de refus peuvent avoir une signification plus précise que dans les cas d’usage courants :
Code de refus de paiement | Description |
---|---|
transaction_ | Toute tentative de paiement ultérieure, alors que le client a suspendu les autorisations de prélèvement automatique ou qu’il n’authentifie pas le paiement lorsqu’il y est invité, renvoie ce code. |
Tests
Vous pouvez utiliser ces numéros de carte de test pour simuler différents scénarios.
En mode test, un PaymentIntent hors session met environ 15 minutes à quitter l’état processing
. Pendant une session, le PaymentIntent d’un paiement initial n’est jamais à l’état processing
.
Limitations
Notez les restrictions suivantes :
- Stripe tente de créer automatiquement des mandats pour les abonnements créés après le 1er octobre 2021 uniquement. Pour les abonnements dont la création est antérieure à cette date, annulez et créez un nouvel abonnement pour vous assurer qu’un mandat est créé.
- Vous ne pouvez pas créer de mandat en utilisant les API Charges et Sources.
- Il n’est pas possible de transmettre un mandat existant à un abonnement.
- Vous ne pouvez pas annuler ou mettre à jour un mandat.