cBarra na NF-e: código de barras diferente do GTIN
<cBarra>det › prod › cBarraRevisão editorial em 26 de set. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
cBarra registra um código de barras diferente do padrão GTIN usado no produto comercializado. Seu caminho é /nfeProc/NFe/infNFe/det/prod/cBarra. É opcional e aceita de 3 a 30 caracteres. Foi criado pela NT 2020.005 para permitir informação de códigos internos ou de terceiros sem utilizá-los indevidamente nos campos próprios de GTIN.
cBarra, cEAN e cProd não têm a mesma função
cEAN é o GTIN da apresentação comercial, ou SEM GTIN quando esse identificador não existe. cBarra guarda outro código de barras. cProd é o código de cadastro do emitente, independentemente de ser impresso ou lido por um scanner. Um mesmo cadastro pode, portanto, ter identificação interna, um GTIN e outro código de barras, cada qual no campo adequado.
O desenho das barras ou a quantidade de dígitos impressos não bastam para afirmar que um código é GTIN. Verifique sua origem e padrão junto ao fabricante ou titular e ao cadastro documentado. Um código criado pelo sistema para identificar uma embalagem não se torna GTIN por ter 13 dígitos. NT 2020.005, seção 2.1.1.
Como informar um código próprio
Considere um produto cujo cadastro interno é PROD-015 e que não possui GTIN, mas cuja embalagem comercial tem o código não GTIN CX-2026-015. Esse é apenas um cenário sintético para distinguir os campos; não prova padrão ou identificação de produto real.
<prod xmlns="http://www.portalfiscal.inf.br/nfe">
<cProd>PROD-015</cProd>
<cEAN>SEM GTIN</cEAN>
<cBarra>CX-2026-015</cBarra>
<!-- Outros campos obrigatórios omitidos -->
</prod>
O fragmento é parcial e não está pronto para transmissão. SEM GTIN aparece porque o exemplo assume ausência real de GTIN; não deve substituir um identificador existente. A posição de cBarra é depois de cEAN e antes da descrição xProd no pacote consultado.
O código comercial não identifica automaticamente a unidade tributável
Se o código lido é da caixa vendida, ele pertence à identificação comercial. A unidade tributável pode ser diferente, como uma unidade individual, e seu código não GTIN tem o campo cBarraTrib. O código da caixa não deve ser replicado nesse campo sem verificar a unidade. O fator de conversão é informação dos cadastros e controles, não um dado extraído automaticamente de cBarra.
Da mesma forma, preencher cBarra não resolve rejeição de cEAN em branco, dígito verificador de GTIN ou registro CCG. Esses retornos conferem campos e condições próprias; não procure uma equivalência de códigos apenas porque o scanner lê ambos.
Diagnóstico de código truncado ou falha de schema
Compare o valor integral no documento/cadastro com o XML gerado. Veja se a integração limitou o tamanho, retirou letras, perdeu zeros iniciais ou acrescentou espaços externos. cBarra é textual; conversão para inteiro pode alterar o identificador. Quando presente, respeita 3–30 caracteres. O tipo TString preserva espaços, mas seu padrão não permite espaço no início ou no fim, tabulações ou quebras de linha; letras, algarismos e hífen do exemplo são compatíveis. Espaço interno não equivale a espaço externo. Confira o valor original antes de corrigir uma transformação da integração.
A NT 2020.005 informou a criação desses campos sem validações próprias; isso não elimina a validação estrutural, nem comprova reconhecimento cadastral pela SEFAZ. Se o problema é a identidade do produto, confirme a fonte e a embalagem. Se o problema é serialização, corrija o mapper e confira o XML novo. Não altere o código verdadeiro nem edite documento assinado para ajustar a validação. O campo não determina classificação ou tributação da mercadoria.
Fontes oficiais
- NT 2020.005 — Leiaute e Validações — 1.20; pp.5 e 9, cBarra I03a; criação sem validações próprias.
- Schemas NF-e/NFC-e — PL_010c_NT2022_002v1.30; prod/cBarra TString 3–30.
Leitura relacionada
Referência técnica para integração
- XPath completo
/nfeProc/NFe/infNFe/det/prod/cBarra- 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
30- minLength
3- pattern
[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}- whiteSpace
preserve