# Configurer un abonnement avec le prélèvement automatique canadien

Comment créer et facturer un abonnement avec les prélèvements automatiques canadiens.

Avant de configurer les prélèvements automatiques (PAD) au Canada pour les abonnements, consultez la note de disponibilité suivante.

> Le mode abonnement n’est pas encore pris en charge dans [Checkout](https://docs.stripe.com/payments/checkout.md). Pour être informé de l’accès anticipé lorsque cette fonctionnalité sera disponible, [contactez-nous](mailto:payment-methods-feedback@stripe.com?subject=PADs%20Subscription%20Mode%20User%20Interest) pour rejoindre la liste d’attente.

## Créer un produit et un tarif [Dashboard]

Les [produits](https://docs.stripe.com/api/products.md) correspondent aux articles ou services que vous vendez. Les [tarifs](https://docs.stripe.com/api/prices.md) définissent le montant et la fréquence des paiements facturés pour un produit. Le tarif prend en compte la valeur du produit, la devise que vous acceptez et s’il s’agit d’un paiement ponctuel ou récurrent. Si vous n’avez que quelques produits et tarifs, créez-les et gérez-les dans le Dashboard.

Ce guide prend comme exemple un service de banque d’images qui débite ses clients d’un montant de 15 CAD pour un abonnement mensuel. Pour modéliser ceci&nbsp;:

1. Go to the [Products](https://dashboard.stripe.com/products?active=true) page and click **Create product**.
2. Saisissez un **Nom** pour le produit. Vous pouvez éventuellement ajouter une **Description** et télécharger une image du produit.
3. Select a **Product tax code**. Learn more about [product tax codes](https://docs.stripe.com/tax/tax-codes.md).
4. Sélectionnez **Récurrent**. Saisissez ensuite **** pour le prix et sélectionnez **** comme devise.
5. Choose whether to **Include tax in price**. You can either use the default value from your [tax settings](https://dashboard.stripe.com/test/settings/tax) or set the value manually. In this example, select **Auto**.
6. Pour **Période de facturation**, sélectionnez **Mensuel**.
7. Click **More pricing options**. Then select **Flat rate** as the pricing model for this example. Learn more about [flat rate](https://docs.stripe.com/products-prices/pricing-models.md#flat-rate) and other [pricing models](https://docs.stripe.com/products-prices/pricing-models.md).
8. Add an internal **Price description** and [Lookup key](https://docs.stripe.com/products-prices/manage-prices.md#lookup-keys) to organize, query, and update specific prices in the future.
9. Cliquez sur **Suivant**. Cliquez ensuite sur **Ajouter un produit**.

Après avoir créé le produit et le tarif, enregistrez l’ID de tarif de manière à pouvoir l’utiliser dans les étapes ultérieures. La page des tarifs affiche l’ID dont le format est similaire à ce qui suit : `price_G0FvDp6vZvdwRZ`.

## Créer l'abonnement [Côté serveur]

> Pour créer un abonnement avec une période d’essai, consultez la documentation relative aux [périodes d’essai des abonnements](https://docs.stripe.com/billing/subscriptions/acss-debit.md#trial-periods).

Créez un [abonnement](https://docs.stripe.com/api/subscriptions.md) avec le tarif et le client à l’état `incomplete` en fournissant le paramètre [payment_behavior](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-payment_behavior) défini sur la valeur `default_incomplete`.

#### Accounts&nbsp;v2

#### curl

```bash
curl https://api.stripe.com/v1/subscriptions \
  -u <<YOUR_SECRET_KEY>>: \
  -d "customer_account"="{{CUSTOMER_ACCOUNT_ID}}" \
  -d "items[0][price]"="price_F52b2UdntfQsfR" \
  -d "payment_behavior"="default_incomplete" \
  -d "expand[0]"="latest_invoice.payment_intent"
```

#### Customers&nbsp;v1

#### curl

```bash
curl https://api.stripe.com/v1/subscriptions \
  -u <<YOUR_SECRET_KEY>>: \
  -d "customer"="{{CUSTOMER_ID}}" \
  -d "items[0][price]"="price_F52b2UdntfQsfR" \
  -d "payment_behavior"="default_incomplete" \
  -d "expand[0]"="latest_invoice.payment_intent"
```

La réponse inclut la première [facture](https://docs.stripe.com/api/invoices.md) de l’*abonnement* (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). Celui-ci contient les paiements de la facture, qui inclut un PaymentIntent par défaut que Stripe a généré pour cette facture et la clé secrète de confirmation que vous pouvez envoyer au client afin qu’il finalise le processus de paiement en toute sécurité au lieu de lui transmettre la totalité de l’objet PaymentIntent. Renvoyez le `latest_invoice.confirmation_secret.client_secret` au front-end pour finaliser le paiement.

## Recueillir les informations du moyen de paiement et la confirmation du mandat [Côté client]

Pour utiliser les prélèvements automatiques, vous devez obtenir l’autorisation de votre client pour les prélèvements ponctuels et récurrents au moyen d’un accord de prélèvement automatique (voir la section [Mandats de prélèvement automatique](https://docs.stripe.com/payments/acss-debit.md#mandates)). L’objet [Mandate](https://docs.stripe.com/api/mandates.md) enregistre cet accord et cette autorisation.

Stripe configure automatiquement les mandats d’abonnement et de *facture* pour vous. Votre client n’a besoin d’accepter les conditions du mandat qu’une seule fois, les frais d’abonnement ultérieurs seront appliqués sans qu’aucune autre intervention ne soit nécessaire.

Lorsqu’un client clique pour payer avec Canadian pre-authorized debit, nous vous recommandons d’utiliser Stripe.js pour soumettre le paiement à Stripe. [Stripe.js](https://docs.stripe.com/payments/elements.md) est notre bibliothèque JavaScript de base pour créer les tunnels de paiement&nbsp;: elle gère automatiquement les opérations complexes d’intégration et vous permettra de facilement étendre votre intégration à d’autres moyens de paiement par la suite.

Intégrez le script Stripe.js à votre page de paiement en l’ajoutant entre les balises `head` de votre fichier HTML.

```html
<head>
  <title>Checkout</title>
  <script src="https://js.stripe.com/endive/stripe.js"></script>
</head>
```

Créez une instance de Stripe.js avec le code JavaScript suivant sur votre page de paiement.

```javascript
// Set your publishable key. Remember to change this to your live publishable key in production!
// See your keys here: https://dashboard.stripe.com/apikeys
const stripe = Stripe('<<YOUR_PUBLISHABLE_KEY>>');
```

Plutôt que d’envoyer la totalité de l’objet PaymentIntent au client, utilisez sa *clé secrète* (The client secret is a unique key returned from Stripe as part of a PaymentIntent. This key lets the client access important fields from the PaymentIntent (status, amount, currency) while hiding sensitive ones (metadata, customer)) provenant de l’étape précédente. Il ne s’agit pas de vos clés API qui authentifient les requêtes de l’API de Stripe.

Le clé secrète du client doit néanmoins être manipulée avec précaution, car elle peut permettre de finaliser le paiement. Ne l’enregistrez pas dans les logs, ne l’intégrez pas dans des URL et ne l’exposez à personne d’autre que le client.

Utilisez [stripe.confirmAcssDebitPayment](https://docs.stripe.com/js/payment_intents/confirm_acss_debit_payment) pour collecter les informations du compte bancaire et effectuer la vérification, confirmer le mandat et lancer le paiement lorsque l’utilisateur envoie le formulaire. Il est nécessaire d’inclure l’adresse électronique et le nom du client dans la propriété `billing_details` du paramètre `payment_method` pour créer un moyen de paiement pour le prélèvement préautorisé.

```javascript
const form = document.getElementById('payment-form');
const accountholderName = document.getElementById('accountholder-name');
const email = document.getElementById('email');
const submitButton = document.getElementById('submit-button');
const clientSecret = submitButton.dataset.secret;

form.addEventListener('submit', async (event) => {
  event.preventDefault();

  const {paymentIntent, error} = await stripe.confirmAcssDebitPayment(
    clientSecret,
    {
      payment_method: {
        billing_details: {
          name: accountholderName.value,
          email: email.value,
        },
      },
    }
  );

  if (error) {
    // Inform the customer that there was an error.
    console.log(error.message);
  } else {
      // Handle next step based on PaymentIntent's status.
      console.log("PaymentIntent ID: " + paymentIntent.id);
      console.log("PaymentIntent status: " + paymentIntent.status);
  }
});
```

Stripe.js charge ensuite une interface utilisateur du modal sur la page qui gère la collecte et la vérification des informations du compte bancaire, présente un accord de mandat hébergé et collecte l’autorisation.

> `stripe.confirmAcssDebitPayment` peut prendre plusieurs secondes. Pendant ce temps, bloquez le renvoi de votre formulaire et affichez un indicateur d’attente tel qu’une icône de chargement. Si vous recevez une erreur, montrez-la au client, réactivez le formulaire et masquez l’indicateur d’attente.

Si le client termine le processus de vérification instantanée, l’abonnement devient automatiquement `active`. Sinon, consultez la section suivante pour gérer la vérification à l’aide de microversements pendant que l’abonnement reste `incomplete`.

## Vérifier le compte bancaire à l'aide de microversements [Côté client]

> Les clients disposent de 10&nbsp;jours pour vérifier les micro-virements pour un abonnement, au lieu des 23&nbsp;heures normalement accordées dans le [cycle de vie de l’abonnement](https://docs.stripe.com/billing/subscriptions/overview.md#subscription-lifecycle). Cependant, cette expiration ne peut pas être postérieure à la [date de la période de facturation](https://docs.stripe.com/billing/subscriptions/acss-debit.md#billing-cycle).

Tous les clients ne peuvent pas vérifier instantanément le compte bancaire. Cette étape ne s’applique que si votre client a choisi de se désinscrire du flux de vérification instantanée dans l’étape précédente.

Dans ce cas, Stripe envoie automatiquement deux microversements sur le compte bancaire du client. Ces versements sont effectués sous un à deux jours ouvrables avant d’apparaître sur le relevé en ligne du client et sont accompagnés de libellés de relevé bancaire contenant `ACCTVERIFY`.

Le résultat de l’appel du moyen de paiement `stripe.confirmAcssDebitPayment` dans la configuration précédente est un PaymentIntent avec l’état `requires_action`. Le PaymentIntent contient un champ `next_action` qui contient des informations utiles pour effectuer la vérification.

Stripe informe votre client de la date à laquelle les versements devraient arriver en envoyant un message à [l’adresse e-mail de facturation](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-billing_details-email). L’e-mail inclut un lien vers la page de vérification hébergée par Stripe où il peut confirmer les montants des versements et effectuer la vérification.

Le nombre de tentatives de vérification infructueuses est limité à trois. Si cette limite est dépassée, le compte bancaire ne peut plus être vérifié. Par ailleurs, les vérifications par micro-versements expirent au bout de 10&nbsp;jours. Si les micro-versements ne sont pas vérifiés dans ce délai, le PaymentIntent revient à l’état exigeant de nouvelles informations de moyen de paiement. Des messages clairs expliquant ce que sont ces micro-versements et comment vous les utilisez peuvent aider vos clients à éviter les problèmes de vérification.

### Facultatif&nbsp;: un e-mail et une page de vérification personnalisés

Si vous avez préalablement choisi d’envoyer des [notifications personnalisées par e-mail](https://docs.stripe.com/payments/acss-debit.md#mandate-and-debit-notification-emails), vous devez à la place envoyer un e-mail à votre client. Pour ce faire, vous pouvez utiliser l’URL `verify_with_microdeposits[hosted_verification_url]` dans l’objet `next_action` pour que votre client puisse effectuer le processus de vérification.

Si vous envoyez des e-mails personnalisés et ne souhaitez pas utiliser la page de vérification hébergée par Stripe, vous pouvez créer un formulaire sur votre site afin que vos clients vous communiquent ces montants et vérifier le compte bancaire à l’aide de [Stripe.js](https://docs.stripe.com/js/payment_intents/verify_microdeposits_for_payment).

```javascript
stripe.verifyMicrodepositsForPayment(clientSecret, {
  amounts: [32, 45],
});
```

## Configurer le moyen de paiement par défaut [Serveur]

Vous disposez à présent d’un *abonnement* (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) actif appartenant à un client avec un moyen de paiement défini, mais ce dernier ne sera pas automatiquement utilisé pour les futurs paiements. À l’avenir, si vous souhaitez débiter automatiquement ce moyen de paiement, utilisez un consommateur de *webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) pour écouter l’événement `invoice.payment_succeeded` pour votre nouvel abonnement et pour définir le moyen de paiement par défaut.

#### Ruby

```ruby

# Don't put any keys in code. See https://docs.stripe.com/keys-best-practices.
# Find your keys at https://dashboard.stripe.com/apikeys.
client = Stripe::StripeClient.new('<<YOUR_SECRET_KEY>>')

if event.type == 'invoice.payment_succeeded'
  invoice = event.data.object
  if invoice['billing_reason'] == 'subscription_create'
    subscription_id = invoice['parent']['subscription_details']['subscription']

    # This example assumes you're using the default PaymentIntent that Stripe generated for the invoice.
    invoice_payments = client.v1.invoice_payments.list({invoice: invoice['id']})
    payment_intent_id = invoice_payments.data[0].payment.payment_intent

    # Retrieve the payment intent used to pay the subscription
    payment_intent = client.v1.payment_intents.retrieve(payment_intent_id)

    # Set the default payment method
    client.v1.subscriptions.update(
      subscription_id,
      default_payment_method: payment_intent.payment_method
    )
  end
end
```

## Gérer l'état de l'abonnement [Côté client]

Un abonnement peut devenir `active` alors que son premier paiement est encore en cours de traitement, n’utilisez donc pas uniquement le statut de l’abonnement pour déterminer si le paiement a abouti. Avant de fournir des biens ou des services, attendez l’événement `invoice.paid` ou confirmez que le *PaymentIntent* (The Payment Intents API tracks the lifecycle of a customer checkout flow and triggers additional authentication steps when required by regulatory mandates, custom Radar fraud rules, or redirect-based payment methods) sous-jacent a le statut `succeeded`, et vérifiez que l’abonnement associé est `active`.

Lorsque des paiements échouent, le statut passe au **Statut de l’abonnement** configuré dans vos [paramètres de recouvrement automatique](https://docs.stripe.com/invoicing/automatic-collection.md). Informez le client après un échec et [débitez-le avec un autre moyen de paiement](https://docs.stripe.com/billing/subscriptions/overview.md#requires-payment-method).

> Les paiements par prélèvement automatique ne font jamais l’objet de nouvelles tentatives automatiques, même si vous avez configuré un [calendrier de relances](https://docs.stripe.com/invoicing/automatic-collection.md) pour d’autres moyens de paiement.

## Tester votre intégration

### Tokens de moyens de paiement de test

Utilisez des tokens de moyens de paiement de test pour tester votre intégration sans avoir à saisir manuellement les informations du compte bancaire. Ces tokens contournent les étapes de collecte et de vérification du compte bancaire.

| Token | Scénario |
| --- | --- |
| `pm_acssDebit_success` | Le paiement est effectué immédiatement après l’acceptation du mandat. |
| `pm_acssDebit_noAccount` | Le paiement échoue car aucun compte n’est trouvé. |
| `pm_acssDebit_accountClosed` | Le paiement échoue parce que le compte est clôturé. |
| `pm_acssDebit_insufficientFunds` | Le paiement échoue en raison de fonds insuffisants. |
| `pm_acssDebit_debitNotAuthorized` | Le paiement échoue parce que les débits ne sont pas autorisés. |
| `pm_acssDebit_dispute` | Le paiement est effectué mais déclenche un litige |

### Numéros de comptes de test

Stripe fournit plusieurs numéros de compte test que vous pouvez utiliser pour vous assurer que votre intégration pour les comptes bancaires saisis manuellement sont prêts pour le mode production. Tous les comptes test avec un paiement qui réussit ou échoue automatiquement doivent être vérifiés à l’aide des montants de microversement test ci-dessous avant de pouvoir être effectués.

| Numéro d’établissement | Numéro de transit | Numéro de compte | Scénario |
| --- | --- | --- | --- |
| `000` | `11000` | `000123456789` | Réussite immédiate du paiement après la vérification des microversements. |
| `000` | `11000` | `900123456789` | Réussite du paiement avec un délai de trois minutes après la vérification des microversements. |
| `000` | `11000` | `000222222227` | Échec immédiat du paiement après la vérification des microversements. |
| `000` | `11000` | `900222222227` | Échec du paiement avec un délai de trois minutes après la vérification des microversements. |
| `000` | `11000` | `000666666661` | Échec d’envoi des microversements de vérification. |
| `000` | `11000` | `000777777771` | Échec du paiement, car le montant du paiement a entraîné le dépassement de la limite de volume de paiement hebdomadaire du compte. |
| `000` | `11000` | `000888888881` | Échec du paiement, car son montant dépasse la limite du volume de transactions du compte. |

Pour simuler les réussites ou les échecs de la vérification des comptes bancaires dans un environnement de test, utilisez ces montants représentatifs pour les microversements&nbsp;:

| Valeurs de microversement | Scénario |
| --- | --- |
| `32` et `45` | Vérification du compte réussie. |
| `10` et `11` | Simule le dépassement du nombre de tentatives de vérification autorisé. |
| Toute autre combinaison de montants | Échec de la vérification du compte. |

## Optional: Définition de la période de facturation

Lorsque vous créez un abonnement, le système définit automatiquement le cycle de facturation par défaut. Par exemple, si un client s’abonne à un plan mensuel le 7&nbsp;septembre, il est ensuite facturé le 7 de chaque mois. Certaines entreprises préfèrent définir le cycle de facturation manuellement afin de pouvoir facturer leurs clients conjointement à chaque cycle. L’argument [billing cycle anchor](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-billing_cycle_anchor) vous permet d’effectuer cette opération.

#### Accounts&nbsp;v2

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "customer_account={{CUSTOMERACCOUNT_ID}}" \
  -d "items[0][price]={{PRICE_ID}}" \
  -d billing_cycle_anchor=1611008505
```

#### Customers&nbsp;v1

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "customer={{CUSTOMER_ID}}" \
  -d "items[0][price]={{PRICE_ID}}" \
  -d billing_cycle_anchor=1611008505
```

La définition manuelle du cycle de facturation facture automatiquement au client un montant au prorata pour la période écoulée entre la création de l’abonnement et la date de début du cycle de facturation. Si vous ne souhaitez pas que les clients soient facturés pour cette période, vous pouvez définir l’argument [proration_behavior](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-proration_behavior) sur `none`. Vous pouvez également combiner la date de début du cycle de facturation avec des [périodes d’essai](https://docs.stripe.com/billing/subscriptions/acss-debit.md#trial-periods) pour permettre aux clients d’accéder gratuitement à votre produit et ensuite leur facturer un montant au prorata.

## Optional: Périodes d'essai avant abonnement

Les essais gratuits permettent aux clients d’accéder à votre produit pendant une certaine période sans être facturés. Pour définir une période d’essai, transmettez un horodatage dans [trial_end](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-trial_end).

> Utiliser des essais gratuits ne produit pas les mêmes résultats que de régler le paramètre [proration_behavior](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-proration_behavior) sur `none` car vous pouvez personnaliser la durée de la période gratuite.

Lorsque vous lancez un abonnement comportant une période d’essai avec la valeur du paramètre [payment_behavior](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-payment_behavior) définie sur `default_incomplete`, Stripe renvoie une valeur `pending_setup_intent` dans l’objet Subscription. Consultez la documentation pour en savoir plus sur l’objet [SetupIntent](https://docs.stripe.com/api/setup_intents.md).

#### Accounts&nbsp;v2

#### curl

```bash
curl https://api.stripe.com/v1/subscriptions \
  -u <<YOUR_SECRET_KEY>>: \
  -d "customer_account"="acct_4fdAW5ftNQow1a" \
  -d "items[0][price]"="price_CBb6IXqvTLXp3f" \
  -d "payment_behavior"="default_incomplete" \
  -d "trial_end"=1610403705 \
  -d "expand[0]"="pending_setup_intent"
```

#### Customers&nbsp;v1

#### curl

```bash
curl https://api.stripe.com/v1/subscriptions \
  -u <<YOUR_SECRET_KEY>>: \
  -d "customer"="cus_4fdAW5ftNQow1a" \
  -d "items[0][price]"="price_CBb6IXqvTLXp3f" \
  -d "payment_behavior"="default_incomplete" \
  -d "trial_end"=1610403705 \
  -d "expand[0]"="pending_setup_intent"
```

Renvoyez le `client_secret` du `pending_setup_intent` de l’abonnement au front-end pour terminer la configuration. Cette étape est nécessaire pour réussir à initier un paiement pour le premier cycle de facturation.

Suivez les instructions des sections [Recueillir les informations du moyen de paiement et l’acceptation du mandat](https://docs.stripe.com/billing/subscriptions/acss-debit.md#collect-payment-and-mandate) et [Vérifier le compte bancaire par micro-versements](https://docs.stripe.com/billing/subscriptions/acss-debit.md#verify-with-microdeposits), mais utilisez `stripe.confirmAcssDebitSetup` au lieu de `stripe.confirmAcssDebitPayment`. Si votre client choisit la vérification par micro-versements, utilisez `stripe.verifyMicrodepositsForSetup` au lieu de `stripe.verifyMicrodepositsForPayment`.

Après vérification, le SetupIntent passe immédiatement à l’état `succeeded`, et Stripe définit automatiquement le `default_payment_method` de l’abonnement sur le nouveau *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs).

Vous pouvez également combiner une [ancre du cycle de facturation](https://docs.stripe.com/billing/subscriptions/acss-debit.md#billing-cycle) avec une période d’essai gratuite. Par exemple, le 15&nbsp;septembre, vous souhaitez offrir à votre client une période d’essai gratuite de sept jours, puis commencer la période de facturation normale le 1er&nbsp;octobre. Vous pouvez définir la fin de la période d’essai gratuite au 22&nbsp;septembre et l’ancre du cycle de facturation au 1er&nbsp;octobre. Le client bénéficie ainsi d’une période d’essai gratuite de sept jours, puis se voit facturer un montant au prorata pour la période comprise entre la fin de la période d’essai et le 1er&nbsp;octobre. Le 1er&nbsp;octobre, vous lui facturez le montant normal de l’abonnement pour sa première période de facturation complète.

## Optional: Enregistrement des informations de moyen de paiement pour utilisation ultérieure

Vous pouvez également enregistrer le moyen de paiement par prélèvement automatique de votre client pour l’utiliser automatiquement avec des factures, des abonnements ou des planifications d’abonnement que vous créerez ultérieurement.

Vous pouvez le faire à l’aide d’un objet [SetupIntent](https://docs.stripe.com/api/setup_intents.md), qui représente votre intention de sauvegarder le moyen de paiement d’un client en vue de paiements futurs. Le `SetupIntent` suivra les étapes de ce processus de configuration.

Suivez les instructions relatives à la [sauvegarde des informations pour les paiements ultérieurs par prélèvement automatique au Canada](https://docs.stripe.com/payments/acss-debit/set-up-payment.md), mais fournissez un ensemble différent de `mandate_options` pour recueillir l’autorisation pour les abonnements et les factures.

#### Accounts&nbsp;v2

```curl
curl https://api.stripe.com/v1/setup_intents \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "automatic_payment_methods[enabled]=true" \
  -d "customer_account={{CUSTOMERACCOUNT_ID}}" \
  -d "payment_method_options[acss_debit][currency]=cad" \
  -d "payment_method_options[acss_debit][mandate_options][default_for][]=invoice" \
  -d "payment_method_options[acss_debit][mandate_options][default_for][]=subscription"
```

#### Customers&nbsp;v1

```curl
curl https://api.stripe.com/v1/setup_intents \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "automatic_payment_methods[enabled]=true" \
  -d customer={{CUSTOMER_ID}} \
  -d "payment_method_options[acss_debit][currency]=cad" \
  -d "payment_method_options[acss_debit][mandate_options][default_for][]=invoice" \
  -d "payment_method_options[acss_debit][mandate_options][default_for][]=subscription"
```

Une fois que le `SetupIntent` a atteint l’état `succeeded`, mettez à jour le moyen de paiement par défaut de votre client dans [configuration.customer.billing.default_payment_method](https://docs.stripe.com/api/v2/core/accounts/update.md#v2_update_accounts-response-configuration-customer-billing-default_payment_method) (pour les objets `Account` configurés par le client) ou [invoice_settings.default_payment_method](https://docs.stripe.com/api/customers/update.md#update_customer-invoice_settings-default_payment_method) (pour les objets `Customer`).

#### Ruby

```ruby

# Don't put any keys in code. See https://docs.stripe.com/keys-best-practices.
# Find your keys at https://dashboard.stripe.com/apikeys.
client = Stripe::StripeClient.new('<<YOUR_SECRET_KEY>>')

if event.type == 'setup_intent.succeeded'
  setup_intent = event.data.object
  customer_id = setup_intent['customer']
  payment_method_id = setup_intent['payment_method']

  # Set the default payment method
  client.v1.customers.update(
    customer_id,
    {
      invoice_settings: {
        default_payment_method: payment_method_id
      }
    }
  )
end
```
