7 min de lecturaFunciones

Código QR EPC: el estándar de pago SEPA explicado

Un código QR EPC codifica una transferencia SEPA, no una URL, para que la app del banco pueda rellenar el formulario. Qué contiene la carga útil, y por qué no se puede rastrear.

Marius Voß
DevRel · edge infra
La carga útil de un código QR EPC mostrada como doce líneas de texto sin formato que empiezan con la etiqueta de servicio BCD, junto a un formulario de transferencia de una app bancaria rellenado a partir de ella

Un código QR EPC no contiene un enlace. Contiene una transferencia SEPA, escrita como un breve bloque de texto sin formato, y una app bancaria que reconoce el formato lo lee y rellena el formulario de transferencia. No se contacta con ningún servidor, no se consulta nada, y nada sobre el escaneo llega hasta ti.

Ese único hecho decide todo lo demás sobre cómo se usan estos códigos. No puedes acortar uno, no puedes redirigirlo, y no puedes contar los escaneos, porque no hay ninguna petición en ningún punto del flujo. El estándar que hay detrás es el EPC069-12 del European Payments Council, los códigos suelen llamarse GiroCodes en los mercados de habla alemana, y merece la pena entender el formato con precisión antes de imprimir miles de ellos en facturas. Para el caso general de qué puede llevar un código, qué es un código QR cubre la pregunta sobre la carga útil.

Qué contiene realmente la carga útil

La carga útil es una secuencia de líneas, en un orden fijo, cada una un elemento independiente. Un analizador lee la línea 1, espera BCD, lee la línea 4, espera SCT, y se rinde si falta cualquiera de las dos.

LíneaContenidoLímite
Etiqueta de servicioBCDfijo, 3 caracteres
Versión001 o 002002 hace que el BIC sea opcional
Conjunto de caracteres1 para UTF-8, hasta 8un dígito
IdentificaciónSCTfijo, 3 caracteres
BICidentificador del banco beneficiario11 caracteres, a menudo se omite
Nombre del beneficiarioel titular de la cuenta70 caracteres
IBANcuenta del beneficiario34 caracteres
ImporteEUR seguido del valorde 0,01 a 999999999,99, en EUR
Código de propósitopropósito ISO, poco usado4 caracteres
Referencia estructuradareferencia del acreedor, o35 caracteres
Texto sin estructuraren su lugar, remesa en texto libre140 caracteres
Beneficiario a originadornota mostrada a quien paga70 caracteres

Hay dos reglas que suelen confundir a la gente. La referencia estructurada y el texto sin estructurar son mutuamente excluyentes: rellena una y deja la otra vacía. Y el importe es opcional, lo cual es la elección correcta para un código de donación donde decide quien paga, y la elección equivocada para una factura donde quieres que la cifra exacta venga ya rellenada.

Todo el bloque tiene un límite de 331 bytes. Las directrices EPC069-12 también fijan el nivel de corrección de errores en M y limitan el símbolo a la versión 13, así que el código que imprimes tiene un techo conocido en el número de módulos. Si estás construyendo esto en código en lugar de hacer clic en un generador, la documentación de la librería Segno muestra el orden de los campos y las reglas de codificación en una forma que puedes probar.

Los cuatro bloques de una carga útil de QR EPC, desde la etiqueta de servicio fija hasta los datos del beneficiario y el importe, terminando en la referencia de la remesa

Por qué no puedes acortarlo ni rastrearlo

Un código QR rastreado funciona codificando una URL que te pertenece. El escaneo abre esa URL, tu redirección responde, cuentas la petición, y el visitante llega a donde apunte el enlace en ese momento. Códigos QR dinámicos frente a estáticos cubre el mecanismo por completo.

