Estructura del payload EPC069-12
El payload EPC069-12 es un formato de texto basado en líneas con exactamente 11 líneas. Cada línea tiene un significado fijo – las líneas vacías están permitidas para campos opcionales:
BCD ← Service Tag
002 ← Versión
1 ← Juego de caracteres (1=UTF-8)
SCT ← Código de identificación (SEPA Credit Transfer)
← BIC (opcional, dejar vacío)
Max Mustermann ← Nombre (máx. 70 caracteres)
DE89370400440532013000 ← IBAN
EUR99.99 ← Importe (EUR + importe, ej. EUR99.99)
← Purpose Code (dejar vacío)
← Remittance Info (estructurado, dejar vacío)
Factura 2026-001 ← Referencia de pago (máx. 140 caracteres)Versiones 001 vs. 002
La versión 001 requiere BIC, la versión 002 hace el BIC opcional. Recomendado: versión 002 para nuevas implementaciones. La mayoría de apps bancarias aceptan ambas versiones. Con la versión 002, la línea BIC puede quedar vacía, ya que la red SEPA identifica el banco a partir del IBAN.
Nivel de corrección de errores
EPC069-12 recomienda el nivel M (15 % de recuperación) para visualización digital en pantallas. Para impresión en facturas o carteles, se recomienda el nivel H (30 % de recuperación) para mejor legibilidad – incluso si el QR Code está ligeramente dañado o sucio.
Ejemplo de implementación JavaScript
Esta función genera un payload EPC069-12 válido, que puede renderizarse directamente con una biblioteca QR Code (ej. qrcode o qr-code-styling):
function buildEPCPayload({ name, iban, bic = '', amount, purpose = '' }) {
const amountStr = amount ? 'EUR' + Number(amount).toFixed(2) : '';
return [
'BCD', // Service Tag
'002', // Versión
'1', // Juego de caracteres (UTF-8)
'SCT', // SEPA Credit Transfer
bic.trim(), // BIC (opcional)
name.trim().slice(0, 70),
iban.replace(/\s+/g, '').toUpperCase(),
amountStr, // EUR + importe o vacío
'', // Purpose Code (vacío)
'', // Remittance Info estructurada (vacío)
purpose.trim().slice(0, 140)
].join('\n');
}Preguntas frecuentes sobre EPC QR Code
¿Cuál es la diferencia entre EPC QR Code, GiroCode y SEPA QR Code?
Todos designan lo mismo: EPC QR Code es el nombre técnico, GiroCode la marca alemana, SEPA QR Code el término funcional. La norma subyacente es EPC069-12.
¿Qué versión de la norma EPC069-12 debo usar?
Versión 002 (BIC opcional), ya que los bancos más recientes ya no requieren BIC. La versión 002 es retrocompatible y está soportada por todas las apps bancarias modernas.
¿Cuál es el importe máximo en un EPC QR Code?
No hay límite técnico en la norma EPC069-12 en sí. Sin embargo, las transferencias SEPA tienen un máximo de 999.999.999,99 EUR.
¿Cómo integro el generador EPC QR Code en mi sitio web?
Vía API en /api/generate o mediante el enfoque de parámetros URL. Todos los detalles están en la documentación API en /api-docs.