cAgreg na NF-e: código de agregação e vínculo com o lote
<cAgreg>det › prod › rastro › cAgregRevisão editorial em 26 de set. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
cAgreg é o código de agregação do produto no grupo de rastreabilidade. Seu caminho é /nfeProc/NFe/infNFe/det/prod/rastro/cAgreg. É um identificador opcional de 1 a 20 caracteres, associado à ocorrência de rastro em que foi informado. Não representa quantidade, preço ou uma classificação fiscal.
O código acompanha a ocorrência de rastreabilidade
Uma agregação pode vincular unidades a uma embalagem ou agrupamento nos controles da cadeia. O XML oferece o campo para registrar esse identificador; não especifica aqui um sistema universal de geração, um dígito verificador ou uma consulta pública para autenticar qualquer código. Use a identificação existente na documentação e no sistema de rastreabilidade do produto, preservando a relação comprovada.
nLote identifica o lote; qLote informa sua quantidade; dFab e dVal trazem as datas. cAgreg vem depois desses quatro campos. Informá-lo não dispensa nenhum deles quando rastro existe. A quantidade também não pode ser deduzida do comprimento do código de agregação ou do número de caracteres de um identificador impresso.
Se o produto traz GTIN, serial e lote num mesmo símbolo físico, a leitura precisa separar as informações antes de mapeá-las. O conteúdo completo do símbolo não cabe automaticamente em cAgreg e o GTIN pertence a cEAN/cEANTrib conforme a apresentação. Não corte o conteúdo até obter vinte caracteres sem verificar o que cada parcela significa.
O campo passou de numérico para alfanumérico
A tabela original do MOC 7.0 apresenta o tipo numérico. A NT 2020.005 v1.21, seção 2.1.3 e tabela I85, documenta expressamente a mudança para alfanumérico. O schema consultado implementa texto com mínimo de 1 e máximo de 20 caracteres. Assim, a descrição antiga de campo numérico não justifica rejeitar letras num identificador real. NT 2020.005.
Essa mudança não autoriza conteúdo arbitrário: continuam aplicáveis as restrições de texto e tamanho do schema efetivo. Uma ocorrência vazia não é uma forma de representar ausência; quando não existe agregação documentada a informar, a opcionalidade permite omitir a tag, preservando os demais dados reais do lote.
Caracteres, espaços e código preservado
O tipo TString do pacote lido preserva o conteúdo e restringe seus caracteres. Seu padrão não admite espaço no início ou no fim nem um valor formado apenas por espaços; letras, algarismos e separadores compatíveis com o tipo podem fazer parte do código. O limite de vinte é do valor textual de uma ocorrência, não da quantidade agregada. A regra não impõe um código de vinte posições nem exige completar um identificador mais curto com zeros.
Se o código confirmado contiver um caractere reservado de XML, o serializador deve escapá-lo. Um identificador fictício AG&0001 seria representado como AG&0001, mas o texto interpretado continua AG&0001. Isso não transforma a sequência de escape em parte do código original. Confira o conteúdo interpretado, a grafia e os zeros com a origem; aceitar o texto no XSD não autentica a agregação física.
Exemplo de vínculo entre lote e agregação
Fragmento sintético e parcial, com identificadores fictícios e quantidade ilustrativa. Não identifica uma embalagem real nem está pronto para transmissão.
<rastro xmlns="http://www.portalfiscal.inf.br/nfe">
<nLote>LOTE-A2026</nLote>
<qLote>12.000</qLote>
<dFab>2026-08-01</dFab>
<dVal>2027-08-31</dVal>
<cAgreg>AG-A2026-01</cAgreg>
</rastro>
A sequência mantém o código no mesmo bloco das datas e quantidade. Se o item tem vários lotes, confira em qual ocorrência o identificador deve aparecer. Copiar um único código para todos os blocos exige correspondência documental, não uma conveniência do gerador.
Diagnóstico de perda ou rejeição do identificador
Compare o código na fonte, no cadastro, na preparação do lote e no XML. Uma coluna numérica pode apagar letras ou zeros iniciais; um leitor de código de barras pode transferir caracteres de controle ou toda a sequência codificada. Confira a extração, a posição após dVal e o limite de vinte caracteres.
Se há erro estrutural, valide a versão do schema e a transferência integral. Se falta comprovação do vínculo, obtenha a documentação da agregação e do lote. Não gere um identificador aleatório para satisfazer um campo opcional, nem o substitua por registro ANVISA ou CNPJ. Corrija apenas a transferência demonstravelmente incorreta e confira o XML gerado novamente, sem editar arquivo assinado.
Fontes oficiais
- MOC 7.0 — Anexo I — 7.00; p.21 I85 e grupo I80.
- Schemas NF-e/NFC-e — PL_010c_NT2022_002v1.30; rastro/cAgreg TString 1–20.
- NT 2020.005 — Leiaute e Validações — 1.21; seção 2.1.3 e tabela I85.
Leitura relacionada
Referência técnica para integração
- XPath completo
/nfeProc/NFe/infNFe/det/prod/rastro/cAgreg- Namespace
http://www.portalfiscal.inf.br/nfe- Leiaute
- 4.00 · PL_010e_v1.02
- Ocorrências no XSD
- 0–1 no contexto do elemento pai
- Tipo
- inline:TString · TString
- Preenchimento no catálogo
- Opcional
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
20- minLength
1- pattern
[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}- whiteSpace
preserve