Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Revenus
Plateformes et places de marché
Gestion de fonds
Ressources pour les développeurs
Aperçu
À propos des paiements Stripe
Mettre votre intégration à niveau
Analyses des paiements
Paiements en ligne
PrésentationTrouver votre cas d'usageManaged Payments
Utiliser Payment Links
Créer une page de paiement
Développer une intégration avancée
Développer une intégration dans l'application
Moyens de paiement
Ajouter des moyens de paiement
    Présentation
    Options d'intégration des moyens de paiement
    Gérer les moyens de paiement par défaut dans le Dashboard
    Types de moyens de paiement
    Cartes bancaires
    Payer avec le solde Stripe
    Cryptomonnaies
    Prélèvements bancaires
      Prélèvement automatique ACH
        Accepter un paiement
        Enregistrer les informations bancaires
        Migration depuis l'API Charges
        Migrer depuis un autre prestataire de services de paiement
        Comptes bancaires bloqués
        Codes SEC
      Prélèvement automatique Bacs
      Débit préautorisé au Canada
      Prélèvement automatique BECS en Australie
      Prélèvement automatique BECS en Nouvelle-Zélande
      Prélèvement automatique SEPA
    Virements avec redirection bancaire
    Virements bancaires
    Virements (Sources)
    Achetez maintenant, payez plus tard
    Paiements en temps réel
    Coupons
    Portefeuilles
    Activer des moyens de paiement locaux par pays
    Moyens de paiement personnalisés
Gérer les moyens de paiement
Paiement accéléré avec Link
Interfaces de paiement
Payment Links
Checkout
Elements pour le web
Elements intégrés à l'application
Scénarios de paiement
Gérer plusieurs devises
Tunnels de paiement personnalisés
Acquisition flexible
Orchestration
Paiements par TPE
Terminal
Au-delà des paiements
Constituez votre entreprise
Cryptomonnaies
Financial Connections
Climate
Comprendre la fraude
Radar pour la protection contre la fraude
Gestion des litiges
Vérifier l'identité
AccueilPaiementsAdd payment methodsBank debitsACH Direct Debit

Enregistrer les informations pour les futurs paiements par prélèvement automatique ACH

Comment enregistrer les informations relatives au moyens de paiement pour les paiements futurs par prélèvement automatique ACH.

Vous pouvez utiliser l’API Setup Intents pour collecter à l’avance les informations relatives au moyen de paiement, en vue d’un paiement dont la date et le montant seront déterminés ultérieurement. Cette méthode est utile pour :

  • Enregistrement des moyens de paiement dans un wallet afin de faciliter les futurs achats
  • Encaissement de suppléments de facturation après la fourniture d’un service
  • Démarrage d’une période d’essai gratuit dans le cadre d’un abonnement

Remarque

Le prélèvement automatique ACH est un moyen de paiement à notification différée, ce qui signifie que les fonds ne sont pas immédiatement disponibles après le paiement. Il faut généralement compter 4 jours ouvrables pour qu’un paiement arrive sur votre compte.

Le SDK iOS est disponible en open source et fait l’objet d’une documentation complète. Il est également compatible avec les applications prenant en charge iOS 13 et les versions ultérieures.

Pour installer le SDK :

  1. Dans Xcode, sélectionnez File > Add Package Dependencies… puis saisissez https://github.com/stripe/stripe-ios-spm en tant qu’URL du référentiel.
  2. Sélectionnez le dernier numéro de version, visible sur notre page des versions.
  3. Ajoutez les produits StripePayments et StripeFinancialConnections à la cible de votre application.

Remarque

Pour en savoir plus sur la version la plus récente du SDK et ses versions antérieures, consultez la page Releases sur GitHub. Pour recevoir une notification lors de la publication d’une nouvelle version, suivez les versions du référentiel.

Configurez le SDK avec votre clé publiable Stripe au démarrage de votre application. Cela lui permet d’envoyer des requêtes à l’API Stripe.

