vBCRet na NF-e: base da retenção de ICMS do transporte
<vBCRet>transp › retTransp › vBCRetRevisão editorial em 26 de set. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
vBCRet é a base de cálculo da retenção de ICMS do transporte, em reais, dentro de transp/retTransp. Seu caminho completo é /nfeProc/NFe/infNFe/transp/retTransp/vBCRet. Não é o valor do serviço (vServ), o imposto retido (vICMSRet) nem uma base de ICMS de produto.
A base é resultado de uma definição fiscal e de sua composição documentada. Não pode ser presumida igual ao frete, ao total da mercadoria ou ao valor líquido pago. O leiaute identifica o resultado a registrar; não fornece uma composição universal para toda prestação.
Como conferir a origem da base
Reúna o documento do serviço, valores que compõem a prestação, eventuais ajustes fiscalmente definidos e a memória de cálculo. Confira que todos pertencem ao mesmo transporte e à mesma operação. O valor do serviço ajuda na reconciliação, mas não substitui a base definida.
Se o sistema calculou a base, confronte o parâmetro e a memória com a saída XML. Se a base foi informada por integração, confira sua unidade e a origem. Não transforme ausência de parâmetro em zero nem aplique uma proporção porque ela apareceu em um exemplo.
retTransp admite até uma ocorrência; dentro dele, vBCRet é obrigatório uma vez, depois de vServ. Isso não obriga criar o grupo em toda nota. MOC X11–X15, p.60.
Formato monetário
O tipo TDec_1302 do schema PL_010c comporta até treze dígitos inteiros e duas casas quando decimal, com alternativas inteiras e zero previstas no padrão. Para representar R$ 800,00, o exemplo usa 800.00, sem moeda, ponto de milhar ou vírgula decimal.
800,00, R$ 800.00 e 800.000 não são a representação decimal desse tipo. O XSD aceitar zero não prova base zero aplicável, isenção ou ausência de retenção. A unidade do campo é monetária: não exporte centavos inteiros como se fossem reais.
Exemplo com serviço e base diferentes
Fragmento parcial e sintético, não pronto para transmissão. Assumimos serviço de R$ 1.000,00, base previamente definida de R$ 800,00 e percentual ilustrativo de 12%, exclusivamente para demonstrar a leitura. Não se estabelece redução de base nem alíquota para sua operação:
<retTransp xmlns="http://www.portalfiscal.inf.br/nfe">
<vServ>1000.00</vServ>
<vBCRet>800.00</vBCRet>
<pICMSRet>12.00</pICMSRet>
<vICMSRet>96.00</vICMSRet>
<CFOP>5352</CFOP>
<cMunFG>4106902</cMunFG>
</retTransp>
Na aplicação simples assumida, 800 × 12 ÷ 100 = 96. Usar vServ=1000 no lugar da base levaria a 120, mudando a conta. A diferença mostra por que cada variável precisa ser conferida; não permite concluir que sua base deva ser menor que o serviço. CFOP e município são também demonstrativos, sem seleção fiscal para o leitor.
Diagnosticar divergência de base
Se o formato falhou, compare o texto enviado com o tipo decimal. Se o resultado retido diverge, compare primeiro a base com a memória fiscal e depois a alíquota e o resultado. Um cálculo correto com base errada continua representando a operação incorretamente.
Se a base parece estar cem vezes maior, investigue conversão centavos/reais no contrato de integração. Se repete o valor do serviço sempre, veja se houve cópia automática indevida. Essas são hipóteses a confirmar na origem, não motivos para ajustar o XML por tentativa.
A rejeição 755 não é uma regra de diferença entre base e valor: X11-10 trata a presença de retTransp na NFC-e ou NF-e com DANFE Tipo 2 (tpImp=6), pela NT 2026.002 v1.10a. O conjunto tem cronograma de teste em 01/07/2026 e produção em 03/08/2026, sem prova de implantação por UF neste guia.
Para corrigir, confirme com o responsável fiscal a composição da base, a incidência e os parâmetros aplicáveis, levando os documentos e a memória. Corrija a origem comprovada e confira a geração no fluxo regular, sem editar XML assinado. Veja vServ para o valor do serviço e pICMSRet para a representação do percentual.
Referência técnica para integração
- XPath completo
/nfeProc/NFe/infNFe/transp/retTransp/vBCRet- 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
- TDec_1302 · 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.
- pattern
0|0\.[0-9]{2}|[1-9]{1}[0-9]{0,12}(\.[0-9]{2})?- whiteSpace
preserve