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
      Prélèvement automatique Bacs
        Accepter un paiement
        Importer des données Bacs dans Stripe
        Enregistrer les informations bancaires
      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 debitsBacs Direct Debit

Paiements par prélèvement automatique Bacs

Acceptez les paiements par prélèvement automatique Bacs de clients titulaires d'un compte bancaire au Le Royaume-Uni.

Pour accepter les paiements par prélèvement automatique Bacs sur votre site Web, il vous faut créer un objet de filière du paiement, collecter les informations relatives au moyen de paiement et la confirmation du mandat, puis envoyer le paiement à Stripe pour traiter et vérification du compte bancaire de votre client.

Stripe utilise cet objet de paiement, le PaymentIntent, pour filière et gérer l’ensemble des états du paiement jusqu’à son aboutissement.

Configurer Stripe
Côté serveur

Pour commencer, il vous faut un compte Stripe. Inscrivez-vous.

Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application :

Command Line
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

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

Pour réutiliser un compte bancaire à l’occasion de paiements ultérieurs, le compte en question doit être associé à un objet Customer.

Créez un objet Customer lorsque votre client crée un compte auprès de votre entreprise. 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 relatives aux moyens de paiement sauvegardé.

Créez ou récupérez un objet Customer afin de l’associer à ce paiement. Pour créer un nouvel objet Customer, ajoutez le code ci-après sur votre serveur créer un nouveau Customer :

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

Collecter les informations relatives au moyen de paiement

Remarque

Les règles relatives aux prélèvements automatiques Bacs prévoient l’acceptation d’un mandat de la part du client commande que Stripe puisse débiter son compte. Le Payment Element collecter ce mandat lorsque vous acceptez les données de paiement du client. Aucune action n’est requise de votre part pour vous être conforme à cette exigence.

Vous êtes prêt à recueillir les informations de paiement de votre client à l’aide du composant Element Payment, un composant préconfiguré de l’interface utilisateur qui simplifie cette collecte pour de nombreux moyens de paiement.

Le Payment Element contient un iframe qui envoie les informations de paiement à Stripe de manière sécurisée via une connexion HTTPS. Évitez de placer le Payment Element dans un autre iframe, car certains moyens de paiement nécessitent une redirection vers une autre page pour la confirmation du paiement.

Pour que votre intégration fonctionne, l’adresse de la page de paiement doit commencer par https:// et non par http://. Vous pouvez tester votre intégration sans utiliser le protocole HTTPS, mais n’oubliez pas de l’activer lorsque vous souhaitez commencer à accepter des paiements réels.

Configurer Stripe.js

Le Payment Element est automatiquement disponible en tant que fonctionnalité de Stripe.js. Intégrez le script Stripe.js à votre page de paiement en l’ajoutant au head votre fichier HTML. Chargez toujours Stripe.js directement à partir de js.stripe.com pour rester conforme aux normes PCI. N’incluez pas le script dans un lot et n’en hébergez pas de copie.

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

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

checkout.js
// 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(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
);

Ajouter le composant Payment Element à votre page de paiement

Le Payment Element doit avoir un emplacement sur votre page de paiement. Créez un nœud DOM (conteneur) vide avec un ID unique dans votre formulaire de paiement :

checkout.html
<form id="payment-form"> <div id="payment-element"> <!-- Elements will create form elements here --> </div> <button id="submit">Submit</button> <div id="error-message"> <!-- Display error message to your customers here --> </div> </form>

Une fois le formulaire ci-dessus chargé, créez une instance Elements avec les paramètres mode, amount et currency. Ces valeurs déterminent les moyens de paiement présentés à votre client. Pour proposer un nouveau moyen de paiement dans votre formulaire, veillez à l’activer dans le Dashboard.

