Skip to main content
Vender combustível ou lubrificante muda uma coisa no payload: o item ganha o bloco combustivel, com o código do produto na ANP. Sem ele, uma NF-e com CFOP de combustível é rejeitada pela SEFAZ com 660 - CFOP de Combustível e não informado grupo de combustível. O motor é passthrough aqui: nada é calculado, os valores que você informa são os transmitidos. O que a engineAPI faz é recusar antes o que a SEFAZ rejeitaria depois, para você não queimar número fiscal descobrindo.
  • Gatilho é o CFOP: CFOP de operação com combustível exige o grupo. Não é o NCM que decide.
  • GLP tem regra própria: cProdANP 210203001 exige percentuais somando 100, vPart e unidade em kg.
  • Recusa em vez de rejeição: 422 local, antes da numeração. Nenhum número fiscal é consumido.

Pré-requisitos

Quando o grupo é obrigatório

A regra oficial (MOC 7.0, Anexo I, LA01-20) é: CFOP marcado com indComb = 1 ou 2 na Tabela CFOP exige o grupo comb. É o CFOP que decide, não o NCM. A engineAPI recusa antes, com 422 COMBUSTIVEL_GRUPO_OBRIGATORIO, quando o item usa um desses 63 CFOP e não traz o bloco combustivel. A lista sai da coluna indComb da Tabela CFOP publicada no Portal Nacional da NF-e (extração de 04/08/2026, todos vigentes). indComb = 1, exigem só o grupo comb:
indComb = 2, exigem o grupo comb mais a identificação do transportador:
Nos CFOP indComb = 2, informe também o transportador. A regra X04-10 do MOC exige a identificação do transportador (CNPJ/CPF) na venda de combustível com esses CFOP, e a SEFAZ rejeita com 362 - Venda de combustível sem informação do Transportador. A engineAPI não recusa esse caso antes: a regra é facultativa por UF e tem três exceções (só vale para finNFe: 1, só para os códigos ANP da seção 8.11.2 do MOC, e não se aplica com transportador no exterior) que este contrato ainda não modela. Preencha transporte.transportadora.cnpjCpf nessas operações. Quando não há circulação física, o MOC admite o CNPJ do próprio emitente.
NCM de combustível com CFOP genérico não é recusado, e isso é deliberado. Um item de NCM 27111910 (GLP) com CFOP 5102 é autorizado pela SEFAZ sem o grupo comb (medido em homologação: protocolo 152260027546119). Não existe regra de validação que ligue NCM ao grupo, então não inventamos uma: recusar fecharia emissões que a SEFAZ aceita hoje. Se o seu produto é combustível, o CFOP certo é o das listas acima, e aí o grupo passa a ser exigido.

Emitindo GLP (gás de cozinha)

O caso mais regrado do leiaute. Além do código ANP, o GLP exige:
  • pGLP + pGNn + pGNi = 100 (percentuais de GLP de petróleo, gás natural nacional e gás natural importado);
  • vPart, o valor de partida por quilograma, sem ICMS;
  • unidade kg (a SEFAZ valida uTrib contra o produto ANP).

Resposta

Mesma resposta de qualquer NF-e: o grupo de combustível não muda o envelope (valores abaixo são ilustrativos; accessKey e protocol vêm da SEFAZ):

O que sai no XML

O grupo vira o bloco <comb> dentro de <prod>, com a ordem exata do leiaute (estrutura validada contra o XSD oficial da NF-e 4.00):
Recupere o XML autorizado com GET /v1/nfe/xml/{accessKey}: ele é o artefato real que a SEFAZ recebeu, nunca uma remontagem.

Campos do bloco combustivel

Fora do GLP, informar pGLP/pGNn/pGNi/vPart devolve 422: o leiaute reserva esses campos ao cProdANP 210203001, e o gerador do documento os descartaria. Recusar é melhor do que emitir uma nota sem o que você declarou.
Não fazem parte deste contrato (ainda): CODIF, qTemp, CIDE, encerrante, pBio e origComb. Mandar qualquer um deles devolve 400 nomeando o campo, em vez de aceitar e deixar de fora do documento. Se você precisa de algum, fale com o suporte. A decisão foi não expor campo fiscal sem caso de uso, não “esquecemos”.
Percentuais e vPart são validados pelo valor que vai para o documento, não pelo que você digitou. O documento carrega os percentuais com 4 casas e o vPart com 2: 33.33333 três vezes soma 100 na sua conta mas grava 99.9999 (a SEFAZ rejeitaria com 855), e vPart: 0.004 grava 0.00, que some do documento (856). Nos dois casos a API recusa antes, com COMBUSTIVEL_INVALIDO, citando o valor arredondado.

Tributação monofásica (CST 02 e 61)

