Skip to content
Learni
Voir tous les tutoriels
Finance & Paiements

Comment configurer des paiements SEPA en 2026

12 minBEGINNER
Read in English

Introduction

SEPA permet d'effectuer des virements et prélèvements en euros dans toute la zone euro de façon standardisée. Ce tutoriel vous guide pas à pas pour intégrer SEPA dans une application web. Vous apprendrez à valider les coordonnées bancaires et à générer les fichiers XML conformes. C'est essentiel pour toute entreprise européenne qui souhaite automatiser ses paiements clients ou fournisseurs.

Prérequis

  • Node.js 18 ou supérieur
  • Connaissances basiques de JavaScript
  • Compte bancaire avec IBAN valide
  • Éditeur de code (VS Code recommandé)

Installation du projet

terminal
mkdir sepa-tutorial
cd sepa-tutorial
npm init -y
npm install iban

Nous initialisons un projet Node et installons la bibliothèque iban pour valider facilement les numéros de compte bancaire européens.

Validation d'un IBAN

validateIban.js
const IBAN = require('iban');

function isValidIBAN(iban) {
  if (!IBAN.isValid(iban)) {
    console.error('IBAN invalide');
    return false;
  }
  console.log('IBAN valide:', IBAN.printFormat(iban));
  return true;
}

isValidIBAN('FR7630006000011234567890189');

Cette fonction vérifie la validité de l'IBAN grâce à l'algorithme officiel SEPA. Elle affiche une erreur claire si le format est incorrect.

Créer un mandat SEPA

createMandate.js
const mandate = {
  id: 'MAND-2026-001',
  debtorName: 'Jean Dupont',
  debtorIban: 'FR7630006000011234567890189',
  debtorBic: 'AGRIFRPP',
  creditorName: 'MonEntreprise SAS',
  creditorIban: 'FR1420041010050500013M02606',
  amount: 45.00,
  currency: 'EUR',
  date: '2026-03-15'
};

console.log('Mandat créé:', JSON.stringify(mandate, null, 2));

Nous définissons ici un objet mandat SEPA avec toutes les informations obligatoires. Ce modèle peut être stocké en base de données.

Génération du fichier XML SEPA

generateSepaXml.js
const fs = require('fs');

function generatePain008(mandate) {
  const xml = `<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02">
  <CstmrDrctDbtInitn>
    <GrpHdr>
      <MsgId>${mandate.id}</MsgId>
      <CreDtTm>${new Date().toISOString()}</CreDtTm>
    </GrpHdr>
    <PmtInf>
      <ReqdColltnDt>${mandate.date}</ReqdColltnDt>
      <Cdtr>
        <Nm>${mandate.creditorName}</Nm>
      </Cdtr>
      <CdtrAcct>
        <Id><IBAN>${mandate.creditorIban}</IBAN></Id>
      </CdtrAcct>
    </PmtInf>
  </CstmrDrctDbtInitn>
</Document>`;
  fs.writeFileSync('sepa.xml', xml);
  console.log('Fichier sepa.xml généré');
}

generatePain008({
  id: 'MAND-2026-001',
  creditorName: 'MonEntreprise SAS',
  creditorIban: 'FR1420041010050500013M02606',
  date: '2026-03-15'
});

Ce script génère un fichier pain.008 minimal et conforme SEPA. Le fichier peut être envoyé directement à votre banque.

Configuration des identifiants

config.json
{
  "creditorId": "FR12ZZZ123456",
  "bankEndpoint": "https://api.banque.fr/sepa",
  "apiKey": "votre-cle-api-2026"
}

Stockez vos identifiants SEPA et clés API dans un fichier de configuration séparé pour une maintenance facile.

Bonnes pratiques

  • Toujours valider l'IBAN avant toute opération
  • Conserver les mandats signés pendant au moins 36 mois
  • Utiliser des identifiants de transaction uniques
  • Tester en environnement sandbox avant la production
  • Chiffrer les données bancaires sensibles

Erreurs courantes à éviter

  • Oublier le préfixe FR dans l'IBAN français
  • Générer un XML sans les namespaces ISO 20022
  • Ne pas vérifier la date d'exécution (T+1 minimum)
  • Réutiliser le même identifiant de mandat

Pour aller plus loin

Consultez la documentation officielle EPC et découvrez nos formations complètes sur les paiements modernes : https://learni-group.com/formations