checkout.js
const options = { mode: 'payment', amount: 1099, currency: 'gbp', // Fully customizable with appearance API. appearance: {/*...*/}, }; // Set up Stripe.js and Elements to use in checkout form const elements = stripe.elements(options); // Create and mount the Payment Element const paymentElementOptions = { layout: 'accordion'}; const paymentElement = elements.create('payment', paymentElementOptions); paymentElement.mount('#payment-element');

Vous pouvez personnaliser le Payment Element pour l’adapter au design de votre site en transmettant l’objet Appearance dans les options lors de la création du fournisseur Elements.

Collecter les adresses

Par défaut, le composant Payment Element ne collecte que les informations nécessaires relatives à l’adresse de facturation. Si vous souhaitez obtenir l’adresse de facturation (par exemple, pour calculer la taxe sur les biens et services numériques) ou l’adresse de livraison complètes d’un client, utilisez le composant Address Element.

Créer un PaymentIntent
Côté serveur

Exécuter une logique métier personnalisée immédiatement avant la confirmation du paiement

Accédez à l’étape 5 du guide « Finaliser » les paiements pour exécuter votre logique métier personnalisée immédiatement avant la confirmation du paiement. Sinon, suivez la procédure ci-dessous pour une intégration plus simple, qui utilise stripe.confirmPayment au niveau du client afin de confirmer le paiement et gérer les actions qui pourraient suivre.

Lorsque le client envoie votre formulaire de paiement, utilisez un PaymentIntent pour faciliter le processus de confirmation et de paiement. Créez un PaymentIntent sur votre serveur avec les paramètres amount et currency. Pour éviter que des clients malveillants ne choisissent eux-mêmes leurs tarifs, fixez systématiquement le montant à débiter côté serveur (un environnement sécurisé) plutôt que côté client.

L’objet PaymentIntent contient une clé secrète du client. Renvoyez cette valeur côté client afin que Stripe.js l’utilise pour finaliser le processus de paiement en toute sécurité.

main.rb
Ruby
Python
PHP
Node.js
Java
Go
.NET
No results
require 'stripe' Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
post '/create-intent' do intent = Stripe::PaymentIntent.create({ # To allow saving and retrieving payment methods, provide the Customer ID. customer: customer.id, amount: 1099, currency: 'gbp', }) {client_secret: intent.client_secret}.to_json end

Envoyer le paiement à Stripe
Côté client

Utilisez stripe.confirmPayment pour finaliser le paiement à l’aide des informations du composant Payment Element.

Ajoutez un paramètre return_url à cette fonction pour indiquer à Stripe où rediriger l’utilisateur une fois le paiement effectué. Dans un premier temps, votre utilisateur sera peut-être redirigé vers un site intermédiaire, comme une page d’autorisation bancaire, avant d’être redirigé vers l’URL return_url. Une fois le paiement par carte abouti, l’utilisateur est immédiatement redirigé vers l’URL return_url.

Si vous ne souhaitez pas effectuer de redirection à la fin des paiements par carte, vous pouvez définir le paramètre redirect sur if_required. De cette manière, seuls les clients qui choisissent un moyen de paiement avec redirection seront redirigés.

checkout.js
const form = document.getElementById('payment-form'); const submitBtn = document.getElementById('submit'); const handleError = (error) => { const messageContainer = document.querySelector('#error-message'); messageContainer.textContent = error.message; submitBtn.disabled = false; } form.addEventListener('submit', async (event) => { // We don't want to let default form submission happen here, // which would refresh the page. event.preventDefault(); // Prevent multiple form submissions if (submitBtn.disabled) { return; } // Disable form submission while loading submitBtn.disabled = true; // Trigger form validation and wallet collection const {error: submitError} = await elements.submit(); if (submitError) { handleError(submitError); return; } // Create the PaymentIntent and obtain clientSecret const res = await fetch("/create-intent", { method: "POST", }); const {client_secret: clientSecret} = await res.json(); // Confirm the PaymentIntent using the details collected by the Payment Element const {error} = await stripe.confirmPayment({ elements, clientSecret, confirmParams: { return_url: 'https://example.com/order/123/complete', }, }); if (error) { // This point is only reached if there's an immediate error when // confirming the payment. Show the error to your customer (for example, payment details incomplete) handleError(error); } else { // Your customer is redirected to your `return_url`. For some payment // methods like iDEAL, your customer is redirected to an intermediate // site first to authorize the payment, then redirected to the `return_url`. } });

Gérer les événements post-paiement

Le prélèvement automatique Bacs est un moyen de paiement à notification différée, de sorte que les fonds ne sont pas immédiatement disponibles.

Calendrier

Avec Bacs Direct Debit, la mise à disposition des fonds sur votre solde Stripe peut prendre plusieurs jours ouvrables. C’est ce que l’on appelle le délai de règlement. Les paiements soumis après la date limite quotidienne sont traités le jour ouvrable suivant.

Il faut compter 4 jours ouvrés pour confirmer l’aboutissement ou l’échec d’un paiement par prélèvement automatique Bacs lorsque le mandat existe déjà, et 7 jours ouvrés lorsque vous devez collecter un nouveau mandat.

Dans certains cas, la banque peut nous informer d’un échec de paiement après que le paiement a été marqué comme abouti sur votre compte Stripe. Le cas échéant, l’échec de paiement est identifié comme un litige et reçoit le code de motif approprié.

Le tableau suivant décrit les délais de règlement des paiements proposés par Stripe pour les paiements de { % $lpm_name %}.

Type de règlementPaiement réussiFonds disponiblesHeure limite
Virement standardT+3 at 21:00 UTCT+4 at 00:00 UTC20:00 Europe/London

Configurer des webhooks

Stripe envoie plusieurs événements pendant le processus de paiement et après sa finalisation. Utilisez l’outil de webhook du Dashboard ou suivez le guide consacré aux webhooks pour recevoir ces événements et exécuter des actions, comme envoyer une confirmation de commande par e-mail à votre client, enregistrer la vente dans une base de données ou lancer un flux de livraison.

Pour les prélèvements automatiques Bacs, vous devez gérer l’événement payment_intent.succeeded afin de confirmer l’aboutissement du paiement. Stripe vous recommande également de gérer les événements payment_intent.processing et payment_intent.payment_failed.

Pour tester des webhooks en local, vous pouvez utiliser la CLI Stripe. Après l’avoir installée, vous pouvez transférer des événements à votre serveur :

Command Line
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is '{{WEBHOOK_SIGNING_SECRET}}' (^C to quit)

En savoir plus sur la configuration des webhooks.

Tester l'intégration

Vous avez à votre disposition plusieurs numéros de compte bancaire de test dans un environnement de test pour vérifier que cette intégration est prête.

Code guichetNuméro de compteDescription
10880000012345Le paiement aboutit et l’état du PaymentIntent passe de processing à succeeded.
10880090012345Le paiement aboutit au bout de trois minutes et l’état du PaymentIntent passe de processing à succeeded.
10880033333335Le paiement est accepté, mais échoue immédiatement avec un code d’échec debit_not_authorized et le PaymentIntent bascule de processing à requires_payment_method. L’objet Mandate devient inactive et le PaymentMethod ne peut plus être utilisé.
10880093333335Le paiement échoue au bout de trois minutes avec un code d’échec debit_not_authorized et le PaymentIntent bascule de processing à requires_payment_method. L’objet Mandate devient inactive et le PaymentMethod ne peut plus être utilisé.
10880022222227Le paiement échoue avec un code d’échec insufficient_funds et le PaymentIntent bascule de processing à requires_payment_method. L’objet Mandate reste active et le PaymentMethod peut à nouveau être utilisé.
10880092222227Le paiement échoue au bout de trois minutes avec un code d’échec insufficient_funds et le PaymentIntent bascule de processing à requires_payment_method. L’objet Mandate reste active et le PaymentMethod peut à nouveau être utilisé.
10880055555559Le paiement aboutit au bout de trois minutes et l’état du PaymentIntent passe de processing à succeeded, mais un litige est immédiatement créé.
10880000033333La création du moyen de paiement aboutit, mais le mandat est refusé par la banque du client et passe immédiatement à l’état inactif.
10880000044444La demande de mise en place d’un prélèvement automatique Bacs échoue immédiatement en raison d’un numéro de compte non valide et le client est invité à mettre à jour ses informations avant de soumettre sa demande. Les données de paiement ne sont pas collectées.
10880034343434Le paiement échoue avec un code d’erreur charge_exceeds_source_limit, car le montant du paiement entraîne un dépassement de la limite hebdomadaire de volume de paiement du compte.
10880012121212Le paiement échoue avec un code d’erreur charge_exceeds_weekly_limit, car le montant du paiement dépasse la limite du volume de transactions du compte.

Pour vos tests, vous pouvez utiliser l’un des numéros de compte fournis ci-dessus. Cependant, dans la mesure où le traitement des paiements par prélèvement automatique Bacs prend plusieurs jours, privilégiez les numéros de compte de test qui fonctionnent avec un délai de trois minutes, de manière à mieux simuler le comportement en situation réelle.

Remarque

Par défaut, Stripe envoie automatiquement des e-mails de notification au client lors de la collecte initiale de ses données de paiement et chaque fois qu’un débit est ensuite effectué sur son compte. Ces notifications ne sont pas envoyées dans les environnements de test.

Échecs de paiement

Les échecs de paiement peuvent être dus à diverses raisons. Le motif d’un échec est disponible via charge.failure_code. Seuls les paiements présentant certains codes d’échec peuvent être retentés. Lorsqu’une nouvelle tentative de paiement échoue, il convient de contacter votre client pour lui demander de renouveler son règlement avec un compte bancaire ou un moyen de paiement différent.

Les codes d’échec que nous envoyons actuellement pour les prélèvements automatiques Bacs sont indiqués ci-dessous. Cette liste est susceptible d’être enrichie à tout moment, et il importe donc de ne pas la considérer comme exhaustive dans le cadre du développement et de la maintenance de votre code.

Code d’échecDescriptionNouvelle tentative possible
account_closedLe compte bancaire a été clôturé.Non
bank_ownership_changedLe compte a été transféré à un nouveau prestataire de services de paiement (PSP). Vérifiez si les coordonnées du nouveau PSP vous ont été communiquées. Si ce n’est pas le cas, vous devez obtenir un nouveau mandat auprès du client.Non
debit_not_authorizedLe client a informé sa banque que le paiement n’était pas autorisé ou que la banque payeuse ne détient aucun mandat.Non
generic_could_not_processLe paiement n’a pas pu être traité.Oui
insufficient_fundsLe compte du client ne dispose pas de fonds suffisants pour couvrir le paiement.Oui
invalid_account_numberLe numéro de compte n’est pas valide. Cela peut signifier qu’il ne s’agit pas d’un compte libellé en GBP ou que le compte ne peut pas traiter les paiements par prélèvement automatique.Non

Pour effectuer une nouvelle tentative de paiement, confirmez le PaymentIntent à nouveau à l’aide du même PaymentMethod.

Pour mettre toutes les chances de votre côté que le paiement aboutisse, nous vous conseillons de contacter le payeur avant la nouvelle tentative.

FacultatifConfigurer la date de prélèvement du client

FacultatifPersonnaliser les références de mandat à l’aide d’un préfixe

Voir aussi

  • Webhooks PaymentIntent
  • Gérer les mandats
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