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
Utiliser une page de paiement préconfiguré
Créer une intégration personnalisée avec Elements
Développer une intégration dans l'application
Utiliser Managed Payments
Paiements récurrents
Paiements par TPE
Terminal
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
      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
        Accepter un paiement
        Enregistrer les informations bancaires
    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
Opérations de paiement
Analyses
Soldes et délai de règlement
Conformité et sécurité
Devises
Refus de paiement
Litiges
Prévention de la fraude
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
Paiements automatiques
Financial Connections
Climate
Vérifier l'identité
États-Unis
Français (France)
AccueilPaiementsAdd payment methodsBank debitsSEPA Direct Debit

Accepter un paiement par prélèvement SEPA

Découvrez comment accepter les paiements par prélèvement SEPA.

Remarque

Lorsque vous traitez des paiements par prélèvement automatique SEPA à l’aide de l’ID de créancier de Stripe, nous vous recommandons d’utiliser la page de paiement prédéfinie afin de collecter les mandats de prélèvement automatique SEPA.

Accepter un paiement par prélèvement SEPA sur votre site Web consiste à créer un objet afin de suivre un paiement, à recueillir les informations de moyen de paiement et la confirmation du mandat, puis à envoyer le paiement à Stripe pour traitement. Stripe utilise cet objet de paiement, le PaymentIntent, pour suivre et gérer les états successifs du paiement jusqu’à son exécution.

Vous pouvez également configurer un moyen de paiement par prélèvement automatique SEPA PaymentMethod en demandant à votre client d’authentifier ses coordonnées bancaires via Bancontact ou iDEAL.

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 client
Côté serveur

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

Vous devez créer 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 permettra de récupérer et d’utiliser ultérieurement les informations du moyen de paiement stockées.

Créez ou récupérez un client afin de l’associer à ce paiement. Ajoutez le code suivant à votre serveur pour créer le nouveau client.

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
:"

Créer un PaymentIntent
Côté serveur

Une PaymentIntent est un objet qui représente votre intention de collecter le paiement d’un client et qui suit le cycle de vie du processus de paiement à chaque étape. Tout d’abord, créez un PaymentIntent sur votre serveur et spécifiez le montant à collecter ainsi que la devise en eur (le prélèvement automatique SEPA ne prendre pas en charge les autres devises). Si vous disposez déjà d’une intégration utilisant l’API Payment Intents, ajoutez sepa_debit à la liste des types de moyens de paiement pour votre PaymentIntent. Spécifiez l’ID du client.

Pour enregistrer le compte de prélèvement automatique SEPA en vue de le réutiliser, définissez le paramètre setup_future_usage sur off_session. Le prélèvement automatique SEPA accepte uniquement la valeur off_session pour ce paramètre.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=eur \ -d setup_future_usage=off_session \ -d customer=
"{{CUSTOMER_ID}}"
\ -d "payment_method_types[]"=sepa_debit \ -d "metadata[integration_check]"=sepa_debit_accept_a_payment

Recueillir les informations du moyen de paiement et la confirmation du mandat
Côté client

Vous pouvez à présent collecter les informations de paiement de votre client avec Stripe Elements. Elements est un ensemble de composants d’interface utilisateur préconfigurés pour la collecte des informations de paiement.

Un composant Element contient une balise iframe qui envoie de manière sécurisée les informations de paiement à Stripe par une connexion HTTPS. Pour que votre intégration fonctionne, l’adresse de votre page de règlement doit aussi commencer par https:// au lieu de http://.

Vous pouvez tester votre intégration sans utiliser le protocole HTTPS. Activez-le au moment d’accepter des paiements en mode production.

Configurer Stripe Elements

Stripe Elements est automatiquement disponible en tant que fonctionnalité de Stripe.js. Intégrez le script Stripe.js sur votre page de paiement, entre les balises head de votre fichier HTML. Chargez toujours Stripe.js directement à partir de js.stripe.com pour maintenir votre conformité PCI. Vous ne devez pas inclure le script dans un lot ni en héberger de copie.

