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
mkdir sepa-tutorial
cd sepa-tutorial
npm init -y
npm install ibanNous 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
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
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
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
{
"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