QR de nota fiscal ZATCA (Saudi FATOORA)

A ZATCA (Autoridade de Zakat, Impostos e Alfândega) da Arábia Saudita exige um QR em cada fatura fiscal emitida no Reino. A Fase 1 é TLV simplificado; a Fase 2 adiciona selagem criptográfica por integração com a plataforma FATOORA. As faturas não conformes são rejeitadas pelo software contábil do comprador e inválidas para recuperação do IVA.

Especificação oficial:Resolução de faturação eletrônica ZATCA e regulamentos de implementação, vigente até 2026.
Fase 1 (Geração): em vigor desde 4 de dezembro de 2021. Todas as empresas registradas no IVA devem emitir faturas digitais com QR.
Fase 2 (Integração): implantação por ondas por tamanho de empresa desde 1º de janeiro de 2023. Adiciona assinatura digital + validação ZATCA para faturas padrão e relatórios em tempo real para faturas simplificadas.

O que é

O QR codifica uma string Base64. Decodifique o Base64 para obter uma sequência binária TLV com 5 campos obrigatórios em ordem fixa:

TagCampoTipoNotas
01Nome do vendedorString UTF-8Nome comercial do vendedor. Árabe e latim ambos aceitos.
02Número de registro IVA15 dígitosComeça com 3 para entidades sauditas. Formato: 3XXXXXXXXXXXXX3.
03Carimbo de data/hora da faturaISO 8601Ex. 2026-04-18T10:30:00Z. Deve incluir fuso horário.
04Total da fatura (com IVA)String decimalEx. 115.00. A moeda é implicitamente SAR.
05Valor do IVAString decimalEx. 15.00. Taxa padrão atual de 15%.
06Hash da fatura (Fase 2)Base64 SHA-256SHA-256 do XML de fatura canônico.
07Assinatura digital (Fase 2)Base64ECDSA sobre o hash da fatura usando o certificado CSID do vendedor.
08Chave pública (Fase 2)Base64 X.509Chave pública ECDSA do vendedor (do CSID).
09Carimbo ZATCA (Fase 2)Base64Contraassinatura da ZATCA. Presente apenas após validação ZATCA.

Cada registro TLV é 1 byte de tag + 1 byte de comprimento + <comprimento> bytes de valor. Toda a sequência é então codificada em Base64 para se tornar o payload do QR.

Fase 1 (simplificada) vs Fase 2 (integração)

AspectoFase 1Fase 2
Conteúdo do QRApenas tags 01–05Tags 01–05 mais 06, 07, 08, opcionalmente 09
Integração ZATCANenhuma, offlineAPI em tempo real para faturas simplificadas, fluxo de validação para faturas padrão
Certificados necessáriosNãoSim, CSID (Identificador de Carimbo Criptográfico) emitido pela ZATCA
Data de vigência2021-12-04 (todas as empresas)2023-01-01 (ondas progressivas por receita)
Escopo da faturaB2C (simplificado) + B2B (padrão)B2C simplificado: relatório em tempo real. B2B padrão: validação prévia antes de emitir.

Vetores de teste canônicos

Exemplo TLV (antes de Base64):

01 0A "Acme Saudi" 02 0F "300000000000003" 03 14 "2026-04-18T10:30:00Z" 04 06 "115.00" 05 05 "15.00"

Após codificação Base64:

AQpBY21lIFNhdWRpAg8zMDAwMDAwMDAwMDAwMDMDFDIwMjYtMDQtMThUMTA6MzA6MDBaBAYxMTUuMDAFBTE1LjAw
CasoEntradasPrefixo Base64
Fase 1, simplificado mínimoseller=Acme Saudi
vat=300000000000003
time=2026-04-18T10:30:00Z
total=115.00
vat_amount=15.00
AQpBY21lIFNhdWRp...
Nome de vendedor em árabeseller=شركة أكمي
vat=300000000000003
...
Nome do vendedor codificado em UTF-8 dentro do TLV antes de Base64.
Fatura padrão Fase 2Tudo acima mais hash=<SHA-256 Base64>
signature=<ECDSA Base64>
public_key=<X.509 Base64>
Base64 muito mais longo. Decodificadores devem tolerar tags extras além de 05.

Armadilhas comuns

Compatibilidade de leitores

LeitorSuporteNotas
ZATCA FATOORA appNativoApp oficial do Ministério; verifica assinaturas Fase 2 contra o PKI da ZATCA.
Software contábil saudita (SAP B1, Oracle, Microsoft Dynamics)Nativo (post-2023)Versões localizadas para Arábia Saudita têm análise ZATCA no pipeline AP.
iOS CâmeraBase64 brutoNão reconhecido como fatura fiscal. O usuário deve abrir o app FATOORA.
Android Câmera / Google LensBase64 brutoIgual, sem análise nativa.
Ferramentas de auditoria de terceiros (PwC, KPMG, Deloitte unidades sauditas)NativoSuítes de tecnologia de auditoria analisam e verificam assinaturas Fase 2.

Ver também

Referências de especificação verificadas em 2026-04-18 (Resolução de faturação eletrônica ZATCA, vigente). Próxima revisão: 2026-07-18.