Nada de eso se aplica aquí. La app bancaria no es un navegador. Analiza texto, comprueba que coincide con el formato, y abre un formulario de pago localmente en el dispositivo. No hay ninguna petición HTTP que interceptar, así que:

  • No existe ningún recuento de escaneos, en ningún sitio. Ni en tu herramienta, ni en la del banco.
  • Nada se puede redirigir. Un IBAN equivocado significa una reimpresión.
  • Envolver la carga útil en un enlace corto la rompe por completo, porque el analizador ve https donde espera BCD.

He visto a un equipo pasarse una semana intentando conseguir atribución en un código de pago antes de que alguien se leyera la especificación. La respuesta honesta es que el lado del pago y el lado de la medición son dos códigos distintos, y si el diseño solo tiene sitio para uno, gana el código de pago.

Lo que sí puedes medir es todo lo que lo rodea. Si un envío postal lleva una factura con un código de pago, pon un enlace corto rastreado aparte en la carta para el portal del cliente, las condiciones o la página de soporte, y lee el compromiso a partir de ahí. Las funciones de código QR de Elido cubren la mitad rastreable de la hoja, y el código de pago se queda exactamente como exige el estándar.

Dónde funciona y dónde no

El soporte vive en cada app bancaria individual, razón por la cual la cobertura es desigual de una forma que las listas por país exageran. Las apps austríacas y alemanas leen estos códigos desde hace años, las apps finlandesas y neerlandesas son en general fiables, el soporte belga es bueno. Más allá de eso, prueba antes de comprometerte con una tirada de impresión.

Dos vecinos suelen confundirse con este. El QR-bill suizo es una especificación distinta, con su propio diseño y una cruz suiza en el centro del símbolo; no es un código EPC y las apps de la zona euro no lo leerán como un pago. Y un enlace de pago de un procesador de tarjetas no es esto en absoluto: es una URL corriente dentro de un QR, con un checkout alojado al final, y se comporta como cualquier otro enlace web, incluido el rastreo que trae consigo.

Para la pregunta más amplia de qué puede poner delante de sus clientes un negocio regulado de pagos o de préstamos, acortadores de URL para fintech cubre las partes en las que interviene un enlace.

Un código QR de pago decodificado sin conexión en un formulario de transferencia, comparado con un código QR de enlace que llega a una redirección y genera analítica

Crear uno sin arrepentirte

Seis comprobaciones, en el orden en que te ahorran dinero.

  1. Valida el IBAN antes de generar el código, no después de imprimirlo. Una prueba de checksum no cuesta nada, y una reimpresión cuesta una tirada entera.
  2. Decide la cuestión del importe de forma deliberada. Fijo para facturas, vacío para carteles de donación donde debería poder darse cualquier cifra.
  3. Prefiere la referencia estructurada al texto libre. Es más corta, se concilia automáticamente en tu contabilidad, y mantiene la carga útil pequeña.
  4. Pruébalo en al menos tres apps bancarias, en las dos plataformas de teléfono. Los analizadores difieren en el rigor con que tratan los campos opcionales.
  5. Dimensiona el código impreso para la distancia desde la que se va a escanear, exactamente igual que con cualquier otro código. Qué tamaño debe tener un código QR tiene la aritmética.
  6. Que quede mate. Un barniz brillante sobre un código de pago en una factura, bajo la luz de una oficina, es un ticket de soporte esperando a ocurrir.

El problema de la pegatina

Hay un único vector de fraude real, y es físico en lugar de digital. Un código de pago estático impreso en una factura, un parquímetro, el cartel de un puesto de mercado o un póster benéfico puede cubrirse con una pegatina que lleve un IBAN distinto. Nada en el código se resiste a eso, porque la carga útil es el papel.

