Paiements récurrents en Inde
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_method
est défini surcharge_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 ne présentez pas de mandat pour un paiement hors session, il est probable que l’émetteur de la carte refuse le paiement.
Intégration
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_intent_mandate_invalid | 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_recurring_payment_mandate_canceled | 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_error | 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_not_approved | 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
.
Numéro de carte bancaire de test | Scénario |
---|---|
Simule la configuration et le renouvellement d’un mandat. | |
Simule la réception d’une notification préalable de prélèvement par un titulaire de carte choisissant d’annuler ou de suspendre la transaction, indépendamment du montant du mandat. | |
Simule l’échec de l’envoi d’une notification préalable de prélèvement pour un paiement hors session par la banque émettrice au titulaire de la carte, indépendamment du montant du mandat. | |
Simule l’annulation d’un mandat par un titulaire de carte, indépendamment du montant du mandat. |
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. Si vous souhaitez créer un mandat, vous devez utiliser les API Payment Intents ou Setup Intents.
- Il n’est pas possible de transmettre un mandat existant à un abonnement.
- Vous ne pouvez pas annuler ou mettre à jour un mandat.