cProd: código do produto ou serviço na NF-e e NFC-e
<cProd>det › prod › cProdRevisão editorial em 26 de set. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
cProd é o código que identifica o produto ou serviço segundo a codificação do emitente. Ele aparece em NFe/infNFe/det/prod/cProd, uma vez em cada item, e é obrigatório: o campo admite de 1 a 60 caracteres. Sua função é ligar o item faturado ao cadastro de origem; ele não é uma classificação fiscal. A definição e a condição especial de preenchimento estão no MOC 7.0, Anexo I, I02, página 17.
Nesta página: O código pertence ao cadastro do emitente, cProd, cEAN, xProd e NCM são informações diferentes, A condição específica do formato CFOP9999, XML e formato do código, Como diagnosticar código ausente ou produto importado incorretamente.
O código pertence ao cadastro do emitente
Uma empresa pode identificar um produto como CAM-M-AZ e outra usar 10824 para a mesma mercadoria. Isso não é, por si, divergência fiscal: são catálogos próprios. Ao importar uma nota de fornecedor, preserve o código recebido e faça a correspondência com o cadastro interno usando também a identidade do fornecedor, a descrição, a unidade e as características do item. Não suponha que 10824 tenha o mesmo significado em todas as empresas.
Para conferir a origem, compare o cProd do XML com o código registrado no pedido e no cadastro que gerou aquele item. O identificador técnico de uma linha de banco ou o número de ordem do item não devem ser confundidos com o código comercial. O atributo det/@nItem indica a posição do item na nota: dois itens podem representar o mesmo produto em condições diferentes, sem que seus números de ordem sejam códigos de produto.
cProd, cEAN, xProd e NCM são informações diferentes
| Campo | O que identifica | O que não resolve sozinho |
|---|---|---|
cProd |
Código próprio do produto ou serviço do emitente | Classificação ou identidade universal |
xProd |
Descrição legível do que foi faturado | Chave única do cadastro |
cEAN |
GTIN da unidade comercial, quando existente; o MOC prevê SEM GTIN para produto sem esse código |
Código interno de cada empresa |
NCM |
Classificação da mercadoria | Código do cadastro comercial |
CEST |
Código especificador, no contexto documentado desse campo | Código interno do produto |
cProdANP |
Código de produto ANP no grupo de combustível | Identificação de qualquer mercadoria |
Esses campos podem coexistir, com valores diferentes. Um cProd numericamente igual a um código de barras não transforma os campos em sinônimos. Mantenha os mapeamentos separados na integração. MOC, Grupo I, páginas 17–18, e grupo de combustíveis, campo cProdANP.
A condição específica do formato CFOP9999
O MOC orienta preencher com o CFOP no formato CFOP9999 quando o item não se relaciona com mercadoria/produto e o contribuinte não possui codificação própria. As duas condições importam. A convenção não é uma regra geral para todos os produtos, serviços ou cadastros incompletos.
Nessa notação, CFOP é o prefixo literal e 9999 representa as quatro posições do código fiscal da operação definido para o item. Não acrescente outro bloco 9999 ao código e não escolha uma operação tributária a partir desse artigo. Se essa situação especial estiver em análise, confirme a natureza do item, a existência de código próprio e o CFOP com o responsável pela configuração fiscal. Com o parâmetro confirmado, a integração consegue montar e conferir a representação documentada. Essa montagem não elimina o campo CFOP próprio do XML.
XML e formato do código
O exemplo é sintético e parcial; não é uma nota pronta para transmissão:
<det xmlns="http://www.portalfiscal.inf.br/nfe" nItem="1">
<prod>
<cProd>CAM-M-AZ</cProd>
<xProd>Camiseta de algodão, tamanho M, azul</xProd>
</prod>
</det>
Foram omitidos os demais campos obrigatórios. Em um XML processado, o caminho completo inclui nfeProc/NFe/infNFe/det/prod/cProd. Procure o det correspondente, e não qualquer texto semelhante no documento.
O tipo textual aceita códigos alfanuméricos; não há exigência geral de somente números. Zeros que fazem parte de um código textual, como 00042, precisam ser preservados. Isso difere de nNF, cuja representação tem outro tipo e não aceita zeros à esquerda. O código não pode ser vazio nem ultrapassar 60 caracteres; TString também restringe caracteres e espaços nas extremidades. Use um gerador XML para escapar caracteres reservados, como & representado por &. As restrições podem ser conferidas em prod/cProd e TString no pacote oficial PL_010c.
Como diagnosticar código ausente ou produto importado incorretamente
Se o campo está ausente ou vazio, confira o vínculo do item com o cadastro e o mapeamento usado para gerar XML. Se chega correto do fornecedor e muda na importação, examine conversões numéricas que removem zeros, truncamento de texto e correspondência de produtos feita apenas pelo código. Se o texto excede o limite, corrija a política de codificação ou seu mapeamento de forma identificável; cortar caracteres silenciosamente pode transformar um produto em outro.
Depois da correção, compare o novo cProd, a descrição e a unidade com a origem do item. Um XML que passa no schema não prova que o vínculo comercial esteja correto ou que a nota tenha sido autorizada. Não edite diretamente um XML assinado ou autorizado para alterar o código: o arquivo resultante não altera o documento fiscal original.
Para aprofundar a distinção, consulte xProd, descrição do item. A conferência de código e descrição continua separada da decisão sobre NCM, CFOP ou tributação.
Referência técnica para integração
- XPath completo
/nfeProc/NFe/infNFe/det/prod/cProd- 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:TString · TString
- Preenchimento no catálogo
- Obrigatório
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.
- maxLength
60- minLength
1- pattern
[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}- whiteSpace
preserve