> ## Documentation Index
> Fetch the complete documentation index at: https://docs.metronome.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Prise en charge des e-mandats indiens pour les factures Stripe

> Facturez les cartes de crédit indiennes en utilisant des mandats Stripe conformes à la RBI.

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.

```bash theme={null}
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_settings` → `default_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`](https://docs.stripe.com/api/events/types#event_types-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

* [Guide Stripe pour les e-mandats RBI](https://docs.stripe.com/india-recurring-payments)
