Skip to main content

2026-08-05: CSOSN do Simples Nacional recusa antes da SEFAZ, por regime e documento

csosn fora do que o motor emite corretamente agora recusa com 422 CSOSN_NAO_SUPORTADO, antes de qualquer chamada à SEFAZ. O conjunto que emite hoje é 102, 103, 300 e 400 (Simples), com domínio mais estreito para MEI. A tabela completa está em Erros e Rejeições e em Cobertura Fiscal.
Duas mudanças de comportamento conscientes, se você já integra:
  • csosn: "500" (ICMS já cobrado por Substituição Tributária) e csosn: "900" (categoria residual) agora recusam com 422. Os dois validam na forma do leiaute, mas exigem informação que a engineAPI ainda não resolve sozinha (CEST/CFOP para 500; resolução do destinatário para 900): emitir sem ela arriscaria um documento tecnicamente válido mas faticamente incorreto.
  • csosn aceito (102/103/300/400) junto com icms.aliquota, icms.baseCalculo ou icms.valor agora recusa com 422 CSOSN_VALORES_NAO_SUPORTADOS: nenhum desses campos existe no grupo do leiaute desses códigos, e antes eram descartados em silêncio.
Se o seu cadastro usa 500, 900 ou envia esses 3 campos junto com csosn, revise antes de atualizar em produção.
MEI (crt: 4) com csosn: "102" agora exige CFOP compatível (5102/ 6102 na NF-e; só 5102 na NFC-e). Fora disso, 422 CSOSN_CFOP_MEI_INCOMPATIVEL.

2026-08-05: ICMS monofásico de combustíveis (CST 02 e 61)

Revenda de combustível e de GLP passa a emitir. O ICMS de combustível não é percentual: é monofásico e ad rem, um valor em reais por unidade de medida, cobrado uma vez só na cadeia. O item agora aceita o grupo do leiaute em items[].icms: qBCMono, adRemICMS e vICMSMono (CST 02, tributação própria) ou qBCMonoRet, adRemICMSRet e vICMSMonoRet (CST 61, cobrada anteriormente, o caso da revenda). Vale nos dois regimes, inclusive Simples Nacional, e na NFC-e (onde o leiaute aceita só o CST 61).
Antes de emitir, a engineAPI confere o que a SEFAZ vai conferir: o valor tem que ser quantidade × alíquota ad rem, medido no número que vai no documento, e o item precisa do grupo combustivel com o código da ANP. Divergência devolve 422 sem consumir número fiscal. CST 15 (retenção) e 53 (diferimento) ainda não são emitidos, e dizem isso com 422 ICMS_MONOFASICO_NAO_SUPORTADO. O grupo combustivel chegou à NFC-e. Quem revende no balcão (posto, distribuidora de GLP) emite NFC-e, e agora pode informar o código da ANP no mesmo documento. Detalhe completo: Guia de combustíveis.

2026-08-04: contrato de emissão mais estrito, cobertura fiscal documentada

Campo desconhecido no payload agora recusa com 400 acionável. Antes, um campo fora do contrato de emissão (por exemplo, um grupo do leiaute que a API ainda não suporta) era descartado antes de chegar à SEFAZ, e a nota podia sair autorizada sem o dado que você enviou. Agora todo objeto dos payloads de emissão (NF-e, NFC-e, NFS-e, lote e todos os sub-objetos) é estrito: campo desconhecido devolve 400 antes de qualquer efeito, sem número fiscal consumido, citando o campo, o objeto e os campos aceitos ali.
Nova página: Cobertura Fiscal. Antes de integrar, agora dá para responder “o cenário do meu cliente emite hoje?” sem abrir chamado: documento cruzado com regime tributário e operação, célula a célula, com o estado real (disponível, disponível em breve, não suportado) e o erro exato para os cenários ainda não suportados.

2026-08-04: combustíveis, inutilização de notas e mensagens de erro sem laço

Grupo de combustíveis (GLP) emite de verdade. NF-e com CFOP de combustível agora aceita e valida o grupo combustivel (código ANP, percentuais de GLP, vPart) contra o leiaute oficial. Sem o grupo, um CFOP de combustível recusa antes com 422 COMBUSTIVEL_GRUPO_OBRIGATORIO: a engineAPI nunca deixa a SEFAZ rejeitar depois de consumir o número fiscal. Detalhe completo: Guia de combustíveis. Inutilização de faixa de numeração para NF-e e NFC-e. Novo endpoint para inutilizar uma faixa de números não usados, com os mesmos limites de tamanho de justificativa e de tamanho de faixa por chamada nos dois documentos. Mensagens de erro pararam de se contradizer. Um mesmo cenário podia recusar com TRIBUTACAO_NAO_RESOLVIDA numa chamada e com CST_NAO_SUPORTADO na chamada seguinte, para o mesmo payload, sem caminho de saída. A mensagem agora é determinística e nomeia o motivo real na primeira resposta. Formato completo: Erros e Rejeições.