vFCP no ICMS00: cálculo pela vBC, somatório e rejeições
<vFCP>det › imposto › ICMS › ICMS00 › vFCPRevisão editorial em 26 de set. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
ICMS00/vFCP é o valor monetário do Fundo de Combate à Pobreza relativo ao item nesse grupo. Ele integra o par pFCP/vFCP, separado do ICMS próprio. Em ICMS00, a conferência aritmética usa vBC × pFCP / 100; não há campo vBCFCP dentro dessa alternativa. O MOC 7.0, Anexo I, p. 26 e regra N17c-10, p. 111 documenta essa estrutura e relação.
Qual base utilizar na conferência
Antes de conferir o valor, precisam estar confirmadas incidência e alíquota do FCP para o contexto real. Este artigo não escolhe produto sujeito ao fundo nem percentual da UF. Os dados a confirmar são produto, operação, UF, data, regime e referência fiscal. Uma vez definidos, compare a base e o percentual utilizados na memória com o XML.
No CST 00, use vBC do mesmo item. A N17c-10 diferencia esse caso dos CST 10, 20, 70 e 90, que usam vBCFCP. A NT 2020.005 v1.21, p. 18 excluiu CST 51 dessa validação; o trecho antigo do MOC não deve ser reaplicado a ele. No contexto de diferimento, a NT descreve vFCP como valor realmente devido após o diferimento, que não é a simples conta antes de diferir. Copiar a fórmula de outro grupo pode trazer um campo inexistente ou uma base de contexto errado.
O grupo de FCP é opcional como sequência XML, mas, quando existe, seus dois campos são obrigatórios. Para produtos sem incidência, a N17b-10 orienta não informar os campos relativos ao fundo. Isso não autoriza retirar informação incidente só para fazer uma conta passar.
Exemplo com arredondamento
Assuma parâmetros sintéticos já definidos: base de R$ 123,45 e percentual didático de FCP 2% incidente nesta representação, finalidade normal.
- Converta o percentual:
2 / 100 = 0,02. - Multiplique:
123,45 × 0,02 = 2,469. - Arredonde para duas casas: R$ 2,47.
- Confira
vFCP=2.47, associado apFCP=2.00.
A N17c-10 associa divergência do valor, quando FCP foi informado e finNFe=1, à rejeição 860, de aplicação obrigatória para modelos 55/65. A nota *4 do MOC, p. 117 prevê produto arredondado para duas casas e tolerância de R$ 0,01 para mais ou para menos nessa validação. Essa margem não é um modo de calcular a incidência nem de ajustar um imposto sem origem.
Não confunda zero monetário após arredondamento com percentual FCP zero. Em exemplo didático muito pequeno, 0,01 × 2 / 100 = 0,0002 resulta em vFCP=0.00, mantendo pFCP=2.00. Já pFCP=0.00 é objeto da N17b-10/880. O exemplo demonstra a diferença entre percentual e resultado; não afirma incidência em um caso real nem garante autorização de todo o documento.
Como o valor chega ao total
ICMSTot/vFCP é a soma dos valores próprios de FCP dos itens, conforme W04b-10, associada à rejeição 861 e aplicação obrigatória. Some os valores monetários representados, não uma conta única sobre base agregada que ignora arredondamento ou alíquotas diferentes.
Exemplo de consolidação: primeiro item com R$ 2,47 e segundo com R$ 3,00, supondo somente essas parcelas próprias na nota, resultam em total R$ 5,47. O segundo item não recebe R$ 5,47; esse valor pertence ao total. Se um item tiver FCP por ST ou destino, identifique o grupo e o total correspondente em vez de misturá-lo nesta soma.
| Campo | Representação |
|---|---|
ICMS00/vFCP |
FCP próprio daquele item. |
ICMSTot/vFCP |
Consolidação do FCP próprio dos itens. |
vFCPST |
FCP da substituição tributária em contexto próprio. |
vFCPSTRet |
FCP retido anteriormente por ST, em contexto próprio. |
vFCPUFDest |
FCP relativo à UF de destino, no grupo correspondente. |
ICMS00/vICMS |
ICMS próprio; não deve receber o valor monetário de FCP somado. |
A fórmula geral da W16-10, atualizada na NT 2023.004 v1.20, inclui vFCPST, mas não apresenta vFCP próprio como parcela adicional. Não acrescente todo FCP ao total da nota por semelhança de nome.
Localização e XML coerente
O XPath processado é nfeProc/NFe/infNFe/det/imposto/ICMS/ICMS00/vFCP. O tipo monetário TDec_1302 do schema oficial aceita valor não negativo, até 13 dígitos inteiros e duas casas quando houver fração. Use ponto decimal e mantenha o par após vICMS.
Fragmento parcial e sintético do exemplo, com ICMS didático de 18% e demais parâmetros assumidos; não é NF-e completa nem está pronto para transmissão:
<ICMS00 xmlns="http://www.portalfiscal.inf.br/nfe">
<orig>0</orig>
<CST>00</CST>
<modBC>3</modBC>
<vBC>123.45</vBC>
<pICMS>18.00</pICMS>
<vICMS>22.22</vICMS>
<pFCP>2.00</pFCP>
<vFCP>2.47</vFCP> <!-- resultado do fundo, separado -->
</ICMS00>
Como distinguir 860, 861 e 876
860: examine o item indicado, a finalidade normal, base do CST 00, percentual e arredondamento. A diferença pode vir de base de outro grupo, fator percentual incorreto, valor antigo ou campo serializado diferente da memória. A causa deve ser comprovada pelo confronto.
861: confronte soma dos vFCP próprios dos itens e ICMSTot/vFCP. Se os itens estão corretos, revise a consolidação; se um item está errado, revise seu cálculo antes do total. A soma não deve absorver FCP-ST nem FCP da UF de destino.
876: na NF-e de operação interestadual (idDest=2) para consumidor final (indFinal=1), não contribuinte (indIEDest=9), a N17c-20 examina vFCP informado e orienta que FCP, quando existir, seja informado em vFCPUFDest. Confira condições e todos os dados do grupo de destino. Não trate isso como simples diferença de centavos.
Após identificar a origem, corrija no emissor, regenere e confira item e totais afetados. Não edite o XML assinado nem mude incidência ou percentual apenas para eliminar a mensagem. pFCP aprofunda percentual zero e tabela por UF; ICMS00 explica o conjunto.
Referência técnica para integração
- XPath completo
/nfeProc/NFe/infNFe/det/imposto/ICMS/ICMS00/vFCP- 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