Início › Regras verificadas
Regras verificadas
Somente regras de fontes oficiais. Nada inventado. Onde há dúvida, está marcado [INCERTO].
Fontes
- NT 2025.002-RTC v1.52 (NF-e/NFC-e, IBS/CBS/IS), Portal SVRS > NF-e > Documentos: https://dfe-portal.svrs.rs.gov.br/NFe/Documentos (arquivo
NT_2025.002_v1.52_RTC_NF-e_IBS_CBS_IS.pdf). Portal Nacional: https://www.nfe.fazenda.gov.br/portal/listaConteudo.aspx?tipoConteudo=04BIflQt1aY= - Tabela cClassTrib e Tabela de Indicadores de CST, IT 2025.002 v1.70 (
IT 2025.002 v.1.70 - cClassTrib.xlsx, abas "cClass 2026-09-01" e "CST 2026-09-01"), mesmo portal. Convertida paratabelas.json(173 cClassTrib, 18 CST). - Schemas PL_010b_NT2025_002_v1.30 (
DFeTiposBasicos_v1.00.xsd, tipos TCIBS, TRed, TDif, TIBSCBSTot): nomes e hierarquia das tags. - LC 214/2025: https://www.planalto.gov.br/ccivil_03/leis/lcp/lcp214.htm (arts. 343, 344 e 346: alíquotas de teste).
- CGIBS, prazo de adequação dos emissores: https://www.cgibs.gov.br/prazo-para-adequacao-dos-sistemas-de-emissao-de-notas-fiscais-ao-regulamento-do-ibs-encerra-em
Tolerância de R$ 0,01 nos cálculos (Observação das RVs UB35, UB54, UB67).
Regras cobertas (NF-e 55 e NFC-e 65)
| Regra NT | O que verifica | Severidade |
|---|---|---|
| UB12-10 | Item sem grupo imposto/IBSCBS. Produção p/ CRT 3 desde 03/08/2026; Simples/MEI a partir de 04/01/2027 (Obs. 2 e 3). Em finNFe 2/4 vira aviso (Exceção 1). Exceção 2 (combustíveis monofásicos por cProdANP) não implementada. | erro |
| UB13 (formato) / UB13-10 | CST com 3 dígitos e existente na tabela | erro |
| UB14 (formato) / UB14-10 | cClassTrib com 6 dígitos e existente | erro |
| UB14-20 | cClassTrib compatível com o CST (coluna CST da tabela) | erro |
| UB14-25 | cClassTrib permitido no modelo (indNFe / indNFCe) | erro |
| Vigência | dhEmi dentro de dIniVig/dFimVig da tabela. [INCERTO]: não achei RV explícita na NT; derivado da tabela | aviso |
| UB13-20 / UB13-30 | gIBSCBS vedado/exigido por ind_gIBSCBS (exceção tpNFDebito=07 não aplicada, pois lemos tpNFCredito apenas) | erro |
| UB13-39 / UB13-40 | gIBSCBSMono vedado/exigido (UB13-40 é "implementação futura" → aviso) | erro / aviso |
| UB15 | Presença de gIBSUF, gIBSMun, gCBS, vIBS (ocorrência 1-1 no leiaute) | erro |
| UB18-10 | pIBSUF = 0,10% (2025-2026), 0,05% (2027-2028); 0 se cClassTrib com ind_gTribRegular=1; não aplicada em finNFe=4 ou tpNFCredito 03/04/06 | erro |
| UB37-10 | pIBSMun = 0% (2025-2026), 0,05% (2027-2028); mesmas exceções | erro |
| UB56-10 | pCBS = 0,9% (2025-2026). pCBS = 0 vira aviso (Exceção 3 ZFM/ALC não verificada em detalhe). 2027+ não verificado (alíquota a publicar) | erro / aviso |
| UB22/UB40/UB59 | gDif vedado/exigido por ind_gDif (UF, Mun, CBS) | erro |
| UB23/UB42/UB61 | vDif = vBC × alíquota × pDif | erro |
| UB26/UB45/UB64 | gRed vedado/exigido por ind_gRed (exceção compra governamental: se gCompraGov existir, não acusa vedação) | erro |
| UB27/UB46/UB65 | pRedAliq igual a pRedIBS/pRedCBS da tabela cClassTrib | erro |
| UB28/UB47/UB66 | pAliqEfet = alíquota × (1 − pRedAliq/100), tolerância 0,0001 p.p. [INCERTO]: fórmula conforme descrição do campo; arredondamento não especificado | erro |
| UB35-10 / UB54-10 / UB67-10 | vIBSUF, vIBSMun, vCBS = vBC × (alíq. ou pAliqEfet)/100 − vDif − vDevTrib | erro |
| UB54a-10 | vIBS = vIBSUF + vIBSMun (aviso se houver gCredPresOper, pois o indDeduzCredPres da tabela cCredPres não é carregado) | erro / aviso |
| UB16-10 | vBC = vProd+vServ+vFrete+vSeg+vOutro+vII−vDesc−vPIS−vCOFINS−vICMS−vICMSUFDest−vFCP−vFCPUFDest−vICMSMono−vISSQN+vIS. "Implementação futura, aguardando orientação normativa" → só aviso | aviso |
| W34-10 / W34-20 | IBSCBSTot vedado sem itens com IBSCBS / exigido com itens | erro |
| W35, W38, W41, W43, W46, W47, W53, W56 | Totais (vBCIBSCBS, vDif, vIBSUF, vIBSMun, vIBS, vCBS) = soma dos itens | erro |
| Leiaute (XSD) | Ordem, obrigatoriedade e formato decimal de IBSCBS (TTribNFe/TTribNFCe), gIBSCBS (TCIBS: vBC, gIBSUF, gIBSMun, vIBS, gCBS com gDif/gDevTrib/gRed) e total/IBSCBSTot (TIBSCBSMonoTot: vBCIBSCBS, gIBS, gCBS). Valores: padrão TDec1302RTC; percentuais: TDec_0302_04RTC (DFeTiposBasicos_v1.00.xsd, PL_010b_NT2025_002 v1.30). Tags desconhecidas dentro desses grupos acusam erro. Subgrupos gIBSCBSMono, gTransfCred, gAjusteCompet, gEstornoCred, gCredPres*, gTribRegular, gTribCompraGov, gMono: só a posição é verificada, não o conteúdo. Não substitui validação completa contra o XSD (o resto da NF-e não é validado). | erro |
| VB01-05 | vItem ausente quando há gIBSCBS ("implementação futura") | aviso |
| VB01-10 | vItem = vProd − vDesc − vICMSDeson (indDeduzDeson=1) + vICMSST + vICMSMonoReten + vFCPST + vFrete + vSeg + vOutro + vII + vIPI + vIPIDevol + PIS-ST/COFINS-ST (indSoma=1); de 2027 em diante + vIBS + vCBS + vIS (Exceção 1: em 2025-2026 não somar IBS/CBS/IS). Não somados: vServ e vTotIBSMonoItem/vTotCBSMonoItem. Ignorado para veículos novos (VB01-20). "Implementação futura" | aviso |
| W60-05 / W60-10 | vNFTot ausente com IBSCBSTot / vNFTot ≠ soma dos vItem ("implementação futura") | aviso |
| Tamanho | XML acima de 5 MB é recusado com mensagem (proteção do navegador) | erro |
Testes
node --test test/ cobre cada regra acima com amostras (amostras/01..10) e mutações da nota válida (32 testes).
Ainda NÃO cobertas
- NFS-e (padrão nacional) e CT-e/BP-e/NF3e/NFCom.
- Imposto Seletivo (UB01–UB11; IS "implementação futura").
- Monofásico (gIBSCBSMono, W57–W59d), transferência de crédito (UB13-44/45), crédito presumido (UB120–UB134, W48, W56a), ZFM (gCredPresIBSZFM, gALCZFMCBS), estorno de crédito (W59e–g), ajuste de competência, tributação regular (gTribRegular/UB68), compras governamentais (detalhe), devolução de tributos (UB24/43/62/63), notas de débito/crédito (tpNFDebito/tpNFCredito, UB14-60/70/80).
- Validação do XSD completo da NF-e (só os grupos IBS/CBS são checados), assinatura digital e situação na SEFAZ.
- Alíquotas de 2027 em diante (CBS cheia a publicar).
Perguntas em aberto
- A tabela cClassTrib muda com frequência (v1.70, aba de 2026-09-01). Precisamos atualizar
tabelas.jsona cada nova versão. - Vigência por data de emissão: confirmar se a SEFAZ rejeita por cClassTrib fora de vigência.