Accepter un paiement par prélèvement automatique ACH
Créez un formulaire de paiement personnalisé ou utilisez Stripe Checkout pour accepter des paiements à l'aide d'un compte bancaire américain.
Mise en garde
Stripe propose automatiquement à vos clients des options de moyens de paiement selon leur devise, les restrictions sur les moyens de paiement et d’autres paramètres. Nous vous recommandons de configurer vos moyens de paiement à partir du Dashboard Stripe en suivant les instructions indiquées dans Accepter un paiement.
Si vous souhaitez continuer à configurer manuellement les moyens de paiement que vous présentez à vos clients avec Checkout, utilisez ce guide. Sinon, mettez à jour votre intégration pour configurer les moyens de paiement dans le Dashboard.
Les utilisateurs de Stripe aux États-Unis peuvent utiliser Checkout en mode paiement pour accepter les paiements par prélèvement automatique ACH.
Une session Checkout affiche les détails de l’intention d’achat de votre client. Vous créez une session pour permettre à votre client de s’acquitter de son règlement. Une fois le client redirigé vers votre session Checkout, Stripe lui présente un formulaire de paiement qui lui permet de finaliser son achat. Lorsque l’achat est finalisé, il est redirigé vers votre site.
Avec Checkout, vous pouvez créer une session Checkout en utilisant us_
comme type de moyen de paiement pour suivre et gérer les états du paiement jusqu’à ce qu’il aboutisse.
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.
Déterminer la compatibilité
Pour prendre en charge les paiements par prélèvement automatique ACH, assurez-vous d’exprimer les Prices pour tous les postes de facture en dollars américains (code de devise usd
).
Créer ou récupérer un objet CustomerRecommandé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.
Accepter un paiement
Remarque
Avant d’utiliser ce guide, commencez par créer une intégration permettant d’accepter un paiement avec Checkout.
Ce guide vous montre comment activer le prélèvement automatique ACH comme moyen de paiement et vous explique les différences entre l’acceptation d’un paiement par carte et l’utilisation de ce moyen de paiement.
Activer les prélèvements automatiques ACH comme moyen de paiement
Lors de la création d’une nouvelle session Checkout, vous devez :
- Ajouter
us_
à la liste desbank_ account payment_
.method_ types - Veiller à ce que tous vos postes de facture
line_
utilisent la deviseitems usd
.
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.
Si le client opte pour la vérification par microversements au lieu de la vérification par Financial Connections, Stripe envoie automatiquement deux versements de faible montant au compte bancaire indiqué. Ces versements apparaissent sur le relevé bancaire en ligne du client sous deux jours ouvrables. Le client reçoit alors un lien par e-mail afin confirmer ces montants et vérifier son compte bancaire auprès de Stripe. Une fois la vérification terminée, le traitement du paiement commence.
Lorsque vous créez une session en mode paiement pour un prélèvement automatique ACH, nous vous recommandons d’inclure le paramètre payment_intent_data.setup_future_usage et de le définir sur off_
. Vous pourrez ainsi enregistrer les informations du moyen de paiement.
Traiter vos commandes
Après avoir accepté un paiement, découvrez comment réaliser les commandes.
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 compte | Token | Numéro de routage | Comportement |
---|---|---|---|
000123456789 | pm_ | 110000000 | Le paiement aboutit. |
000111111113 | pm_ | 110000000 | Le paiement échoue parce que le compte est clôturé. |
000000004954 | pm_ | 110000000 | Le paiement est bloqué par Radar en raison d’un risque élevé de fraude. |
000111111116 | pm_ | 110000000 | Le paiement échoue car aucun compte n’est trouvé. |
000222222227 | pm_ | 110000000 | Le paiement échoue en raison de fonds insuffisants. |
000333333335 | pm_ | 110000000 | Le paiement échoue parce que les débits ne sont pas autorisés. |
000444444440 | pm_ | 110000000 | Le paiement échoue en raison d’une devise non valide. |
000666666661 | pm_ | 110000000 | Le paiement ne parvient pas à envoyer les microversements. |
000555555559 | pm_ | 110000000 | Le paiement déclenche un litige. |
000000000009 | pm_ | 110000000 | Le paiement reste en cours de traitement pour une durée indéterminée. Cela est utile pour tester l’annulation d’un PaymentIntent. |
000777777771 | pm_ | 110000000 | Le 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 microversement | Valeurs de code de libellé 0.01 | Scénario |
---|---|---|
32 et 45 | SM11AA | Simule la vérification du compte. |
10 et 11 | SM33CC | Simule le dépassement du nombre de tentatives de vérification autorisé. |
40 et 41 | SM44DD | Simule 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.
Autres considérations
Échec de la vérification des microversements
Lorsqu’un compte bancaire est en attente de vérification par microversements, la vérification du client peut échouer pour trois raisons :
- L’envoi des microversements au compte bancaire du client a échoué (en général, ce problème signifie que le compte bancaire est clôturé ou non disponible, ou que le numéro du compte bancaire est incorrect).
- Les 10 tentatives de vérification du compte effectuées par le client ont échoué. Une fois cette limite atteinte, le compte bancaire ne peut plus être vérifié ni utilisé.
- Le client n’a pas vérifié son compte bancaire dans le délai de 10 jours prévu.
Si la vérification du compte bancaire échoue pour l’une de ces raisons, vous pouvez gérer l’événement checkout.
pour contacter le client et lui proposer de passer une nouvelle commande.
FacultatifVérification instantanée uniquement
Par défaut, les paiements par prélèvement automatique ACH permettent à vos clients d’utiliser la vérification instantanée du compte bancaire ou les microversements. Vous pouvez aussi exiger la vérification instantanée du compte bancaire uniquement en utilisant le paramètre payment_
lorsque vous créez la session Checkout.
FacultatifAccéder aux données d'un compte bancaire Financial Connections
Vous ne pouvez accéder aux données Financial Connections que si vous demandez des autorisations d’accès supplémentaires lors de la création de votre PaymentIntent .
Une fois que votre client a terminé le tunnel de paiement, l’objet PaymentMethod us_
renvoyé inclut un ID de financial_connections_account correspondant à un compte Financial Connections. Utilisez cet ID pour accéder aux données du compte.
Erreur fréquente
Les comptes bancaires que vos clients associent par saisie manuelle ou par le biais de microversements n’ont pas d’ID financial_
au niveau du moyen de paiement.
Pour déterminer l’ID du compte Financial Connections, récupérez la session Checkout et développez l’attribut payment_
:
{ "id": "{{CHECKOUT_SESSION_ID}}", "object": "checkout.session", // ... "payment_intent": { "id": "{{PAYMENT_INTENT_ID}}", "object": "payment_intent", // ... "payment_method": { "id": "{{PAYMENT_METHOD_ID}}", // ... "type": "us_bank_account", "us_bank_account": { "account_holder_type": "individual", "account_type": "checking", "bank_name": "TEST BANK", "financial_connections_account": "{{FINANCIAL_CONNECTIONS_ACCOUNT_ID}}", "fingerprint": "q9qchffggRjlX2tb", "last4": "6789", "routing_number": "110000000" } } // ... } }
Découvrez comment utiliser des données de compte supplémentaires pour optimiser votre intégration ACH avec Financial Connections.
FacultatifRésoudre les litigesCôté serveur
En règle générale, les clients peuvent contester un paiement ACH Direct Debit auprès de leur banque sous 60 jours calendaires après un prélèvement sur un compte personnel, ou sous 2 jours ouvrables pour un compte professionnel. Dans de rares cas, le client peut contester un paiement par prélèvement en dehors de ces délais de litige standard.
Lorsqu’un client conteste un paiement, Stripe envoie un événement webhook charge.dispute.closed, et l’autorisation du PaymentMethod est révoquée.
Il peut parfois arriver que Stripe reçoive un échec de paiement ACH de la banque alors que le PaymentIntent est déjà passé à l’état succeeded
. Quand cela se produit, Stripe créée un litige dont le paramètre reason
(motif) peut être :
insufficient_
funds incorrect_
account_ details bank_
can't_ process
Dans ce cas de figure, Stripe prélève des frais d’échec de paiement.
Les futurs paiements qui réutilisent ce PaymentMethod renvoient l’erreur suivante :
{ "error": { "message": "This PaymentIntent requires a mandate, but no existing mandate was found. Collect mandate acceptance from the customer and try again, providing acceptance data in the mandate_data parameter.", "payment_intent": { ... } "type": "invalid_request_error" } }
Cette erreur comporte un PaymentIntent à l’état requires_
. Pour que le paiement aboutisse, vous devez :
- Résolvez le litige avec le client pour vous assurer que les futurs paiements ne seront pas contestés.
- Confirmez de nouveau l’autorisation de votre client.
Pour confirmer l’autorisation de paiement, vous pouvez collecter la confirmation du mandat de votre client en ligne avec Stripe.js ou confirmer l’autorisation avec votre client hors ligne à l’aide de l’API Stripe.
Mise en garde
Si un client conteste plusieurs paiements issus du même compte bancaire, Stripe bloque son compte. Contactez le service Support de Stripe pour obtenir une solution.
FacultatifRéférence du paiement
Le numéro de référence du paiement est une valeur générée par la banque qui permet au titulaire du compte bancaire d’utiliser sa banque pour localiser des fonds. Lorsque le paiement aboutit, Stripe fournit le numéro de référence du paiement dans le Dashboard, ainsi que dans l’objet Charge.
État du paiement | Valeur de référence du paiement |
---|---|
En attente | Indisponibles |
En échec | Indisponibles |
Réussi | Disponible (par exemple, 091000015001234) |
De plus, lorsque vous recevez le webhook charge.
, consultez le contenu de payment_
pour localiser la payment_reference.
L’exemple d’événement suivant montre le rendu d’un paiement ACH abouti avec un numéro de référence de paiement.
{ "id": "{{EVENT_ID}}", "object": "event", // omitted some fields in the example "type": "charge.succeeded", "data": { "object": { "id": "{{PAYMENT_ID}}", "object": "charge", //... "paid": true, "payment_intent": "{{PAYMENT_INTENT_ID}}", "payment_method": "{{PAYMENT_METHOD_ID}}", "payment_method_details": { "type": "us_bank_account", "us_bank_account": { "account_holder_type": "individual", "account_type": "checking", "bank_name": "TEST BANK", "fingerprint": "Ih3foEnRvLXShyfB", "last4": "1000", "payment_reference": "091000015001234", "routing_number": "110000000" } } // ... } } }
Consultez le contenu de destination_
pour localiser la référence du remboursement associée aux paiements ACH remboursés.
L’exemple d’événement suivant montre le rendu d’un remboursement de paiement ACH abouti avec un numéro de référence de remboursement. En savoir plus sur les remboursements.
{ "id": "{{EVENT_ID}}", "object": "event", "type": "charge.refund.updated", "data": { "object": { "id": "{{REFUND_ID}}", "object": "refund", //... "payment_intent": "{{PAYMENT_INTENT_ID}}", "destination_details": { "type": "us_bank_transfer", "us_bank_transfer": { "reference": "091000015001111", "reference_status": "available" } } // ... } } }
FacultatifConfigurer la date de prélèvement du clientCôté serveur
Vous pouvez contrôler la date à laquelle Stripe débite le compte bancaire d’un client à l’aide de la date butoir. La date cible doit être fixée au moins trois jours dans le futur et pas plus de 15 jours après la date actuelle.
La date butoir indique la date à laquelle les fonds doivent avoir quitté le compte du client. Vous pouvez annuler un PaymentIntent créé avec une date butoir jusqu’à trois jours ouvrables avant la date configurée.
Si la date butoir indiquée répond à l’un des critères suivants, le débit a lieu le jour ouvrable suivant :
- La date butoir est un week-end, un jour férié ou un autre jour non ouvrable.
- La date butoir est fixée moins de trois jours ouvrables dans le futur.
Ce paramètre fonctionne dans la mesure du possible. En effet, la banque de chaque client peut traiter les prélèvements à des dates différentes, en fonction des jours fériés locaux ou d’autres raisons.
Mise en garde
Vous ne pouvez pas définir la méthode de vérification sur microdeposits
lorsque vous utilisez une date butoir, car le processus de vérification pourrait dépasser la date butoir, entraînant un retard des paiements.