Pular para o conteúdo
Fiscal ProBiblioteca
NF-e e NFC-e · ICMS

vICMSSTRet no ICMS60: valor do ICMS-ST cobrado antes

<vICMSSTRet>det › imposto › ICMS › ICMS60 › vICMSSTRet

Revisão editorial em 14 de out. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.

vICMSSTRet em ICMS60 é o valor do ICMS-ST cobrado anteriormente por substituição tributária. É um valor monetário histórico associado à mercadoria do item. Não equivale à base de cálculo, ao ICMS próprio do substituto ou ao valor efetivo da operação atual.

Caminho desta página: /nfeProc/NFe/infNFe/det/imposto/ICMS/ICMS60/vICMSSTRet. O prefixo nfeProc identifica o XML processado; no XML da NF-e antes do protocolo, o percurso começa em NFe. O campo pertence ao item det, não aos totais.

Neste artigo

Qual documento sustenta o imposto retido anteriormente?

A definição do MOC aponta para o ICMS-ST cobrado anteriormente; a conferência precisa dos documentos e registros que sustentam essa retenção para a mercadoria e quantidade abrangidas. Se não há essa informação, o campo não pode ser preenchido por uma estimativa baseada no preço atual.

O manual registra que o valor pode ser omitido quando a legislação não exige sua informação. Essa condição não remove a exigência de um filho dentro da sequência iniciada nem afasta uma N12-81 aplicável. Se a saída representa parcela de um documento anterior, confirme a correspondência e os critérios de atribuição com o responsável contábil; não faça rateio presumido. Fontes: MOC 7.0, Anexo I, p. 34; NT 2018.005 v 1.52, p. 14.

Por que não basta multiplicar a base por pST?

vBCSTRet é a base anterior; pST é a alíquota suportada, incluindo FCP incidente; vICMSSubstituto é o próprio do substituto; vICMSSTRet é a retenção ST. Essas definições não fornecem uma fórmula universal de reconstrução do valor histórico a partir de dois campos isolados.

No exemplo, base 1.000,00 e pST 20% produzem 200,00 como multiplicação aritmética. O cenário histórico assume próprio do substituto 90,00,ST 90,00 e FCP 20,00. Esses dados são coerentes como hipóteses demonstrativas, mas a identidade aritmética não estabelece uma regra fiscal para todas as operações. Copiar 200,00 para ST ignoraria a distinção de parcelas; subtrair um valor atual arbitrário também não resolve a origem histórica. Fontes: MOC 7.0, Anexo I, p. 34; NT 2018.005 v 1.52, p. 14.

Quando o campo participa da rejeição 938?

A sequência opcional da retenção anterior contém vBCSTRet, pST, vICMSSubstituto e vICMSSTRet. No XSD, os campos base, alíquota e ICMS retido são obrigatórios se essa sequência existir; vICMSSubstituto tem ocorrência própria 0–1. Essa distinção não elimina uma exigência contextual: a N12-81 pode exigir as quatro informações na NF-e modelo 55 com CST 60 e indFinal=0, conforme implementação da UF, gerando a rejeição 938.

A NT 2018.005 v 1.52, pp. 4 e 7, registra a exclusão do modelo 65 dessa regra; na tabela da p. 22, /65 está tachado. A extração textual que simplesmente reproduz 55/65 perde essa marca. Não aplique 938 a uma NFC-e apenas pela presença do campo no esquema compartilhado. Os dados devem corresponder à retenção anterior documentada para a mercadoria, não ser criados a partir de uma alíquota atual ou do preço da venda. Fontes: NT 2018.005 v 1.52, pp. 4, 7, 14, 22; pacote oficial PL 010f, ICMS60.

A regra de retenção anterior e a N12-82 das informações efetivas não devem ser fundidas: 938 trata dados anteriores em operação não final no modelo 55; 906 trata o bloco efetivo em operação final, com condições e modelos próprios.

Como o valor aparece no XML?

O tipo TDec_1302 é monetário. O valor ST anterior fecha o primeiro bloco opcional de ICMS60, depois de pST e do campo próprio do substituto quando este existe. O bloco exige base, pST e valor ST; vICMSSubstituto é opcional no XSD, sem afastar exigência contextual.

Trecho parcial com dados históricos fictícios, não uma NF-e pronta:

<ICMS60 xmlns="http://www.portalfiscal.inf.br/nfe">
  <orig>0</orig>
  <CST>60</CST>
  <vBCSTRet>1000.00</vBCSTRet>
  <pST>20.0000</pST>
  <vICMSSubstituto>90.00</vICMSSubstituto>
  <vICMSSTRet>90.00</vICMSSTRet>
  <vBCFCPSTRet>1000.00</vBCFCPSTRet>
  <pFCPSTRet>2.0000</pFCPSTRet>
  <vFCPSTRet>20.00</vFCPSTRet>
  <pRedBCEfet>10.0000</pRedBCEfet>
  <vBCEfet>450.00</vBCEfet>
  <pICMSEfet>18.0000</pICMSEfet>
  <vICMSEfet>81.00</vICMSEfet>
</ICMS60>

90.00 em vICMSSTRet é imposto anterior, não percentual. Não use vírgula, moeda ou sinal negativo; ausência não se converte em zero. O mesmo nome em ICMSSN500 ou ICMSST pertence a outra alternativa e deve ser tratado no XPath correspondente. Fonte: pacote oficial PL 010f, ICMS60; MOC 7.0, Anexo I, p. 34.

Esse valor entra automaticamente no total vST da nota?

A W06-10 do MOC confere o total vST com itens de ID N23, associado a vICMSST, imposto-ST da operação. vICMSSTRet é ID N27 e informa retenção anterior. Por isso, não o some automaticamente como nova ST no total vST apenas porque o nome contém ST.

Para investigar uma divergência, separe item, família de imposto e regra de totalização; compare também FCP anterior e o valor efetivo em seus campos próprios. Corrija a importação, a correspondência histórica ou o mapeamento cuja falha foi demonstrada. Se falta documento anterior, identifique exatamente qual retenção e quantidade precisam ser confirmadas, levando os registros ao responsável contábil. Gere novo XML de teste, preserve o assinado e não troque CST ou consumidor final para fazer o valor coincidir. Fontes: MOC 7.0, Anexo I, pp. 34, 120; NT 2018.005 v 1.52, p. 22.

Fontes oficiais

Leituras relacionadas

Referência técnica para integração

XPath completo
/nfeProc/NFe/infNFe/det/imposto/ICMS/ICMS60/vICMSSTRet
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