Accéder directement au contenu
Créez un compte ou connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compteConnectez-vous
Démarrer
Paiements
Revenus
Plateformes et marketplaces
Gestion de fonds
Ressources pour les développeurs
API et SDKAide
AperçuAccepter un paiementMettre votre intégration à niveau
Paiements en ligne
PrésentationTrouver votre cas d'usage
Utiliser Payment Links
Créer une page de paiement
Créer une intégration personnalisée avec Elements
Développer une intégration dans l'application
Utiliser Managed Payments
Utiliser Checkout Studio
Paiements récurrents
Paiements par TPE
Aperçu de Terminal
Disponibilité
Lecteurs
No-code
Intégration personnalisée
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
    Paiements en stablecoins
    Prélèvements bancaires
      Prélèvement automatique ACH
      Prélèvement automatique Bacs
        Accepter un paiement
        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
    Chèques-repas
    Virements (Sources)
    Achetez maintenant, payez plus tard
    Paiements en temps réel
    Coupons
    Portefeuilles
    Exigences régionales particulières
    Moyens de paiement personnalisés
Gérer les moyens de paiement
Paiement accéléré avec Link
Opérations de paiement
Analyses
Soldes et délai de règlement
Conformité et sécurité
Devises
Refus de paiement
Litiges
Radar pour la protection contre la fraude
Virements
ReçusRemboursements et annulations
Intégrations avancées
Tunnels de paiement personnalisés
Acquisition flexible
Paiements hors session
Orchestration multiprestataire
Au-delà des paiements
Constituez votre entreprise
Cryptomonnaies
Commerce agentique
Financial Connections
Climate
Vérifier l'identité
France
Français (France)
  1. Accueil/
  2. Paiements/
  3. Add payment methods/
  4. Bank debits/
  5. Bacs 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.

Les utilisateurs de Stripe au Royaume-Uni peuvent utiliser Checkout en mode paiement pour accepter les paiements par prélèvement automatique Bacs.

Une session Checkout représente les détails de l’intention d’achat de votre client. Vous créez une session Checkout lorsque votre client souhaite effectuer un paiement. Après avoir redirigé votre client vers une session Checkout, Stripe affiche un formulaire de paiement qui permet à votre client d’effectuer son achat. Une fois le paiement finalisé, Stripe redirige le client vers votre site.

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 des produits et des tarifs

Pour pouvoir utiliser Checkout, vous devez d’abord créer un produit et un tarif. Vous devez créer un produit pour chacune de vos marchandises ou chacun de vos niveaux de service. Un produit peut être associé à un ou plusieurs tarifs.

Par exemple, vous pouvez créer un produit T-shirt associé à deux tarifs dans deux devises différentes : 20 GBP et 25 EUR. Vous pouvez ainsi modifier et ajouter des tarifs sans devoir changer les détails des produits sous-jacents. Il est possible de créer un produit et un tarif via l’API ou dans le Dashboard.

Si vous déterminez votre tarif au moment du paiement (par exemple si le client fixe le montant d’une donation) ou si vous ne souhaitez pas créer de tarif en amont, vous pouvez également créer des tarifs ponctuels au moment de la création d’une session Checkout pour un produit existant.

Mise en garde

Si vous disposez d’une intégration Checkout existante qui n’utilise pas Prices, l’API Checkout a évolué depuis l’introduction de Prices. Vous pouvez utiliser ce guide de migration pour procéder à une mise à niveau, ou bien conserver votre intégration existante en l’état.

Remarque

Les produits créés dans un environnement de test peuvent être copiés vers le mode production afin d’éviter de les recréer. Dans la vue détaillée du produit dans le Dashboard, cliquez sur Copier en mode production dans le coin supérieur droit. Vous pouvez copier plusieurs fois un même produit de l’environnement de test vers le mode production. Chaque copie crée un produit distinct en production, et les mises à jour ultérieures du produit de test ne sont pas répercutées sur les copies déjà créées en production.

Vérifiez que vous êtes dans un environnement de test, puis définissez les articles que vous souhaitez vendre. Pour créer un nouveau produit et un nouveau prix :

  • Accédez à la section Produits du Dashboard.
  • Cliquez sur Ajouter un produit.
  • Sélectionnez Ponctuel lors de la définition du tarif.

Le nom de produit, la description et l’image que vous indiquez sont présentées aux clients dans Checkout.

Créer une session Checkout
Côté clientCôté serveur

Ajoutez sur votre site Web un bouton de paiement qui appelle un endpoint côté serveur afin de créer une session Checkout.

index.html
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>

Créez une session Checkout avec line_items. Les postes de facture représentent la liste des articles achetés par le client.

Lorsque votre client effectue son paiement avec succès, il est redirigé vers le success_url, une page de votre site web qui informe le client que les informations de paiement ont été correctement collectées et que son paiement est en cours de traitement.

