CST em COFINSAliq: códigos 01 e 02 e compatibilidade no XML
<CST>det › imposto › COFINS › COFINSAliq › CSTRevisão editorial em 27 de set. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
O CST de COFINSAliq identifica a situação tributária da COFINS representada por essa alternativa percentual. Seu caminho é det/imposto/COFINS/COFINSAliq/CST, e o domínio documentado contém somente 01 e 02. Um código aceito em outro grupo da COFINS não é necessariamente aceito aqui.
O significado de 01 e 02
| Código | Descrição no leiaute |
|---|---|
| 01 | Operação tributável com base monetária e alíquota normal, no contexto cumulativo/não cumulativo descrito pelo manual |
| 02 | Operação tributável com base monetária e alíquota diferenciada |
O MOC 7.0, Anexo I, p. 54 documenta essas descrições. Elas permitem interpretar o documento; não autorizam concluir que toda empresa de determinado regime use um código, nem que um produto tenha determinado percentual.
A escolha requer a situação efetiva da operação e seu fundamento fiscal. Para confirmá-la, reúna identificação do produto, natureza da operação, regime do emitente, data do documento e configuração ou orientação fiscal que originou a classificação. Depois de definido o CST, o sistema deve manter o código e o grupo compatíveis durante o cálculo e a geração do XML.
Código de situação não é valor de alíquota
CST é um código, enquanto pCOFINS é um número percentual. O CST não contém a alíquota e não substitui sua definição. Também não contém a base nem o valor do tributo: em COFINSAliq, os campos vBC, pCOFINS e vCOFINS continuam presentes.
Para demonstrar a representação, assuma CST 01 já definido para uma operação fictícia, base de R$ 80,00 e percentual meramente didático de 2,50%. A conta 80 × 2,50 ÷ 100 resulta em R$ 2,00. O XML é sintético, parcial em relação à nota e não está pronto para transmissão:
<COFINSAliq xmlns="http://www.portalfiscal.inf.br/nfe">
<CST>01</CST>
<vBC>80.00</vBC>
<pCOFINS>2.50</pCOFINS>
<vCOFINS>2.00</vCOFINS>
</COFINSAliq>
O exemplo não vincula o percentual 2,50% ao código 01 como regra legal. Ele apenas exibe quatro informações com unidades e posições coerentes. Se outro percentual estivesse confirmado para uma operação real, a geração teria de representá-lo; não se escolhe CST por comparação com esse número de exemplo.
Em COFINSQtde, o domínio é CST 03 e os parâmetros são quantidade e valor por unidade. Em COFINSNT, o domínio é 04 a 09 e o grupo não possui aqueles campos de cálculo. COFINSOutr possui um conjunto próprio de códigos de outras operações. Essas diferenças são estruturais e não critérios para mudar a tributação do leitor.
Investigue o caminho e preserve os dois dígitos
No XSD histórico PL_010d_v1.03, CST é uma string enumerada. 01 e 02 são valores exatos; 1, 2, 001, vazio ou espaços não equivalem a eles. Converta o código para a representação textual correta sem perder o zero inicial. Schema PL_010d_v1.03, COFINSAliq/CST.
Quando um validador indicar incompatibilidade:
- Localize o item e confirme que a tag está realmente sob COFINSAliq, usando o namespace da NF-e. Buscar apenas “CST” também encontra ICMS, IPI e outros grupos.
- Compare o código da configuração fiscal com o texto serializado. Se
01virou1, há uma transformação técnica a corrigir. - Se a origem contém outro código, confronte sua definição com a estrutura que o emissor escolheu. Pode haver seleção incorreta do grupo ou classificação pendente.
- Corrija a causa comprovada na configuração ou no mapeamento, gere a prévia e valide com o pacote exigido pelo ambiente. Não edite o XML assinado.
Não substitua um código fora do domínio por 01 ou 02 apenas para obter validação. Um XML estruturalmente aceito não comprova que a classificação fiscal seja apropriada. O artigo de COFINSAliq detalha a leitura conjunta dos campos após essa classificação estar confirmada.
Referência técnica para integração
- XPath completo
/nfeProc/NFe/infNFe/det/imposto/COFINS/COFINSAliq/CST- Namespace
http://www.portalfiscal.inf.br/nfe- Leiaute
- 4.00 · PL_010e_v1.02
- Ocorrências no XSD
- 1–1 no contexto do elemento pai
- Tipo
- inline:xs:string · string
- Preenchimento no catálogo
- Condicional
A ocorrência vale dentro da estrutura XML: um campo obrigatório em um grupo opcional não torna esse grupo obrigatório. A aplicação fiscal depende da operação e da versão da regra.
- enumeration
01- enumeration
02- whiteSpace
preserve