submit_payment.html
<head> <title>Submit Payment</title> <script src="https://js.stripe.com/clover/stripe.js"></script> </head>

Créez une instance d’Elements en utilisant le JavaScript suivant sur votre page de paiement. Transmettez mode, currency et amount afin de permettre au Payment Element de collecter les informations de paiement relatives au prélèvement automatique SEPA :

const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); const options = { mode: 'payment', currency: 'eur', amount: 1099, // Automatically save the payment method for future payments setup_future_usage: 'off_session', }; const elements = stripe.elements(options);

Ajouter le composant Element Payment

Le Payment Element doit être intégré à votre formulaire de paiement. Créez dans votre formulaire un nœud DOM (conteneur) vide avec un identifiant unique. Lorsque le prélèvement automatique SEPA est activé, le Payment Element affiche automatiquement le formulaire SEPA Direct Debit ainsi que le texte d’acceptation du mandat.

submit_payment.html
<form action="/charge" method="post" id="payment-form"> <div id="payment-element"> <!-- The Payment Element will be inserted here. --> </div> <!-- Add the client_secret from the PaymentIntent as a data attribute --> <button id="submit-button" data-secret="{{CLIENT_SECRET}}">Submit Payment</button> <!-- Used to display form errors. --> <div id="error-message" role="alert"></div> </form>

Lorsque le formulaire se charge, créez une instance du Payment Element et montez-la dans le conteneur Element. Le Payment Element collecte automatiquement le nom du client, son adresse e-mail, son IBAN et affiche le texte d’acceptation du mandat.

// Create and mount the Payment Element const paymentElement = elements.create('payment'); paymentElement.mount('#payment-element');

Envoyer le paiement à Stripe
Côté client

Au lieu de transmettre au client l’objet PaymentIntent dans son intégralité, utilisez la clé secrète du client de l’étape 3. Cette clé est différente de vos clés API qui servent à authentifier les requêtes à l’API Stripe.

Le clé secrète du client doit néanmoins être manipulée avec précaution, car elle peut permettre de finaliser le paiement. Ne l’enregistrez pas dans les logs, ne l’intégrez pas dans des URL et ne l’exposez à personne d’autre que le client.

Utilisez stripe.confirmPayment pour finaliser le paiement lorsque l’utilisateur soumet le formulaire. Le Payment Element collecte automatiquement le nom du client, son adresse e-mail et son IBAN, et gère l’acceptation du mandat :

const form = document.getElementById('payment-form'); const submitButton = document.getElementById('submit-button'); const clientSecret = submitButton.dataset.secret; form.addEventListener('submit', async (event) => { event.preventDefault(); const {error} = await stripe.confirmPayment({ elements, clientSecret, confirmParams: { return_url: 'https://example.com/order/complete', }, }); if (error) { // Show error to your customer (for example, payment details incomplete) const errorMessage = document.getElementById('error-message'); errorMessage.textContent = error.message; } else { // Your customer will be redirected to your `return_url`. } });

Confirmer la réussite du PaymentIntent

SEPA Direct Debit is a delayed notification payment method, so funds aren’t immediately available. When the payment has been submitted successfully, the PaymentIntent status is updated from requires_confirmation to processing. After the payment has succeeded, the PaymentIntent status is updated from processing to succeeded.

Les événements suivants sont envoyés lorsque le PaymentIntent change d’état :

ÉvénementDescriptionÉtapes suivantes
payment_intent.processingLe paiement du client a bien été envoyé à Stripe.Attendez que le paiement effectué réussisse ou échoue.
payment_intent.succeededLe paiement du client a abouti.Traitez la commande de biens ou de services de votre client.
payment_intent.payment_failedLe paiement du client a été refusé.Envoyez un e-mail ou une notification push au client pour lui demander d’utiliser un autre moyen de paiement.

Nous vous recommandons d’utiliser des webhooks afin de confirmer que le paiement a abouti et pour signaler au client que le paiement a été effectué.

Veuillez noter que, les paramètres setup_future_usage et customer ayant été définis, le PaymentMethod sera associé à l’objet Customer dès lors que le paiement passera à l’état processing. Cette association survient quelle que soit l’issue du paiement (succès ou échec).

Tester l'intégration

Stripe vous fournit plusieurs numéros de test que vous pouvez utiliser pour vous assurer que votre intégration est prête à passer en mode production. Utilisez les numéros de test de prélèvement SEPA lorsque vous testez votre intégration Checkout avec un prélèvement SEPA.

Testez les numéros IBAN

Utilisez ces IBAN de test avec le Payment Element pour tester votre intégration prélèvement automatique SEPA. Le Payment Element valide automatiquement l’IBAN et affiche le mandat lorsque vous saisissez l’une de ces valeurs de test.

Numéro de compteTokenDescription
DE89370400440532013000pm_success_deL'état du PaymentIntent passe de processing à succeeded.
DE08370400440532013003pm_successDelayed_deL'état du PaymentIntent passe de processing à succeededau bout d'au moins trois minutes.
DE62370400440532013001pm_failed_deL'état du PaymentIntent passe de processing à requires_payment_method.
DE78370400440532013004pm_failedDelayed_deL'état du PaymentIntent passe de processing à requires_payment_methodau bout d'au moins trois minutes.
DE35370400440532013002pm_disputed_deL'état du PaymentIntent passe de processing à succeeded, mais un litige est immédiatement créé.
DE65370400440000343434pm_exceedsWeeklyVolumeLimit_deLe 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.
DE27370400440000121212pm_exceedsWeeklyTransactionLimit_deLe 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.
DE65370400440002222227pm_insufficientFunds_deÉchec du paiement avec un code d’échec insufficient_funds.

Remarque

Le Payment Element valide automatiquement l’IBAN et les autres informations de paiement au fur et à mesure de la saisie par le client. Les messages d’erreur s’affichent directement dans le Payment Element ; vous n’avez donc pas besoin de gérer la validation manuellement.

FacultatifConfigurer la date de prélèvement du client

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.

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

Vous pouvez personnaliser les références des mandats de prélèvement automatique SEPA afin de simplifier l’identification des mandats. Pour ce faire, saisissez la valeur facultative payment_method_options.sepa_debit.mandate_options.reference_prefix. Nous ajoutons le reference_prefix au début d’une séquence unique pour nous assurer que l’ensemble de la référence reste unique.

Le reference_prefix doit répondre aux exigences suivantes :

  • Longueur maximale : 12 caractères
  • Doit commencer par un chiffre ou une lettre majuscule
  • Caractères autorisés :
    • Lettres majuscules
    • Chiffres
    • Espaces
    • Caractères spéciaux : ., /, &, -, _
  • Ne peut pas commencer par STRIPE

Ajoutez tout délimiteur souhaité dans le préfixe, car nous n’en ajoutons pas par défaut. Nous réduisons les espaces de fin à un espace maximum. Avec un préfixe valide, la référence résultante comporte toujours 24 caractères.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d currency=eur \ -d amount=100 \ -d "payment_method_types[]"=sepa_debit \ -d "payment_method_options[sepa_debit][mandate_options][reference_prefix]"=EX4MPL3-

La référence générée ressemble à EX4MPL3-19CNCI920C2M02O3.

Code d’erreurMessage
invalid_sepa_mandate_reference_prefix_formatLa valeur de reference_prefix ne doit pas comporter plus de 12 caractères et ne peut contenir que des lettres majuscules, des chiffres, des espaces ou les caractères spéciaux /, _, -, & et .. Elle ne peut pas commencer par STRIPE.

Voir aussi

  • Enregistrer les coordonnées de prélèvement automatique SEPA pour les paiements futurs
  • Paiements Connect
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