Lorsque votre client clique sur votre logo dans une session Checkout sans effectuer de paiement, Checkout le redirige vers le site Web que le client consultait avant d’être redirigé vers Checkout.

Checkout peut accepter un paiement et enregistrer le moyen de paiement utilisé pour réutilisation ultérieure. Les moyens de paiement enregistrés ainsi peuvent être utilisés pour de futurs paiements à l’aide d’un PaymentIntent. Une fois la session Checkout créée, redirigez votre client vers l’URL renvoyée dans la réponse.

Command Line
curl
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/checkout/sessions \ -u
sk_test_VePHdqKTYQjKNInc7u56JBrQ
:
\ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \ -d "mode"="payment" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "payment_intent_data[setup_future_usage]"="off_session" \ -d "success_url"="https://example.com/success?session_id={CHECKOUT_SESSION_ID}"

Remarque

Les règles applicables aux prélèvements automatiques Bacs prévoient l’envoi obligatoire au client d’une notification de prélèvement par e-mail à la collecte initiale de ses informations de paiement et lorsque son compte est débité. Par défaut, ces e-mails sont envoyés automatiquement par Stripe.

La création d’une session Checkout renvoie un ID de session. Mettez l’ID de session à disposition sur votre page de confirmation en incluant le modèle de variable {CHECKOUT_SESSION_ID} dans l’URL success_url, comme illustré ci-dessus.

Mise en garde

Ne vous fiez pas uniquement à la redirection vers success_url pour détecter l’initiation d’un paiement, car :

  • Des utilisateurs malveillants pourraient accéder directement au success_url sans payer et obtenir l’accès à vos biens ou à vos services.
  • Après un paiement réussi, les clients peuvent fermer l’onglet de leur navigateur avant d’être redirigés vers success_url.

Gérer les événements post-paiement
Côté serveur

Une fois que votre client a mené à bien son paiement, Stripe le redirige vers l’URL que vous avez spécifiée dans le paramètre success_url. En général, il s’agit d’une page de votre site Web qui l’informe que son paiement a abouti.

Cependant, le prélèvement automatique Bacs est un moyen de paiement à notification différée, ce qui signifie que les fonds ne sont pas immédiatement disponibles. Un paiement par prélèvement Bacs Direct Debit prend généralement 3 jours ouvrables pour que les fonds soient disponibles. Pour cette raison, vous voudrez différer le traitement de la commande jusqu’à ce que les fonds soient disponibles. Une fois le paiement réussi, le statut sous-jacent du PaymentIntent passe de processing à succeeded.

Les événements Checkout suivants sont envoyés lorsque l’état du paiement change :

Nom de l’événementDescriptionÉtapes suivantes
checkout.session.completedLe client a autorisé le paiement par prélèvement en envoyant le formulaire Checkout.Attendez que le paiement aboutisse ou échoue.
checkout.session.async_payment_succeededLe paiement du client a abouti.Traitez la commande de biens ou de services du client.
checkout.session.async_payment_failedLe paiement du client a été refusé, ou il a échoué pour une autre raison.Contactez le client par e-mail et demandez-lui de passer une nouvelle commande.

Votre code de webhook doit gérer ces trois événements Checkout.

La charge utile de chaque webhook Checkout inclut l’objet Session Checkout, qui contient des informations sur l’objet Customer et le PaymentIntent.

Le webhook checkout.session.completed est envoyé à votre serveur avant que votre client ne soit redirigé. Votre acceptation du webhook (tout code d’état 2xx) déclenche la redirection du client vers la page success_url. Si Stripe ne reçoit pas de confirmation dans les 10 secondes suivant un paiement ayant abouti, votre client est automatiquement redirigé vers la page success_url.

Sur votre page success_url, affichez un message de confirmation à votre client, en l’informant du délai de quelques jours qui vous sera nécessaire pour le traitement de sa commande, compte tenu du fait que les prélèvements automatiques Bacs ne sont pas instantanés.

