Passer au contenu principal
Conformément aux exigences de pré-autorisation de la RBI, cette fonctionnalité permet de facturer les clients possédant des cartes de crédit indiennes en utilisant des mandats Stripe. Une fois un mandat actif, Metronome l’utilisera pour les prélèvements éligibles hors session.

Configuration

1. Collecter le moyen de paiement du client et créer le mandat via SetupIntent

Lors de la collecte de la carte de l’utilisateur en session, créez un mandat à l’aide d’un SetupIntent Stripe. L’utilisateur effectue l’authentification lors de la confirmation, et Stripe crée le mandat pour ce moyen de paiement.
curl https://api.stripe.com/v1/setup_intents \
  -u sk_test_...: \
  -d customer=cus_123 \
  -d payment_method=pm_123 \
  -d confirm=true \
  -d "payment_method_options[card][mandate_options][amount_type]"=maximum \
  -d "payment_method_options[card][mandate_options][amount]"=500000 \
  -d "payment_method_options[card][mandate_options][currency]"=inr \
  -d "payment_method_options[card][mandate_options][interval]"=sporadic \
  -d "payment_method_options[card][mandate_options][reference]"=AUTO_RECHARGE_123 \
  -d "payment_method_options[card][mandate_options][start_date]"=1735689600
Pour les clients en facturation par seuil :
  • Définissez interval sur sporadic — les recharges sont déclenchées par un seuil de solde, et non selon une cadence fixe.
  • Définissez amount_type sur maximum — pour prendre en charge des montants de prélèvement variables.
  • Définissez amount sur une valeur suffisamment élevée — pour tenir compte de la variance des montants de recharge dans le temps.
Pour les abonnements et frais récurrents (par exemple PayGo mensuel) :
  • Définissez interval sur la récurrence correspondante (par exemple month).
  • Définissez amount_type sur fixed si le frais récurrent est connu, ou maximum s’il est variable.
  • Définissez amount sur le frais récurrent connu ou un maximum suffisamment élevé.

2. Attendre que le mandat devienne actif

Un mandat peut rester en état pending jusqu’à 30 minutes après sa création. Vous pouvez vérifier son état de deux façons :
  • Écoutez le webhook mandate.updated de Stripe et attendez que status devienne active.
  • Récupérez le mandat par ID depuis le SetupIntent et interrogez-le jusqu’à ce qu’il soit active.
Si le mandat passe à l’état inactive, il ne peut pas être utilisé. Le client devra autoriser un nouveau mandat.

3. Créer et mapper le champ personnalisé du mandat

Sur le contrat Metronome, créez un champ personnalisé (par exemple stripe_mandate_id). Via l’interface de mappage des entités, mappez ce champ personnalisé de contrat au champ Stripe invoice.payment_settingsdefault_mandate.

4. Provisionner le client dans Metronome

Créez le contrat Metronome. Renseignez le champ personnalisé stripe_mandate_id avec l’ID du mandat créé à l’étape 1. Toutes les factures envoyées à Stripe tenteront d’attacher ce mandat.

5. Écouter le webhook action_required

Après la création de la facture avec le mandat associé, le paymentIntent peut passer à l’état action_required. Stripe émettra un webhook invoice.payment_action_required.

6. Confirmer le paiement

  • Si le client approuve le prélèvement, le paiement réussit et le solde est libéré.
  • Si le client ne répond pas ou si le mandat devient inactif, le paiement échoue et entre dans le flux normal d’échec. Un nouveau mandat doit être collecté et activé avant que les futures tentatives de recharge puissent réussir.

Limitations

  • Les mandats doivent être créés et gérés entièrement dans Stripe. Metronome n’expose pas d’API pour interagir avec les mandats autre que le renvoi de la valeur du champ personnalisé défini.
  • Les mandats doivent être configurés via un SetupIntent puisque tous les prélèvements, y compris le premier, sont hors session.
  • Metronome ne gère pas les événements du cycle de vie des mandats. Les échecs de paiement sont remontés via le webhook et le chemin d’échec habituels. Il est de votre responsabilité de mettre à jour le mandat dans Stripe et de prendre les mesures appropriées avant de réessayer.

Documentation pertinente