E-invoicing in Brazil in short
Brazil made electronic invoices the rule long before most countries. The NF-e (Nota Fiscal Eletrônica, model 55) is the invoice for selling and moving goods; the first one was authorised on 14 September 2006. Sales to consumers at the counter use the NFC-e (model 65), and services the NFS-e. The issuer signs the XML with an ICP-Brasil certificate and sends it to the tax authority of its state, the SEFAZ, which checks it and answers with an authorisation protocol or a numbered rejection before the goods leave. A printed summary with the 44 digit access key, the DANFE, travels with the goods.
The tax reform of Constitutional Amendment 132/2023 and Lei Complementar 214/2025 replaces PIS, COFINS, ICMS and ISS with the CBS (federal) and the IBS (states and municipalities). In 2026 both are charged at test rates, 0.9% for the CBS and 0.1% for the IBS, and offset against PIS and COFINS; taxpayers who meet their filing obligations don't pay them, and the rates don't apply to Simples Nacional companies (LC 214/2025, articles 343, 346 and 348). From 2027 the CBS takes the place of PIS and COFINS; ICMS and ISS go down from 2029 and end in 2033. NT 2025.002 added the IBS and CBS group to the NF-e, and since 3 August 2026 the SEFAZs reject an NF-e of a company under the normal regime (CRT 3) without it.
How to check an NF-e
- Open the validator with the NF-e profile. An NF-e opened or pasted picks its profile on its own: NF-e 4.00 for the document alone, NF-e 4.00 with authorisation protocol for an nfeProc file.
- Paste the XML or drop the file, then press Validate.
- Each finding names its SEFAZ rejection code; click it for the rule and what usually causes it.
What is checked
First the schemas of Pacote de Liberação 010f, then our rules, written from the validation rules of the Manual de Orientação do Contribuinte (Anexo I) and the Notas Técnicas that changed them, up to NT 2026.010. Each rule carries the code the SEFAZ answers with and its Portuguese description: the access key matches the fields it is made of and its check digit (NFE-502), an item's amount is quantity times price (NFE-629), the ICMS is base times rate (NFE-528), vNF adds up from the totals (NFE-610), the state IBS and the CBS follow from their base and rates (NFE-1041, NFE-1069), and a sale not made in person says whether a marketplace took part (NFE-434). CNPJs, the new alphanumeric ones too, CPFs and GTINs are checked for their check digits, CFOPs against the direction and destination of the operation, and the items against the totals. The rules of NT 2026.002 for the DANFE Simplificado Tipo 2 apply when tpImp is 6.
Rules that start on a given day apply by the date of issue, with the homologação dates for test documents. The SEFAZ also checks what a file alone can't show: the registration of issuer and receiver, its tables (CFOP, NCM, cClassTrib, municipalities), the check digits of the state registration, duplicates and the signature. Those are not checked here, and rules the manual leaves to each state are warnings.
Profiles to check with
- NF-e 4.00 with authorisation protocol: An authorised NF-e (model 55) with the SEFAZ authorisation protocol, the XML file issuers keep and send to the buyer. Validate
- NF-e 4.00: The Brazilian electronic invoice for goods (model 55), in the layout of schema package PL_010f. Validate
Rules invoices break most
Each one has a page with what it checks, its test and, for many, how to fix it.
NFE-502: Rejeição: Erro na Chave de Acesso - Campo Id não corresponde à concatenação dos campos correspondentes (Id …, campos NFe……).NFE-629: Rejeição: Valor do Produto difere do produto Valor Unitário de Comercialização e Quantidade Comercial [nItem: …] (vProd …, qCom × vUnCom …).NFE-528: Rejeição: Valor do ICMS difere do produto BC e Alíquota [nItem: …] (vICMS …, vBC × pICMS …).NFE-610: Rejeição: Total da NF difere do somatório dos Valores compõe o valor Total da NF (vNF …, calculado …).NFE-1041: Rejeição: Valor do IBS da UF difere do calculado [nItem: …] (vIBSUF …, calculado …).NFE-1069: Rejeição: Valor da CBS difere do calculado [nItem: …] (vCBS …, calculado …).NFE-434: Rejeição: NF-e sem indicativo do intermediador (indPres …).
Questions
Is the invoice uploaded?
No. The schema check and the rules both run in your browser. Only the API and URL monitors validate on our servers.
Does a valid result mean the SEFAZ will authorise the NF-e?
It means the NF-e passes the schema and the SEFAZ rules that need only the file. The SEFAZ also checks its registry, its tables, the certificate and the signature, so it can still reject the document for something a file alone doesn't show.
Which file do I check, the NF-e or the nfeProc?
Either. The XML a buyer receives and most systems export is nfeProc: the signed NF-e with the SEFAZ authorisation protocol. Both are read, and the rules run on the NF-e inside.
Are these the SEFAZ's own rules?
They are our implementation of the validation rules the manual and the Notas Técnicas publish for every SEFAZ; the SEFAZs don't publish their code. We tried them on authorised NF-e from production, where they find nothing.
Can I check invoices from code?
Yes: the API and the command-line client with --schema nfe-4.00-proc, or --schema auto for a folder of mixed files.
Official sources
- Portal Nacional da NF-e: Notas Técnicas (in Portuguese)
- Portal Nacional da NF-e: XML schemas (in Portuguese)
- NT 2025.002 v1.52: IBS, CBS and IS in the NF-e (in Portuguese)
- NT 2026.002 v1.11: DANFE Simplificado Tipo 2 (in Portuguese)
- Lei Complementar 214/2025 (in Portuguese)
- Constitutional Amendment 132/2023 (in Portuguese)
Other countries
- French e-invoice validator
- German e-invoice validator: XRechnung and ZUGFeRD
- Belgian e-invoice validator: Peppol BIS
- KSeF invoice validator: FA(3)
- Croatian eRačun validator
- RO e-Factura validator
- FatturaPA validator
- UAE e-invoice validator (PINT AE)
- InvoiceNow validator (PINT SG)
- JP PINT validator
- Australian e-invoice validator (PINT A-NZ)
- Spanish e-invoice validator
- Dutch e-invoice validator: SI-UBL 2.0 and NLCIUS
- Danish e-invoice validator: OIOUBL 2.1
- Norwegian e-invoice validator: EHF
- Swedish e-invoice validator: Peppol BIS
- Finnish e-invoice validator: Finvoice
- Austrian e-invoice validator for e-Rechnung.gv.at
- Czech e-invoice validator: ISDOC
- Portuguese e-invoice validator: CIUS-PT
- ZATCA e-invoice validator (FATOORA)
- Mexican CFDI 4.0 validator (SAT validations)
- Malaysian e-invoice validator (MyInvois)