Tabla de Contenidos
Ayer, 30 de junio de 2026, fue un plazo que silenciosamente remodeló el comercio saudí. La Ola 24 del despliegue de facturación electrónica de Fase 2 de ZATCA entró en vigor: la primera ola que llega hasta empresas con tan solo 375.000 SAR de ingresos anuales gravables, que es también el umbral obligatorio de registro de IVA en sí mismo. En términos prácticos, esto significa que casi todas las empresas registradas en el IVA del Reino ahora están obligadas a integrarse con la plataforma Fatoora. La ventana de exención de multas que permitía a las empresas corregir errores de incorporación sin consecuencias financieras se cerró en la misma fecha. A partir de hoy, la aplicación de la facturación electrónica de ZATCA es efectivamente universal.
Si desarrolla o mantiene un sistema de punto de venta, ERP o facturación para el mercado saudí, ese pequeño cuadrado blanco y negro en cada recibo ya no es una tarea opcional: es la prueba de cumplimiento más visible que produce su software. Esta guía cubre qué contiene realmente el código QR, por qué ZATCA construyó el programa así, las diferencias reales entre la Fase 1 y la Fase 2, cómo divergen las facturas B2B y B2C, cómo recupera realmente el IVA un comprador, y los errores que más suelen hacer fallar la validación de un código QR. Al final, hay un generador gratuito del lado del cliente para que construya e inspeccione usted mismo un código QR conforme, etiqueta por etiqueta.
¿Qué es la Facturación Electrónica de ZATCA y por qué existe?
ZATCA — la Autoridad de Zakat, Impuestos y Aduanas — es el organismo gubernamental saudí responsable de recaudar el IVA, el Zakat, los aranceles aduaneros y de hacer cumplir la facturación electrónica. Se formó en 2021 tras la fusión de la Autoridad General de Zakat e Impuestos (GAZT) y la Autoridad General de Aduanas, consolidando la administración fiscal bajo un mismo techo.
Arabia Saudita introdujo el IVA el 1 de enero de 2018, al 5%, como parte de un despliegue coordinado en todo el CCG. El 1 de julio de 2020, ante el colapso de los ingresos petroleros y el shock fiscal de la COVID-19, el gobierno triplicó la tasa al 15%, donde permanece hoy. Un impuesto de ese tamaño, aplicado a toda una economía, solo es tan bueno como la capacidad del gobierno para verificar que realmente se recauda y se remite; y las facturas en papel, los recibos manuscritos y las facturas generadas en hojas de cálculo son trivialmente fáciles de subdeclarar o simplemente nunca emitir. Esa brecha entre el IVA cobrado a los clientes y el IVA realmente declarado al Estado es lo que el programa de facturación electrónica, llamado Fatoora, se construyó para cerrar.
El código QR es la punta visible de ese sistema. Convierte cada recibo en un registro legible por máquina y verificable de forma independiente, de modo que un cliente, un auditor o los propios sistemas de ZATCA puedan confirmar que una factura es genuina sin confiar en el papel en que está impresa. El programa se desplegó en dos fases oficialmente definidas:
- 4 de diciembre de 2021 — Fase 1 (Fase de Generación): toda empresa registrada en el IVA tuvo que dejar de emitir facturas manuscritas o generadas en hojas de cálculo y pasar a un sistema electrónico conforme capaz de producir y almacenar facturas electrónicas con un código QR TLV.
- Desde el 1 de enero de 2023 — Fase 2 (Fase de Integración): las empresas conectan su sistema de facturación electrónica directamente a la plataforma Fatoora de ZATCA para despacho o notificación en tiempo real. Como conectar a todas las empresas simultáneamente no es operativamente realista, ZATCA lo desplegó en «olas» sucesivas, agrupadas por ingresos anuales gravables, cada una anunciada con al menos seis meses de antelación a su plazo. La Ola 1 (facturación superior a 3.000 millones de SAR) entró en vigor el 1 de enero de 2023; la Ola 24 (facturación superior a 375.000 SAR) entró en vigor ayer.
No existe una «Fase 3» anunciada por separado hasta la fecha de esta redacción; el programa consta oficialmente de dos fases, con la propia Fase 2 aún expandiéndose a través de nuevas olas mientras ZATCA avanza hacia contribuyentes más pequeños y, eventualmente, una red aún más amplia que incluya la facturación electrónica para el prellenado de declaraciones de IVA. Trate cualquier contenido que mencione una «Fase 3» distinta como una forma coloquial no oficial de referirse a una ola futura, no una designación oficial.
Cómo Funciona Realmente un Código QR de ZATCA
Un código QR de ZATCA no es un enlace. Escanéelo con una app de QR genérica y no llegará a un sitio web; obtendrá un bloque de texto Base64. Ese texto es la salida de un flujo específico de tres etapas definido en las propias Normas de Implementación de Características de Seguridad de la Factura Electrónica de ZATCA:
- Construir la estructura TLV. Cada campo (nombre del vendedor, número de IVA, marca temporal, etc.) se codifica como Etiqueta + Longitud + Valor: un número de etiqueta de 1 byte, una longitud de 1 byte (la longitud en bytes del valor, no su número de caracteres) y el propio valor como bytes UTF-8. Todos los campos se concatenan, etiqueta tras etiqueta, en un único array de bytes continuo.
- Codificar el array de bytes en Base64. Toda la estructura TLV, como bytes crudos, se convierte en una única cadena Base64. ZATCA limita esta cadena a 700 caracteres.
- Renderizar la cadena Base64 como código QR. Solo en este último paso el texto se convierte realmente en el cuadrado blanco y negro impreso en el recibo.
Aquí está el núcleo de esa lógica en JavaScript, la misma función que impulsa el generador más abajo en esta página:
function buildTLV(tag, value) {
const bytes = new TextEncoder().encode(value); // never value.length
const out = new Uint8Array(2 + bytes.length);
out[0] = tag;
out[1] = bytes.length; // byte length — critical for Arabic text
out.set(bytes, 2);
return out;
}
// tags 1-5, concatenated, then Base64-encoded
const tlv = concat([buildTLV(1, sellerName), buildTLV(2, vatNumber),
buildTLV(3, timestamp), buildTLV(4, total), buildTLV(5, vatAmount)]);
const qrPayload = base64Encode(tlv);
Ese único comentario — never value.length — merece atención. La propiedad .length de una cadena de JavaScript cuenta unidades de código UTF-16, no bytes. «Bobs Records» resulta tener el mismo número de caracteres y de bytes en ASCII plano, así que una implementación descuidada funciona bien en pruebas y luego corrompe silenciosamente cada factura con un nombre de vendedor en árabe en producción, porque los caracteres árabes ocupan 2 bytes cada uno en UTF-8. Volveremos a esto en la sección de errores comunes, porque es una de las causas reales más frecuentes de rechazo de un código QR.
Fase 1 vs Fase 2: Qué Cambió Realmente
Es fácil pensar en la Fase 2 como «la Fase 1 más algunos campos extra». En realidad, es una arquitectura distinta. La Fase 1 le pedía generar un documento correcto. La Fase 2 le pide generar un documento correcto y demostrárselo a ZATCA en tiempo real, vinculado a una identidad criptográfica anclada en hardware o software.
| Aspecto | Fase 1 — Generación | Fase 2 — Integración |
|---|---|---|
| Vigente desde | 4 de diciembre de 2021 — todos los contribuyentes a la vez | 1 de enero de 2023 — desplegado por olas (Ola 24 en vigor desde el 30 de junio de 2026) |
| Formato de factura | Cualquier sistema electrónico conforme; sin facturas manuscritas o de hoja de cálculo | XML UBL 2.1, o PDF/A-3 con el XML incrustado; nada más califica |
| Contenido del código QR | 5 etiquetas TLV: nombre del vendedor, número de IVA, marca temporal, total, importe de IVA | 9 etiquetas TLV: las mismas 5, más hash XML, firma ECDSA, clave pública y sello criptográfico |
| Conexión del sistema | Independiente; puede funcionar totalmente sin conexión | La conexión API en vivo a la plataforma Fatoora de ZATCA es obligatoria |
| Validación gubernamental | Ninguna; solo autogenerada y autoalmacenada | B2B: despachada por ZATCA antes de llegar al comprador. B2C: notificada a ZATCA en 24 horas |
| Encadenamiento de facturas | No requerido | Requerido: un Valor de Contador de Factura secuencial (ICV) y un hash de la Factura Previa (PIH), para que ninguna factura pueda eliminarse o insertarse silenciosamente |
| Identidad criptográfica | Ninguna | Requerido: un Identificador de Sello Criptográfico (CSID) emitido a su solución de facturación por ZATCA |
B2B vs B2C: Qué Reglas le Aplican
La normativa de ZATCA reconoce dos tipos de factura, y confundirlos es una de las formas más rápidas de terminar fuera de cumplimiento o, para un comprador, incapaz de recuperar un IVA que creía poder reclamar.
Factura Fiscal Estándar (B2B / B2G): se usa entre dos partes registradas en el IVA. Debe mostrar el nombre y número de IVA tanto del vendedor como del comprador, un desglose por líneas y los importes de IVA por línea. Bajo la Fase 2, sigue el modelo de Despacho: su sistema envía la factura a la plataforma Fatoora de ZATCA y debe recibir aprobación, incluyendo un sello criptográfico, antes de que la factura pueda llegar legalmente al comprador. El código QR en una factura estándar es opcional en la mayoría de los casos, aunque muchos ERP lo incluyen de todos modos.
Factura Fiscal Simplificada (B2C): se usa en el punto de venta, típicamente cuando el comprador no está registrado en el IVA o no se conoce en el momento de la venta; un recibo de compra al por menor es el ejemplo clásico. Sigue el modelo de Notificación: la factura se emite al cliente de inmediato, y su sistema la notifica a ZATCA dentro de las 24 horas siguientes. El código QR es obligatorio en toda factura simplificada, y es la versión a la que la mayoría de la gente se refiere al decir «código QR de ZATCA».
Dos umbrales que vale la pena conocer: una factura fiscal estándar es legalmente obligatoria siempre que un suministro B2B supere los 1.000 SAR (por debajo de eso, una factura simplificada es aceptable incluso entre dos empresas), y el número de IVA del vendedor puede omitirse por completo de una factura simplificada si el valor total de la factura es inferior a 1.000 SAR.
La distinción va mucho más allá del formato. Como se detalla en la sección de reclamación de IVA más abajo, solo una factura fiscal estándar respalda una deducción de IVA soportado; una factura simplificada, por perfectamente formateado que esté su código QR, generalmente no lo hace.
Las 9 Etiquetas TLV, Explicadas
Cada campo que ZATCA puede exigir en un código QR tiene un número de etiqueta fijo. Las etiquetas 1–5 son obligatorias desde la Fase 1; las etiquetas 6–9 se añadieron para la Fase 2.
| Etiqueta | Campo | Requerido Desde | Notas |
|---|---|---|---|
| 1 | Nombre del Vendedor | Phase 1 | Debe aparecer en árabe en la factura misma; un nombre bilingüe está bien |
| 2 | Número de IVA del Vendedor | Phase 1 | Exactamente 15 dígitos, tal como los emitió ZATCA al registrarse |
| 3 | Marca Temporal de la Factura | Phase 1 | Formato ISO 8601, ej. 2026-06-30T14:05:00Z |
| 4 | Total de la Factura (incl. IVA) | Phase 1 | El importe final que pagó el cliente |
| 5 | Total del IVA | Phase 1 | La porción de IVA del total anterior |
| 6 | Hash XML de la Factura | Phase 2 | Hash SHA-256 de la factura XML firmada |
| 7 | Firma ECDSA | Phase 2 | Firma digital sobre el hash, creada con la clave privada del contribuyente |
| 8 | Clave Pública ECDSA | Phase 2 | La mitad pública del par de claves vinculado al certificado de su CSID |
| 9 | Firma del Sello Criptográfico | Phase 2 | Solo facturas simplificadas; emitido por la propia CA técnica de ZATCA tras la notificación |
El orden de generación importa. Construya y firme criptográficamente la factura XML primero. Solo entonces calcule el hash, extraiga la firma y ensamble el código QR. Generar el QR antes de firmar produce las etiquetas 6–9 vacías u obsoletas, un error sorprendentemente común que provoca un rechazo inmediato.
Qué Deben Hacer Realmente los Empresarios
Despojado de siglas, el cumplimiento se reduce a cinco etapas. Este es el camino desde «no registrado» hasta «en producción en Fatoora».
1. Regístrese en el IVA
Obligatorio en cuanto sus suministros gravables anuales superen los 375.000 SAR. Entre 187.500 SAR y ese umbral, el registro es voluntario, y a menudo conviene, ya que le permite recuperar el IVA soportado en sus propias compras. Las empresas no residentes que realicen suministros gravables en el Reino deben registrarse independientemente de su facturación.
2. Obtenga un sistema compatible con Fase 1 y luego verifique su ola
Toda empresa registrada en el IVA ya necesita hoy capacidad de generación de Fase 1. La Fase 2 llega según un calendario: ZATCA agrupa a los contribuyentes en olas por ingresos anuales gravables y notifica a cada grupo con al menos seis meses de antelación a su plazo. Los umbrales se han comprimido rápidamente; la Ola 1 cubría facturación superior a 3.000 millones de SAR; la Ola 24, en vigor desde ayer, cubre facturación superior a 375.000 SAR. Si aún no ha sido notificado, vale la pena comprobarlo directamente con ZATCA en lugar de asumir que está fuera de alcance.
3. Complete la incorporación del CSID en el portal Fatoora
Este es el núcleo técnico de la Fase 2, y sigue una secuencia fija de cinco pasos:
- Inicie sesión en el portal Fatoora usando el inicio de sesión único a través de su cuenta de contribuyente de ZATCA.
- Genere una Contraseña de Un Solo Uso (OTP) para cada dispositivo o unidad de solución que desee incorporar.
- Envíe una Solicitud de Firma de Certificado (CSR) junto con el OTP, y reciba un CSID de Cumplimiento, un certificado de prueba (sandbox).
- Supere las comprobaciones de cumplimiento enviando facturas de muestra estándar y simplificadas a través del sandbox para que ZATCA las valide.
- Reciba su CSID de Producción, válido durante aproximadamente un año y renovable antes de su vencimiento, y entre en producción contra el endpoint real de Fatoora.
4. Pruebe todo el proceso antes de su plazo
ZATCA proporciona un Portal de Simulación de Fatoora específicamente para que pueda ensayar la incorporación, el despacho y la notificación sin tocar datos de producción. La práctica habitual del sector es terminar esto al menos un mes antes del plazo de su ola, ya que los problemas de certificados y las facturas de muestra rechazadas son mucho más baratos de corregir antes de que empiece la aplicación que después.
5. Conserve los registros, más tiempo del que cree
Las facturas, notas y registros de respaldo deben conservarse durante un mínimo de 6 años desde el final del periodo fiscal correspondiente, ampliado a 11 años para cualquier cosa relacionada con bienes inmuebles. Los registros deben conservarse en árabe (bilingüe está bien) y almacenarse dentro de Arabia Saudita.
Lo que realmente cuesta el incumplimiento
El marco de sanciones de ZATCA escala según la infracción, y las multas aumentan por reincidencia. Las cifras publicadas incluyen:
| Infracción | Sanción |
|---|---|
| Registro tardío de IVA | 10.000 SAR |
| No emitir o archivar una factura electrónica conforme | Desde 5.000 SAR |
| Código QR ausente o no conforme | Hasta 10.000 SAR por factura |
| Eliminar o modificar una factura tras su emisión | Desde 10.000 SAR |
| Integración no conforme de despacho/notificación en tiempo real | 5.000 – 50.000 SAR por infracción |
Las cifras anteriores proceden de la estructura de sanciones publicada por ZATCA y de resúmenes de cumplimiento de terceros a mediados de 2026; confirme siempre los importes actuales directamente en zatca.gov.sa, ya que los baremos de sanciones se revisan periódicamente.
Verificar un Código QR y Cómo se Reclama Realmente el IVA
Verificar un código QR
Como el payload del QR es texto Base64 plano, cualquier escáner de QR genérico puede técnicamente leerlo, pero leerlo no es lo mismo que validarlo. Para confirmar realmente que una factura es genuina, decodificar la estructura TLV y comprobar su sello criptográfico contra la cadena de certificados de ZATCA, use la propia app de IVA de ZATCA (disponible para iOS y Android) o el servicio de validación de facturas electrónicas en zatca.gov.sa. Esa distinción es exactamente por qué un código QR que simplemente «parece correcto» en pantalla puede aun así fallar un escaneo real.
Cómo reclama realmente el IVA una empresa
Esta es la parte que las explicaciones generales suelen omitir, y es la respuesta a la pregunta que más nos hacen: ¿tener un código QR en una factura significa que puedo recuperar el IVA? No por sí solo, y no siempre.
El IVA saudí funciona con un sistema de factura-crédito: una empresa registrada en el IVA cobra IVA repercutido por lo que vende y puede compensarlo con el IVA soportado que pagó en sus propias compras, remitiendo a ZATCA solo la diferencia. Para ejercer ese derecho de deducción, el Reglamento de Ejecución (Artículo 53(5)) exige que la empresa tenga una Factura Fiscal válida, específicamente una factura fiscal estándar que muestre los números de IVA de ambas partes, la fecha, una descripción del suministro y el importe del IVA. Una factura simplificada (estilo B2C), con código QR y todo, generalmente no respalda una reclamación de IVA soportado, porque no está obligada en absoluto a identificar al comprador.
Bajo la Fase 2, hay una barrera adicional: según la Resolución de Implementación de Facturación Electrónica de ZATCA, una factura electrónica debe haber sido realmente Despachada por ZATCA o Notificada a ella para poder usarse como evidencia de una deducción de IVA soportado; una factura que su proveedor generó pero nunca envió a Fatoora no cuenta, sin importar lo correcta que parezca.
Algunas reglas prácticas para el lado del comprador:
- Momento: el derecho a deducir surge en el periodo fiscal en que se recibe el suministro y se emite la factura fiscal, no cuando se realiza el pago o se consumen los bienes.
- Periodicidad de declaración: las empresas con una facturación anual superior a 40 millones de SAR presentan declaraciones de IVA mensualmente; el resto lo hace trimestralmente.
- Conservación: conserve la factura durante 6 años (11 para suministros relacionados con bienes inmuebles); ZATCA puede solicitarla durante una auditoría mucho después.
- Idioma: la factura debe incluir los detalles requeridos en árabe. ZATCA puede, a su discreción, aceptar evidencia alternativa si la factura de un proveedor está incompleta, pero el proveedor sigue obligado a emitir una factura fiscal árabe correcta.
En resumen: el código QR demuestra que el recibo es genuino. Si el IVA en él es recuperable es una pregunta aparte, respondida por el tipo de factura, no por si tiene o no un código QR.
Errores Comunes del Código QR y Cómo Solucionarlos
La mayoría de los informes de «código QR inválido» se remontan a un conjunto pequeño y repetible de errores de implementación. En orden aproximado de frecuencia:
- Usar longitud de caracteres en lugar de longitud de bytes. La etiqueta de Longitud debe ser la longitud en bytes UTF-8 del valor. El árabe, y cualquier texto no ASCII, ocupa más bytes que caracteres; si se equivoca en esto, el nombre de cada vendedor en árabe corrompe silenciosamente la factura que le sigue.
- Generar el código QR antes de firmar el XML. Las etiquetas 6–9 dependen del documento final firmado. Construya el QR primero y esas etiquetas terminarán vacías, obsoletas o basadas en un hash que ya no coincide con la factura que ZATCA realmente recibe.
- Codificación solo en ASCII. Algunas bibliotecas antiguas usan Latin-1 o Windows-1252 por defecto. ZATCA exige UTF-8 estricto en todo momento; cualquier otra cosa falla en cuanto un valor contiene un carácter árabe, una comilla tipográfica o ciertos símbolos.
- Omitir el nombre del vendedor en árabe. Un nombre comercial solo en inglés es un atajo común en marcas internacionales, pero la factura impresa, y por extensión los datos que hay detrás, necesita un nombre en árabe.
- Valores que superan los 255 bytes. El byte de Longitud solo puede representar de 0 a 255. Un nombre de entidad legal inusualmente largo o un campo inesperadamente extenso puede desbordarlo; valide la longitud de los campos antes de codificar, no después de que un QR falle al escanear.
- Confundir tipos de factura. La Etiqueta 9 (el propio sello criptográfico de ZATCA) aplica a facturas simplificadas notificadas después del hecho; las facturas estándar se despachan por un flujo distinto. Copiar la estructura de etiquetas de un tipo de factura sobre el otro produce un QR que parece plausible pero falla la validación.
- Confiar en que «parece un código QR» significa que es válido. Una estructura TLV malformada puede seguir renderizándose como un código QR escaneable y visualmente normal; la única forma de saber si es correcto es decodificarlo y comprobar los campos, o escanearlo con la propia app de validación de ZATCA.
Pruébelo: Generador Gratuito de Código QR de ZATCA
Complete los campos de abajo y observe la estructura TLV, el payload Base64 y el código QR actualizarse en vivo. Todo se ejecuta como JavaScript en su navegador; nada de lo que escriba se envía a ningún sitio. Viene precargado con datos de ejemplo (incluyendo un nombre de vendedor en árabe, para mostrar en acción el manejo de longitud en bytes UTF-8 explicado antes) para que pueda ver un código funcionando de inmediato.