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
      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
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 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 le PaymentMethod d’un prélèvement automatique SEPA en demandant à votre client d’authentifier ses coordonnées bancaires à l’aide de Bancontact, d’iDEAL ou de Sofort.

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
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node
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
Go
.NET
No results
curl -X POST https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

Créer un PaymentIntent
Côté serveur

Un PaymentIntent est un objet qui représente votre intention d’encaisser le paiement d’un client et suit le cycle de vie du processus de paiement étape par étape. Pour commencer, créez un PaymentIntent sur votre serveur et précisez le montant à encaisser ainsi que la devise eur (le prélèvement automatique SEPA fonctionne uniquement avec celle-ci). Si vous avez déjà créé une intégration à l’aide de l’API Payment Intents, ajoutez sepa_debit à la liste des types de moyens de paiement relative à votre PaymentItent. Précisez l’identifiant 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
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"="eur" \ -d "setup_future_usage"="off_session" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "payment_method_types[]"="sepa_debit" \ -d "metadata[integration_checker]"="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 à 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/basil/stripe.js"></script> </head>

Créez une instance d’Elements avec le JavaScript suivant sur votre page de paiement :

const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); const elements = stripe.elements();

Ajouter et configurer un Element IBAN

Elements doit avoir un emplacement dédié dans votre formulaire de paiement. Créez des nœuds de DOM (conteneurs) ayant des ID uniques dans votre formulaire de paiement. Votre client doit également lire et accepter le mandat de prélèvement automatique SEPA.

Affichez le texte d’autorisation standard suivant afin que votre client puisse signer le mandat de manière tacite.

Remplacez Rocket Rides par le nom de votre entreprise.

Authorization text template

By providing your payment information and confirming this payment, you authorise (A) and Stripe, our payment service provider, to send instructions to your bank to debit your account and (B) your bank to debit your account in accordance with those instructions. As part of your rights, you are entitled to a refund from your bank under the terms and conditions of your agreement with your bank. A refund must be claimed within 8 weeks starting from the date on which your account was debited. Your rights are explained in a statement that you can obtain from your bank. You agree to receive notifications for future debits up to 2 days before they occur.

Copier

​​La configuration d’un moyen de paiement ou la confirmation d’un PaymentIntent vaut acceptation du mandat. Le client ayant tacitement signé le mandat, vous devez communiquer ces conditions dans votre formulaire ou par e-mail.

submit_payment.html
HTML
CSS
No results
<form action="/charge" method="post" id="payment-form"> <div class="form-row inline"> <div class="col"> <label for="accountholder-name"> Name </label> <input id="accountholder-name" name="accountholder-name" placeholder="Jenny Rosen" required /> </div> <div class="col"> <label for="email"> Email Address </label> <input id="email" name="email" type="email" placeholder="jenny.rosen@example.com" required /> </div> </div> <div class="form-row"> <!-- Using a label with a for attribute that matches the ID of the Element container enables the Element to automatically gain focus when the customer clicks on the label. --> <label for="iban-element"> IBAN </label> <div id="iban-element"> <!-- A Stripe Element will be inserted here. --> </div> </div> <!-- Add the client_secret from the PaymentIntent as a data attribute --> <button id="submit-button" data-secret="{{CLIENT_SECRET}}">Submit Payment</button> <!-- Display mandate acceptance text. --> <div id="mandate-acceptance"> By providing your payment information and confirming this payment, you authorise (A) Rocket Rides and Stripe, our payment service provider and/or PPRO, its local service provider, to send instructions to your bank to debit your account and (B) your bank to debit your account in accordance with those instructions. As part of your rights, you are entitled to a refund from your bank under the terms and conditions of your agreement with your bank. A refund must be claimed within 8 weeks starting from the date on which your account was debited. Your rights are explained in a statement that you can obtain from your bank. You agree to receive notifications for future debits up to 2 days before they occur. </div> <!-- Used to display form errors. --> <div id="error-message" role="alert"></div> </form>

Lors du chargement du formulaire, vous pouvez créer une instance du composant Element IBAN et l’intégrer au conteneur Element :

// Custom styling can be passed to options when creating an Element. const style = { base: { color: '#32325d', fontSize: '16px', '::placeholder': { color: '#aab7c4' }, ':-webkit-autofill': { color: '#32325d', }, }, invalid: { color: '#fa755a', iconColor: '#fa755a', ':-webkit-autofill': { color: '#fa755a', }, }, }; const options = { style, supportedCountries: ['SEPA'], // Elements can use a placeholder as an example IBAN that reflects // the IBAN format of your customer's country. If you know your // customer's country, we recommend passing it to the Element as the // placeholderCountry. placeholderCountry: 'DE', }; // Create an instance of the IBAN Element const iban = elements.create('iban', options); // Add an instance of the IBAN Element into the `iban-element` <div> iban.mount('#iban-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.

La clé secrète du client doit être utilisée avec prudence, car elle peut servir à finaliser le paiement. Elle ne doit être ni enregistrée, ni intégrée dans des URL, ni dévoilée à d’autres personnes que votre client.

Utilisez stripe.confirmSepaDebitPayment pour déclencher le paiement lorsque l’utilisateur soumet le formulaire. Pour créer un PaymentMethod de type prélèvement automatique SEPA, vous devez inclure le nom et l’adresse e-mail du client dans la propriété billing_details du paramètre payment_method. De plus, les champs country et line1 doivent être renseignés dans la propriété billing_details.address pour les IBANs avec les codes pays suivants : AD, PF, TF, GI, GB, GG, VA, IM, JE, MC, NC, BL, PM, SM, CH et WF. Écoutez l’événement change de l’Element IBAN pour récupérer le code pays de l’IBAN.

const form = document.getElementById('payment-form'); const accountholderName = document.getElementById('accountholder-name'); const email = document.getElementById('email'); const submitButton = document.getElementById('submit-button'); const clientSecret = submitButton.dataset.secret; form.addEventListener('submit', (event) => { event.preventDefault(); stripe.confirmSepaDebitPayment( clientSecret, { payment_method: { sepa_debit: iban, billing_details: { name: accountholderName.value, email: email.value, }, }, } ); });

Confirmer la réussite du PaymentIntent

Le prélèvement automatique SEPA étant un moyen de paiement à notification différée, les fonds ne sont pas disponibles immédiatement. Une fois le paiement envoyé, l’état du PaymentIntent passe de requires_confirmation à processing. À la réussite du paiement, l’état du PaymentIntent passe de processing à 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
Numéro de compteDescription
DE89370400440532013000L'état du PaymentIntent passe de processing à succeeded.
DE08370400440532013003L'état du PaymentIntent passe de processing à succeededau bout d'au moins trois minutes.
DE62370400440532013001L'état du PaymentIntent passe de processing à requires_payment_method.
DE78370400440532013004L'état du PaymentIntent passe de processing à requires_payment_methodau bout d'au moins trois minutes.
DE35370400440532013002L'état du PaymentIntent passe de processing à succeeded, mais un litige est immédiatement créé.
DE65370400440000343434Le 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.
DE27370400440000121212Le 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.
DE65370400440002222227Échec du paiement avec un code d’échec insufficient_funds.

FacultatifValider le composant Element IBAN

FacultatifConfigurer la date de prélèvement du client

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

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.
  • 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