AppDelegate.swift
Swift
Objective-C
No results
import UIKit import StripeFinancialConnections @main class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { StripeAPI.defaultPublishableKey =
"pk_test_TYooMQauvdEDq54NiTphI7jx"
// do any other necessary launch configuration return true } }

Remarque

Utilisez vos clés de test lors de vos activités de test et de développement et vos clés du mode production pour la publication de votre application.

Créer ou récupérer un objet Customer
Recommandé
Côté serveur

Créez un objet Customer lorsque votre client crée un compte auprès de votre entreprise, ou récupérez l’objet Customer existant associé à cet utilisateur. L’association de l’ID de l’objet Customer à votre propre représentation interne d’un client vous permet de récupérer et d’utiliser ultérieurement les informations de paiement enregistrées. Ajoutez une adresse e-mail à l’objet Customer pour activer l’optimisation des utilisateurs connus de Financial Connections.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d email={{CUSTOMER_EMAIL}}

Créer un SetupIntent
Côté serveur
Côté client

Un SetupIntent est un objet qui représente votre intention de configurer le moyen de paiement d’un client en vue de futurs paiements. Le SetupIntent suit les étapes de ce processus de configuration.

Côté serveur

Créez un SetupIntent sur votre serveur en définissant payment_method_types sur us_bank_account, et indiquez l’id du client.

Pour en savoir plus sur les frais Financial Connections, consultez les Tarifs.

Par défaut, lors de la collecte des coordonnées bancaires, Financial Connections est utilisé pour vérifier instantanément le compte de votre client. Une option de secours comprenant la saisie manuelle du numéro de compte et la vérification par microversement peut être utilisée. Consultez la documentation relative à Financial Connections pour savoir comment configurer Financial Connections et accéder à des données de compte supplémentaires de façon à optimiser votre intégration ACH. Par exemple, vous pouvez utiliser Financial Connections pour consulter le solde d’un compte avant d’initier le paiement ACH.

Remarque

Pour accéder à des données supplémentaires après qu’un client a authentifié son compte, celui-ci doit associer de nouveau son compte avec des autorisations étendues.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl https://api.stripe.com/v1/setup_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer={{CUSTOMER_ID}} \ -d "payment_method_types[]"=us_bank_account \ -d "payment_method_options[us_bank_account][financial_connections][permissions][]"=payment_method \ -d "payment_method_options[us_bank_account][financial_connections][permissions][]"=balances

Côté client

Le SetupIntent renvoyé contient la clé secrète du client qui sera utilisée côté client pour finaliser la configuration de manière sécurisée sans avoir à transmettre la totalité de l’objet SetupIntent. Différentes approches sont possibles pour transmettre cette clé côté client.

Swift
Objective C
No results
import UIKit import StripePayments class CheckoutViewController: UIViewController { var setupIntentClientSecret: String? func startCheckout() { // Request a SetupIntent from your server and store its client secret } }}

Configurer une URL de redirection
Côté client

Le client peut quitter votre application pour s’authentifier (par exemple, dans Safari ou dans son application bancaire). Pour lui permettre de revenir automatiquement sur votre application après s’être authentifié, configurez un schéma d’URL personnalisé et configurez votre délégué d’application pour qu’il transmette l’URL au SDK. Stripe ne prend pas en charge les liens universels.

Remarque

Stripe peut ajouter des paramètres supplémentaires à l’URL de redirection fournie. Assurez-vous que les URL de redirection comportant des paramètres supplémentaires ne sont pas rejetées par votre code.

SceneDelegate.swift
Swift
Objective-C
No results
// This method handles opening custom URL schemes (for example, "your-app://stripe-redirect") func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { guard let url = URLContexts.first?.url else { return } let stripeHandled = StripeAPI.handleURLCallback(with: url) if (!stripeHandled) { // This was not a Stripe url – handle the URL normally as you would } }

Collecter les informations du moyen de paiement
Côté client

Pour que le SetupIntent aboutisse avec les prélèvements automatiques ACH, vous devez renseigner un nom de client et son adresse e-mail (facultatif). Dans votre application, collectez les informations de facturation requises auprès de votre client :

  • Nom complet (prénom et nom)
  • Adresse e-mail

Pour créer vos paramètres requis et appeler collectBankAccountForSetup, utilisez la fonction de classe collectUSBankAccountParams dans STPCollectBankAccountParams.

Créez une instance de BankAccountCollector pour appeler collectBankAccountForSetup afin de collecter les coordonnées bancaires, puis créez un PaymentMethod, et associez-le au SetupIntent. Il est nécessaire d’inclure le nom du titulaire du compte dans le paramètre billing_details pour créer un PaymentMethod ACH Direct Debit.

Swift
Objective C
No results
// Build params let collectParams = STPCollectBankAccountParams.collectUSBankAccountParams(with: name, email: email) // Calling this method will display a modal for collecting bank account information let bankAccountCollector = STPBankAccountCollector() bankAccountCollector.collectBankAccountForSetup(clientSecret: clientSecret, returnURL: "https://your-app-domain.com/stripe-redirect", params: collectParams, from: self) { intent, error in guard let intent = intent else { // handle error return } if case .requiresPaymentMethod = intent.status { // Customer canceled the Financial Connections modal. Present them with other // payment method type options. } else if case .requiresConfirmation = intent.status { // We collected an account - possibly instantly verified, but possibly // manually-entered. Display payment method details and mandate text // to the customer and confirm the intent once they accept // the mandate. } }

Cette action charge une interface utilisateur modale sur la page qui gère la collecte et la vérification des coordonnées bancaires. Une fois le processus terminé, le PaymentMethod est automatiquement associé au SetupIntent.

FacultatifAccéder aux données d'un compte bancaire Financial Connections
Côté serveur

Collecter et envoyer l'accusé de réception du mandat
Côté client

Avant de pouvoir mener à bien le SetupIntent et enregistrer les informations du moyen de paiement, vous devez obtenir l’autorisation de paiement auprès de votre client. Pour ce faire, présentez-lui les conditions du mandat et demandez-lui de les accepter.

Pour vous conformer aux règles de la Nacha, vous devez obtenir l’autorisation d’initier le paiement auprès de votre client. Pour ce faire, présentez-lui les conditions du mandat et demandez-lui de les accepter. Pour en savoir plus, consultez la page sur les mandats.

Lorsque le client accepte les conditions du mandat, vous devez confirmer le SetupIntent. Utilisez confirmSetupIntent pour mener à bien le paiement une fois que le client a soumis le formulaire.

Swift
Objective C
No results
let setupIntentParams = STPSetupIntentConfirmParams(clientSecret: clientSecret, paymentMethodType: .USBankAccount) STPPaymentHandler.shared().confirmSetupIntent( setupIntentParams, with: self ) { (status, intent, error) in switch status { case .failed: // Payment failed case .canceled: // Payment was canceled case .succeeded: // Payment succeeded @unknown default: fatalError() } }

Remarque

L’exécution de confirmSetupIntent peut prendre plusieurs secondes. Pendant ce temps, désactivez la possibilité de soumettre à nouveau votre formulaire et affichez un indicateur d’attente (par exemple, une boucle de progression). Si vous recevez une erreur, montrez-la au client, réactivez le formulaire et masquez l’indicateur d’attente.

Sauf échec de l’opération, Stripe renvoie un objet SetupIntent présentant l’un des états suivants :

ÉtatDescriptionÉtapes suivantes
succeededLe compte bancaire a été vérifié instantanément ou la vérification n’était pas nécessaire.Aucune action requise
requires_actionUne action supplémentaire est requise pour mener à bien la vérification du compte bancaire.Étape 6 : Vérification des comptes bancaires à l’aide de microversements

Après avoir confirmé le SetupIntent, un e-mail de confirmation du mandat et les coordonnées bancaires recueillies doivent être envoyés à votre client. Par défaut, Stripe gère cette étape, mais vous pouvez choisir d’envoyer des notifications personnalisées si vous préférez.

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

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 un microversement descriptor_code ou amount si un problème survient au cours de la vérification du compte bancaire. Ces microversements apparaissent sur le relevé en ligne du client sous 1 à 2 jours ouvrables.

  • Code de libellé : Stripe envoie un microversement unique de 0,01 USD sur le compte bancaire du client avec un descriptor_code unique à 6 chiffres qui commence par SM. Votre client utilise cette chaîne pour vérifier son compte bancaire.
  • Montant : Stripe envoie deux microversements distincts sur le compte bancaire du client avec un code de libellé indiquant ACCTVERIFY. Votre client utilise les montants de ces versements pour vérifier son compte bancaire.

L’appel confirmSetupIntent effectué à l’étape précédente renvoie un SetupIntent avec l’état requires_action. Le champ next_action du SetupIntent contient des informations utiles à la vérification.

Si vous avez fourni une adresse e-mail de facturation, Stripe utilise cette dernière pour notifier votre client de la date d’arrivée prévue des versements. L’e-mail envoyé inclut un lien vers la page de vérification hébergée par Stripe, sur laquelle il peut confirmer les montants des versements et effectuer la vérification.

Avertissement

Les tentatives de vérification sont limitées à dix pour les microversements basés sur des libellés et à trois pour ceux basés sur des montants. Si vous atteignez cette limite, nous ne pouvons plus vérifier le compte bancaire. En outre, les vérifications à l’aide de microversements expirent au bout de 10 jours. Si vous ne vérifiez pas les microversements pendant ce laps de temps, le PaymentIntent réitère sa demande d’informations sur le moyen de paiement. En informant clairement vos clients sur le fonctionnement de ces microversements, vous évitez d’éventuels problèmes liés à la vérification.

Facultatif : Envoyer des notifications personnalisées par e-mail

Vous pouvez également envoyer des notifications personnalisées par e-mail à votre client. Après avoir configuré les e-mails personnalisés, vous devez préciser comment le client doit répondre à l’e-mail de vérification. Pour ce faire, choisissez une des options suivantes :

  • Utilisez la page de vérification hébergée par Stripe. Pour ce faire, utilisez l’URL verify_with_microdeposits[hosted_verification_url] de l’objet next_action pour diriger votre client vers la procédure de vérification.

  • Si vous préférez ne pas utiliser la page de vérification hébergée par Stripe, créez un formulaire dans votre application. Vos clients peuvent ensuite l’utiliser pour vous transmettre les montants des microversements et pour vérifier le compte bancaire à l’aide du SDK iOS.

    • Configurez le formulaire de manière à ce qu’il gère au moins le paramètre descriptor code, qui comporte une chaîne à 6 chiffres à des fins de vérification.
    • Stripe vous recommande également de configurer votre formulaire pour qu’il gère le paramètre amounts, car certaines banques utilisées par vos clients peuvent l’exiger.

    Les intégrations transmettent uniquement les paramètres descriptor_code ou amounts. Pour savoir lequel utilise votre intégration, vérifiez la valeur de verify_with_microdeposits[microdeposit_type] dans l’objet next_action.

Swift
Objective C
No results
// Use if you are using a descriptor code, do not use if you are using amounts STPAPIClient.shared.verifySetupIntentWithMicrodeposits(clientSecret: clientSecret, descriptorCode: descriptorCode, completion: { intent, error in }) // Use if you are using amounts, do not use if you are using descriptor code STPAPIClient.shared.verifySetupIntentWithMicrodeposits(clientSecret: clientSecret, firstAmount: firstAmount, secondAmount: secondAmount, completion: { intent, error in })

Lorsque le compte bancaire est vérifié, Stripe renvoie l’objet SetupIntent avec un status défini sur succeeded.

La vérification peut échouer pour différentes raisons. L’échec se produit de manière synchrone et vous en êtes informé par un message d’erreur.

{ "error": { "code": "payment_method_microdeposit_verification_amounts_mismatch", "message": "The amounts provided do not match the amounts that were sent to the bank account. You have {attempts_remaining} verification attempts remaining.", "type": "invalid_request_error" } }
Code d’erreurMessageChangement d’état
payment_method_microdeposit_failedLes microversements ont échoué. Veuillez vérifier la validité des numéros de compte, d’établissement et de transit fournis.status est à l’état requires_payment_method et le paramètre last_setup_error est défini.
payment_method_microdeposit_verification_amounts_mismatchLes montants fournis ne correspondent pas à ceux envoyés au compte bancaire. Il vous reste {attempts_remaining} tentatives de vérification.Inchangé
payment_method_microdeposit_verification_attempts_exceededNombre de tentatives de vérification autorisées dépasséstatus est à l’état requires_payment_method et le paramètre last_setup_error est défini.

Tester votre intégration

Découvrez comment tester des scénarios avec des vérifications instantanées à l’aide de Financial Connections.

Envoyer des e-mails de transaction dans un environnement de test

Une fois que vous avez collecté les coordonnées bancaires et accepté un mandat, envoyez les courriels de confirmation du mandat et de vérification du microversement dans un environnement de bac à sable.

Si votre domaine est {domain} et que votre nom d’utilisateur est {username}, utilisez le format d’e-mail suivant pour envoyer des e-mails de transaction de test : {username}+test_email@{domain}.

Par exemple, si votre domaine est example.com et que votre nom d’utilisateur est info, utilisez le format info+test_email@example.com pour tester les paiements ACH Direct Debit. Ce format garantit que les e-mails sont acheminés correctement. Si vous n’incluez pas le suffixe +test_email, nous n’enverrons pas l’e-mail.

Erreur fréquente

Pour déclencher ces e-mails pendant le test, vous devez d’abord activer votre compte Stripe.

Numéros de comptes de test

Stripe fournit plusieurs numéros de compte de test et les tokens correspondants que vous pouvez utiliser pour vous assurer que votre intégration pour les comptes bancaires saisis manuellement est prête à passer en mode production.

Numéro de compteTokenNuméro de routageComportement
000123456789pm_usBankAccount_success110000000Le paiement aboutit.
000111111113pm_usBankAccount_accountClosed110000000Le paiement échoue parce que le compte est clôturé.
000000004954pm_usBankAccount_riskLevelHighest110000000Le paiement est bloqué par Radar en raison d’un risque élevé de fraude.
000111111116pm_usBankAccount_noAccount110000000Le paiement échoue car aucun compte n’est trouvé.
000222222227pm_usBankAccount_insufficientFunds110000000Le paiement échoue en raison de fonds insuffisants.
000333333335pm_usBankAccount_debitNotAuthorized110000000Le paiement échoue parce que les débits ne sont pas autorisés.
000444444440pm_usBankAccount_invalidCurrency110000000Le paiement échoue en raison d’une devise non valide.
000666666661pm_usBankAccount_failMicrodeposits110000000Le paiement ne parvient pas à envoyer les microversements.
000555555559pm_usBankAccount_dispute110000000Le paiement déclenche un litige.
000000000009pm_usBankAccount_processing110000000Le paiement reste en cours de traitement pour une durée indéterminée. Cela est utile pour tester l’annulation d’un PaymentIntent.
000777777771pm_usBankAccount_weeklyLimitExceeded110000000Le paiement échoue, car son montant entraîne un dépassement de la limite hebdomadaire de volume de paiement du compte.

Avant d’effectuer les transactions de test, vous devez vérifier tous les comptes de test pour lesquels le paiement aboutit ou échoue automatiquement. Pour ce faire, utilisez les codes de libellé ou les montants de microversements de test ci-dessous.

Tester des codes de libellé et des montants de microversements

Pour simuler différents scénarios, utilisez ces montants de microversements ou ces codes de libellé 0.01.

Valeurs de microversementValeurs de code de libellé 0.01Scénario
32 et 45SM11AASimule la vérification du compte.
10 et 11SM33CCSimule le dépassement du nombre de tentatives de vérification autorisé.
40 et 41SM44DDSimule l’expiration du délai de validité d’un microversement.

Comportement de règlement des tests

Les transactions de test sont réglées instantanément et ajoutées à votre solde de test disponible. Ce comportement diffère de celui du mode production, où les transactions peuvent prendre plusieurs jours pour être réglées dans votre solde disponible.

Acceptation des futurs paiements
Côté serveur

Lorsque le SetupIntent aboutit, un nouvel objet PaymentMethod est créé et associé à un objet Customer. Ils peuvent être utilisés pour effectuer des paiements futurs sans devoir demander au client d’indiquer à nouveau son compte bancaire.

Command Line
curl
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "amount"=1099 \ -d "currency"="usd" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "payment_method"="{{PAYMENT_METHOD_ID}}" \ -d "payment_method_types[]"="us_bank_account" \ -d "confirm"="true"

FacultatifVérification instantanée uniquement
Côté serveur

FacultatifVérification à l'aide de microversements uniquement
Côté serveur

FacultatifMise à jour du moyen de paiement par défaut
Côté serveur

Cette page vous a-t-elle été utile ?
OuiNon
  • Besoin d'aide ? Contactez le service Support.
  • Rejoignez notre programme d'accès anticipé.
  • Consultez notre log des modifications.
  • Des questions ? Contactez l'équipe commerciale.
  • LLM ? Lire llms.txt.
  • Propulsé par Markdoc