Las mitigaciones son igual de físicas. Imprime el código dentro del diseño de la factura, donde una etiqueta resultaría obvia, en lugar de sobre un parche adhesivo. Muestra el nombre del beneficiario y las últimas cifras del IBAN en texto junto al código, para que quien paga pueda comparar. Y en las instrucciones de confirmación del pago, dile a la gente que lea el nombre que muestra su app bancaria antes de confirmar, porque esa pantalla es el único sitio donde la suplantación se hace visible. ¿Son seguros los códigos QR? Qué es en realidad el quishing cubre el patrón de ataque más amplio, la mayor parte del cual sí se aplica a los códigos de enlace que imprimes en otras partes de la misma página.

La parte tranquilizadora: un pago siempre necesita que una persona lo confirme en una app bancaria autenticada. El código rellena un formulario, nunca mueve dinero por sí mismo.

Lee la serie central

Este artículo pertenece al clúster de funciones. Para el flujo de trabajo de impresión alrededor de cualquier código que generes, una campaña de código QR desde cero es el artículo central, y la guía de códigos QR en la documentación cubre cómo generar el tipo rastreable a través de la API.

Relacionados en el blog

Preguntas frecuentes

¿Qué es un código QR EPC?

Un código QR que codifica los datos de una transferencia SEPA como texto sin formato, para que una app bancaria pueda leerlo y rellenar el formulario de transferencia. Fue estandarizado por el European Payments Council en las directrices EPC069-12 y también se conoce como GiroCode. La carga útil es una secuencia fija de líneas que empieza con la etiqueta de servicio BCD, y no contiene ninguna dirección web.

¿Qué países admiten pagos con GiroCode?

El soporte está en la app bancaria, no en el país, pero en la práctica los códigos se leen ampliamente en Austria, Alemania, Finlandia, los Países Bajos y Bélgica. En el resto de la zona euro la cobertura es irregular, y fuera de ella el código carece de sentido. Suiza usa su propio estándar QR-bill, que se parece pero no es compatible.

¿Puede un código QR EPC ser dinámico o rastreable?

No. Los datos del pago están dentro del patrón impreso, y el teléfono los decodifica sin conexión, sin contactar con ningún servidor, así que no hay nada que redirigir ni nada que contar. Si necesitas cambiar el importe o la referencia, generas un código nuevo. Cualquier cosa que te vendan como un QR de pago dinámico es en realidad un enlace a una página de pago, que es un producto distinto.

¿Qué pasa si pongo un enlace corto en un código QR EPC?

La app bancaria no consigue interpretarlo y muestra un error o, en su defecto, trata el código como una URL corriente. El analizador espera que la primera línea sea BCD y la cuarta SCT; una URL no coincide con ninguna de las dos. Los códigos QR de pago y los códigos QR de enlace son dos códigos distintos que resulta que comparten la misma forma de símbolo.

¿Cómo de grande puede ser la carga útil?

331 bytes, lo que limita el QR a la versión 13 con nivel de corrección de errores M según las directrices EPC. En la práctica es el texto de la referencia el que la llena, así que una referencia larga en texto libre es el campo que hace que un código supere el límite. Mantén la referencia estructurada y corta, y el código se queda lo bastante ligero como para escanearse desde una factura impresa.

¿Son seguros los códigos QR de pago en facturas impresas?

El código en sí no lleva contenido ejecutable, y quien paga confirma la transferencia en su app bancaria, que muestra el nombre del beneficiario y el IBAN antes de que se mueva nada. El riesgo real es físico: una pegatina colocada sobre el código impreso que redirige el pago a otra cuenta. Imprime el código dentro del diseño de la factura, no en una etiqueta, y dile a quien paga que compruebe el nombre en la pantalla de confirmación.

Prueba Elido

Pega una URL, obtén un enlace corto

Sin registro. El enlace vive 30 días. Crea una cuenta para conservarlo.

Gratis, sin registro · 2 por día

Prueba Elido

Acortador de URL alojado en la UE: dominios personalizados, análisis profundo y API abierta. Plan gratuito - sin tarjeta de crédito.

Etiquetas
epc qr code
girocode
sepa payment qr code
qr code payment
static qr code
invoice qr code

Seguir leyendo