# Utilisation des SetupIntents, PaymentMethods et BankAccounts Configurer les transferts de fonds avec Treasury pour les plateformes. > #### Compatibilité de l'API Accounts v2 > > L’API Accounts v2 ne prend pas en charge des workflows Treasury. Si vous avez des comptes créés avec Accounts v2, vous pouvez utiliser Accounts v1 pour gérer les fonctionnalités `treasury` et `card_issuing`. Pour en savoir plus, consultez la page [Utiliser les Accounts en tant que clients](https://docs.stripe.com/accounts-v2/use-accounts-as-customers.md). Vous pouvez utiliser des objets [PaymentMethod](https://docs.stripe.com/payments/payment-methods.md#payment-method-object) afin d’enregistrer les identifiants d’un compte bancaire états-unien pour une réutilisation ultérieure. Une fois que vous avez créé le `PaymentMethod`, vous pouvez utiliser le même objet plusieurs fois pour transférer des fonds vers et depuis un compte financier. Vous pouvez associer le `PaymentMethod` à un objet [Customer](https://docs.stripe.com/api/customers.md) ou au compte Stripe, en fonction de votre cas d’usage. - Si vous prévoyez d’utiliser le moyen de paiement dans le cadre d’un paiement sortant à un tiers, associez l’objet `PaymentMethod` à un objet `Customer`. - Si vous prévoyez d’utiliser le moyen de paiement dans le cadre d’un paiement vers ou depuis un compte externe appartenant à la même entreprise que le compte Stripe, associez l’objet `PaymentMethod` à un compte connecté ou un compte de la plateforme. > L’objet `Customer` définit une entité tierce qui représente le propriétaire d’un compte bancaire externe. Si vous avez déjà collecté les informations de paiement du client sur Stripe à l’aide de l’objet [BankAccounts](https://docs.stripe.com/ach-deprecated.md), vous pouvez remplacer `BankAccount` par `PaymentMethod` dans ces requêtes. Pour `InboundTransfers`, la valeur `status` de `BankAccount` doit être définie sur `verified`. Nous vous recommandons, dans la mesure du possible, d’utiliser `PaymentMethods` pour tirer pleinement parti de ces fonctionnalités. Dans certains cas, les banques qui reçoivent les transferts de fonds ACH informent Stripe que les informations relatives au compte (telles que le numéro de compte ou le numéro de routage) ont changé. Si nous recevons une notification pour un compte associé à un objet `PaymentMethod` ou `BankAccount`, nous mettons automatiquement à jour l’objet. Pour en savoir plus, consultez la section [Gestion des NOC pour l’ACH et des codes SEC](https://docs.stripe.com/treasury/connect/moving-money/noc-sec-handling.md). ## Créer un SetupIntent pour enregistrer les informations du us_bank_account Les [SetupIntents](https://docs.stripe.com/payments/setup-intents.md) vous permettent de configurer un moyen de paiement que vous pouvez utiliser avec les endpoints de transferts de fonds de l’API Stripe. Utilisez des `SetupIntents` pour enregistrer les identifiants du client ou du compte comme moyen de paiement et les optimiser pour les objets avec lesquels vous comptez les utiliser. Par exemple, lors de la configuration d’un compte bancaire américain, il convient de vérifier le compte externe avant de le débiter en vue d’un transfert entrant. Stripe met à jour l’objet `SetupIntent` tout au long du processus de configuration. L’exemple suivant illustre l’utilisation d’un `SetupIntent` avec un compte bancaire acceptant les transferts de fonds bidirectionnels. Pour en savoir plus sur la configuration d’un moyen de paiement afin de créer des paiements et instaurer un processus de vérification du compte bancaire, consultez le guide relatif à l’[enregistrement des informations pour les futurs paiements par prélèvement automatique ACH](https://docs.stripe.com/payments/ach-direct-debit/set-up-payment.md). Lorsque vous configurez des moyens de paiement pour gérer les fonds d’un compte financier avec des `SetupIntents`, voici les champs les plus pertinents : - [flow_directions](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-flow_directions) : ce tableau définit la directionnalité des flux d’un moyen de paiement. Les valeurs possibles, `inbound` et `outbound`, déterminent la capacité du moyen de paiement à transférer des fonds vers et/ou depuis un compte financier. Vous pouvez également configurer un moyen de paiement existant pour le rendre bidirectionnel. - [attach_to_self](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-attach_to_self) : flag booléen qui indique si le moyen de paiement doit être associé à l’objet `Account` en contexte. Définissez cette valeur sur true pour créer un moyen de paiement associé au compte dédié à la gestion des flux de transfert de fonds propres à ce compte, tels que des transferts entrants et sortants. - [customer](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-confirm) : ID de l’objet `Customer` auquel le moyen de paiement doit être associé à l’issue de la configuration. Vous pouvez utiliser les moyens de paiement associés à l’objet `Customer` avec des paiements sortants afin de transférer des fonds à des tiers et des clients. Vous pouvez également les utiliser avec les `PaymentIntents` de Stripe Payments afin de recevoir des fonds. Vous devez définir l’attribut `attach_to_self` sur false ou le laisser vide lorsque vous créez un moyen de paiement associé au client. ### Autorisations Pour utiliser un moyen de paiement pour les redirections de flux entrants (comme les `InboundTransfers`), vous devez obtenir [l’autorisation du titulaire du compte](https://docs.stripe.com/payments/setup-intents.md#mandates). Le fait d’obtenir cet accord (représenté par l’objet `Mandate`) au départ et de l’associer au moyen de paiement vous permettra par la suite de débiter le moyen de paiement enregistré. Sur votre application ou votre site, précisez les conditions dans lesquelles vous prélèverez des fonds de comptes externes et inviterez vos comptes connectés à adhérer à ces dispositions. Vos conditions doivent au minimum comporter les éléments suivants : - Vous devez demander à votre compte connecté l’autorisation de déclencher un prélèvement ou une série de prélèvements en son nom - D’informer sur la fréquence prévue des prélèvements (paiement ponctuel ou paiements récurrents) - D’expliciter la façon dont vous déterminez le montant du prélèvement Si vous devez obtenir un mandat pour débiter un compte bancaire externe aux États-Unis avec des transferts entrants, vous n’en avez pas besoin pour virer des fonds sur un compte bancaire via des transferts ou des paiements sortants. ### Créer un SetupIntent Pour créer un `SetupIntent`, vous devez soit utiliser un moyen de paiement existant avec le paramètre `payment_method`, soit fournir de nouveaux identifiants à l’aide du paramètre de type inline `payment_method_data`. Utilisez `POST /v1/setup_intents` pour créer un `SetupIntent`. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "payment_method={{PAYMENTMETHOD_ID}}" ``` Sauf échec de l’opération, la réponse renvoie le nouvel objet `SetupIntent`. #### JSON (commenté) ```json { // ID of the Customer to attach the resulting PaymentMethod to "customer": "{{CUSTOMER_ID}}", "attach_to_self": false, // Configure what direction of funds flows this PaymentMethod will support. "flow_directions": ["inbound", "outbound"], // US Bank Account credentials "payment_method_types": ["us_bank_account"], "payment_method_data": { "type": "us_bank_account", "us_bank_account": { "routing_number": "12341234", "account_number": "0123456789", "account_holder_type": "individual" | "company" }, "billing_details": { // `name` must be specified for `us_bank_account` type "name": "Jenny Rosen", "phone": null | "{{String}}", "email": null | "{{String}}", "address": null | { "line1": null | "{{String}}", "line2": null | "{{String}}", "city": null | "{{String}}", "state": null | "{{String}}", "postal_code": null | "{{String}}", "country": null | "{{String}}" } } }, // For `inbound` flows, we need to verify the bank account "payment_method_options": { "us_bank_account": { "verification_method": "microdeposits" } }, // For `inbound` flows with us_bank_account, we need mandate information "mandate_data": { "customer_acceptance": { "type": "online", "online": { "ip_address": "123.123.123.123", "user_agent": "curl/1.2.3" } } }, "confirm": true } ``` Le `SetupIntent` présente l’un des états suivants : | ÉTAT | DESCRIPTION | ÉTAPES SUIVANTES | | ----------------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | | `succeeded` | Le compte bancaire a été vérifié instantanément ou la vérification n’était pas nécessaire. | Aucune action requise. | | `requires_action` | Une action supplémentaire est requise pour mener à bien la vérification du compte bancaire. | Voir `next_action` pour les étapes de configuration supplémentaires. | Une fois la `SetupIntent` confirmée, Stripe envoie par e-mail une confirmation du mandat ainsi que les informations collectées sur le compte bancaire à votre compte connecté. L’e-mail par défaut renvoie à Stripe Payments ; si vous utilisez Stripe Treasury pour les plateformes sans Stripe Payments, vous pouvez désactiver les e-mails de Stripe et envoyer des [messages personnalisés](https://docs.stripe.com/payments/ach-direct-debit.md#mandate-and-microdeposit-emails) à la place.