Structure du payload EPC069-12
Le payload EPC069-12 est un format texte basé sur des lignes avec exactement 11 lignes. Chaque ligne a une signification fixe – les lignes vides sont autorisées pour les champs optionnels :
BCD ← Service Tag
002 ← Version
1 ← Jeu de caractères (1=UTF-8)
SCT ← Code d'identification (SEPA Credit Transfer)
← BIC (optionnel, laisser vide)
Max Mustermann ← Nom (max 70 caractères)
DE89370400440532013000 ← IBAN
EUR99.99 ← Montant (EUR + montant, ex. EUR99.99)
← Purpose Code (laisser vide)
← Remittance Info (structuré, laisser vide)
Facture 2026-001 ← Référence de paiement (max 140 caractères)Versions 001 vs. 002
La version 001 exige un BIC, la version 002 rend le BIC optionnel. Recommandé : version 002 pour les nouvelles implémentations. La plupart des applications bancaires acceptent les deux versions. Avec la version 002, la ligne BIC peut rester vide, car le réseau SEPA identifie la banque à partir de l'IBAN.
Niveau de correction d'erreurs
EPC069-12 recommande le niveau M (15 % de récupération) pour l'affichage numérique sur écran. Pour l'impression sur factures ou affiches, le niveau H (30 % de récupération) est recommandé pour une meilleure lisibilité – même si le QR Code est légèrement endommagé ou sale.
Exemple d'implémentation JavaScript
Cette fonction génère un payload EPC069-12 valide, qui peut être rendu directement avec une bibliothèque QR Code (ex. qrcode ou qr-code-styling) :
function buildEPCPayload({ name, iban, bic = '', amount, purpose = '' }) {
const amountStr = amount ? 'EUR' + Number(amount).toFixed(2) : '';
return [
'BCD', // Service Tag
'002', // Version
'1', // Jeu de caractères (UTF-8)
'SCT', // SEPA Credit Transfer
bic.trim(), // BIC (optionnel)
name.trim().slice(0, 70),
iban.replace(/\s+/g, '').toUpperCase(),
amountStr, // EUR + montant ou vide
'', // Purpose Code (vide)
'', // Remittance Info structurée (vide)
purpose.trim().slice(0, 140)
].join('\n');
}Questions fréquentes sur l'EPC QR Code
Quelle est la différence entre EPC QR Code, GiroCode et SEPA QR Code ?
Tous désignent la même chose : EPC QR Code est le nom technique, GiroCode la marque allemande, SEPA QR Code le terme fonctionnel. La norme sous-jacente est EPC069-12.
Quelle version de la norme EPC069-12 dois-je utiliser ?
Version 002 (BIC optionnel), car les banques récentes n'exigent plus de BIC. La version 002 est rétrocompatible et supportée par toutes les applications bancaires modernes.
Quel est le montant maximum dans un EPC QR Code ?
Il n'y a pas de limite technique dans la norme EPC069-12 elle-même. Cependant, les virements SEPA ont un maximum de 999.999.999,99 EUR.
Comment intégrer le générateur EPC QR Code dans mon site web ?
Via l'API sous /api/generate ou via l'approche par paramètres URL. Tous les détails se trouvent dans la documentation API sous /api-docs.