Combustível não é tributado por alíquota percentual: desde a NT 2023.001 o ICMS é monofásico e ad rem, isto é, um valor em reais por unidade de medida, cobrado uma vez só na cadeia. No documento isso é um grupo próprio de ICMS, com dois casos:
  • A base é QUANTIDADE, não reais. qBCMono/qBCMonoRet é a quantidade tributada na unidade do produto (litro, quilograma).
  • A alíquota é ad rem: R$ por unidade. adRemICMS/adRemICMSRet não é percentual. É o valor por litro ou por quilo definido na legislação para aquele produto ANP.
  • O valor é o produto dos dois. vICMSMono = qBCMono × adRemICMS. A SEFAZ refaz essa conta e rejeita a nota se o resultado diferir em mais de R$ 0,01.
  • Vale no Simples Nacional. A regra que proíbe CST em emissor do Simples abre exceção explícita para os CST monofásicos: um posto no Simples revende com 61, não com CSOSN.
  • Exige o grupo combustivel no mesmo item. Sem o código da ANP, o CST monofásico é proibido pela SEFAZ (rejeição 959). Conferimos que o grupo existe; se o código ANP informado é de um produto que a SEFAZ trata como monofásico, quem confere é ela.
  • Os três campos precisam ser maiores que zero e caber no documento. A alíquota ad rem vai até R$ 999,9999 por unidade e a quantidade até 11 dígitos inteiros; valor que arredonda para 0,00 declara ao Fisco que não houve imposto, e é recusado antes de emitir.
  • GO exige cBenef no CST 61: informe o código da tabela da sua UF. Algumas UFs (medido: GO) tratam o CST 61 como benefício fiscal e rejeitam a nota (cStat 930) sem o código do benefício. items[].cBenef é passthrough: 8 ou 10 caracteres alfanuméricos da tabela de benefícios da sua UF, ou o literal "SEM CBENEF" quando a UF não exige nenhum. Consulte a tabela de benefícios fiscais da SEFAZ da sua UF para o código correto: a engineAPI não calcula nem confere o valor.
No XML, cBenef sai no grupo prod (irmão de CEST/CFOP, nunca dentro do ICMS), e o item traz o grupo ICMS61 (estrutura validada contra o XSD oficial da NF-e 4.00), com os totais monofásicos no grupo ICMSTot:

NFC-e: só o CST 61

O leiaute da NFC-e (modelo 65) tem uma lista fechada de CST, e o único monofásico dela é o 61. É o suficiente para o balcão do posto e da revendedora de GLP, que é sempre revenda. Tributação monofásica própria (CST 02) sai em NF-e (modelo 55): tentar na NFC-e devolve 422 antes de consumir número, em vez da rejeição 766 da SEFAZ.

O que ainda não emite na monofasia

CST 15 e 53 não são suportados. O 15 (tributação própria com responsabilidade por retenção do imposto do biocombustível) e o 53 (monofásica com diferimento) exigem campos que este contrato não expõe: qBCMonoReten, adRemICMSReten, vICMSMonoReten, pRedAdRem, motRedAdRem, vICMSMonoOp, vICMSMonoDif. Informar o CST ou qualquer um desses campos devolve 422 nomeando o motivo, em vez de emitir um documento incompleto. Se a sua operação precisa deles, fale com o suporte.
A alíquota ad rem não é conferida contra a tabela da ANP. A conferência oficial (a alíquota informada tem que ser a da legislação para aquele produto) está marcada como implementação futura na própria nota técnica, e a engineAPI não a antecipa. O que validamos é a coerência entre os números que você informou: quantidade × alíquota tem que dar o valor.

Erros comuns

Todos os 422 acima são locais: acontecem antes de qualquer chamada à SEFAZ e antes da numeração, então nada é emitido e nenhum número fiscal é consumido. Em lote (POST /v1/nfe/batch) o item falha no pré-voo e sai FAILED com o mesmo code, sem retry.

O que ainda não emite

ICMS por substituição tributária (CST 60 / CSOSN 500) não é suportado. Combustível é ST em boa parte das UFs. No Regime Normal, o leiaute exige o grupo de repasse (vBCSTRet, vICMSSTRet) que este contrato não expõe; informar ICMS-ST manualmente devolve 422 ICMS_ST_NAO_SUPORTADO. No Simples, csosn: "500" é válido na forma do leiaute, mas a Regra de Validação da NT 2024.001 exige o CEST do produto e um CFOP específico de retorno de ST: nenhum dos dois é resolvido automaticamente hoje, e o código sozinho recusa com 422 CSOSN_NAO_SUPORTADO. Para combustível, o caminho natural hoje é a tributação monofásica (CST 02 e 61, seção acima); o Simples Nacional com csosn: "102" segue valendo para o que não é monofásico. Se a sua operação é ST, avise o suporte antes de integrar.
Também fora do contrato por ora: o grupo encerrante (leitura do bico da bomba), exigido por algumas UFs na NFC-e de posto revendedor, e os campos CODIF, qTemp, CIDE, pBio e origComb. O bloco combustivel vale para NF-e e NFC-e.

Referências

  • MOC 7.0, Anexo I, grupo “LA. Item / Combustível” (regras LA01-20, LA02-10, LA03c-10, LA03c-20, LA03d-10), grupo I (I13-20) e grupo X (X04-10).
  • NT 2023.001 (Tributação Monofásica sobre Combustíveis), grupo N do item (regras N12-20, N12-30, N12-100, N37a-10, N39-10, N43a-10, N45-10) e grupo W do total (W06b.1-10, W06c-10, W06d.1-10, W06e-10).
  • Tabela CFOP do Portal Nacional da NF-e (Documentos > Diversos), coluna indComb.
  • Leiaute NF-e 4.00, elemento comb dentro de prod.
  • Catálogo de erros: todos os code de negócio da API.
  • Emitir NF-e: o payload completo, campo a campo.