Si vous acceptez les paiements instantanés (par carte bancaire, par exemple) en plus des paiements à notification différée, vous devrez modifier votre endpoint de webhook de façon à ce que les deux types de paiements soient gérés lors de la réception d’un événement checkout.session.completed.

Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# 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(
'sk_test_VePHdqKTYQjKNInc7u56JBrQ'
) # You can find your endpoint's secret in your webhook settings endpoint_secret = 'whsec_...' # Using Sinatra post '/webhook' do payload = request.body.read event = nil # Verify webhook signature and extract the event # See https://stripe.com/docs/webhooks#verify-events for more information. sig_header = request.env['HTTP_STRIPE_SIGNATURE'] begin event = Stripe::Webhook.construct_event( payload, sig_header, endpoint_secret ) rescue JSON::ParserError => e # Invalid payload status 400 return rescue Stripe::SignatureVerificationError => e # Invalid signature status 400 return end case event['type'] when 'checkout.session.completed' session = event['data']['object'] # Check if the order is paid (for example, from a card payment) payment_intent = client.v1.payment_intents.retrieve(session.payment_intent) # A delayed notification payment will have the status 'processing' order_paid = payment_intent.status == "succeeded" # Save an order in your database, marked as 'awaiting payment' create_order(session) if order_paid fulfill_order(session) end when 'checkout.session.async_payment_succeeded' session = event['data']['object'] # Fulfill the purchase... fulfill_order(session) when 'checkout.session.async_payment_failed' session = event['data']['object'] # Send an email to the customer asking them to retry their order email_customer_about_failed_payment(session) end status 200 end

Vous pouvez obtenir des informations concernant le client et le paiement en récupérant les objets Customer et PaymentIntent référencés par les propriétés customer, payment_intent dans la charge utile du webhook.

Test des webhooks en local

Pour tester des webhooks localement, vous pouvez utiliser l’interface de ligne de commande Stripe. Après l’avoir installée, vous pouvez transférer les é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

À ce stade, vous disposez théoriquement d’une intégration de prélèvement automatique Bacs de base, capable de recueillir les coordonnées bancaires de vos clients et d’accepter leurs paiements.

Il existe plusieurs numéros de compte bancaire de test que vous pouvez utiliser dans un environnement de test pour vérifier que cette intégration est prête. Vous pouvez également utiliser le token correspondant pour éviter la saisie manuelle des informations du compte.

Code guichetNuméro de compteTokenDescription
10880000012345pm_bacsDebit_successLe paiement aboutit et l’état du PaymentIntent passe de processing à succeeded.
10880090012345pm_bacsDebit_successDelayedLe paiement aboutit au bout de trois minutes et l’état du PaymentIntent passe de processing à succeeded.
10880033333335pm_bacsDebit_debitNotAuthorizedLe paiement est accepté, puis échoue immédiatement avec le code d’échec debit_not_authorized, et le PaymentIntent passe de l’état processing à l’état requires_payment_method. Le Mandat devient inactive et le PaymentMethod ne peut plus être réutilisé.
10880093333335pm_bacsDebit_debitNotAuthorizedDelayedLe paiement échoue après trois minutes avec le code d’échec debit_not_authorized, et le PaymentIntent passe de l’état processing à l’état requires_payment_method. Le Mandat devient inactive et le PaymentMethod ne peut plus être utilisé.
10880022222227pm_bacsDebit_insufficientFundsLe 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é.
10880092222227pm_bacsDebit_insufficientFundsDelayedLe 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é.
10880055555559pm_bacsDebit_disputeLe paiement aboutit au bout de trois minutes et l’état du PaymentIntent passe de processing à succeeded, mais un litige est immédiatement créé.
10880000033333pm_bacsDebit_mandateRefusedLa création du moyen de paiement aboutit, mais le mandat est refusé par la banque du client et passe immédiatement à l’état inactive.
10880000044444—La demande de configuration du prélèvement automatique Bacs échoue immédiatement en raison d’un numéro de compte invalide, et le client est invité à mettre à jour ses informations avant de soumettre à nouveau. Aucune donnée de paiement n’est collectée, donc aucun token synthétique ne correspond à ce scénario.
10880034343434pm_bacsDebit_exceedsWeeklyLimitLe 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.
10880012121212pm_bacsDebit_exceedsTransactionLimitLe paiement échoue avec le code d’échec charge_exceeds_transaction_limit en raison d’un montant supérieur à la limite de 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

Un paiement peut échouer pour de nombreuses raisons. Le motif d’un échec est indiqué par son charge.failure_code. Seuls les paiements présentant certains codes d’échec peuvent être retentés. Lorsqu’une nouvelle tentative n’est pas possible, 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é vers un nouveau prestataire de paiement (PSP). Vérifiez si on vous a communiqué les coordonnées du nouveau PSP. Sinon, vous devez obtenir un nouveau mandat de la part du client.Non
debit_not_authorizedLe client a informé sa banque que le paiement n’était pas autorisé ou la banque payeuse ne détient aucun mandat.Non
generic_could_not_processCe 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 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

Voir aussi

  • Webhooks PaymentIntent
  • Gérer les mandats
Cette page vous a-t-elle été utile ?
OuiNon
  • Besoin d'aide ? Contactez le service Support.
  • Discutez par chat sur Discord avec les développeurs de Stripe.
  • Consultez notre log des modifications.
  • Des questions ? Contactez l'équipe commerciale.
  • LLM ? Lire llms.txt.
  • Propulsé par Markdoc