Skip to main content
Quando você vende para outro estado, para consumidor final que não é contribuinte do ICMS (o caso clássico do e-commerce B2C), a Emenda Constitucional 87/2015 manda partilhar o imposto: a diferença entre a alíquota interna do estado de destino e a interestadual cabe ao destino, e quem recolhe é você, o remetente. No documento fiscal isso é o grupo ICMSUFDest, que no payload da engineAPI se chama items[].icms.ufDestino. A engineAPI é passthrough aqui: você informa a partilha apurada, ela valida a forma contra o leiaute e transmite. Ela não calcula a partilha, e essa é uma decisão explícita: a base de cálculo e a alíquota internas aplicáveis são as da legislação do estado de destino (Lei Complementar 87/1996, art. 13, § 3º e § 7º, com a redação da Lei Complementar 190/2022: o § 3º fixa o valor devido ao destino e o § 7º a base de cálculo), com reduções por produto e adicional de Fundo de Combate à Pobreza próprios de cada estado. Nada disso está curado aqui, e inventar essa conta seria declarar imposto errado com a sua assinatura digital.
  • Só NF-e (modelo 55): a NFC-e é sempre operação interna, dentro do estado do emitente, então a partilha interestadual não existe naquele documento. Enviar o campo numa NFC-e devolve 400 nomeando o campo.
  • Só fora do Simples: o Supremo Tribunal Federal, na ADI 5.464, suspendeu a exigência da partilha para os optantes do Simples Nacional. Emissor com crt: 1 (Simples) ou crt: 4 (MEI) que informe o grupo recebe 422 DIFAL_NAO_APLICAVEL.
  • O grupo vai inteiro: seis campos são obrigatórios juntos, e o bloco do FCP do destino (base, percentual e valor) também.
  • A operação precisa ser a hipótese certa: interestadual (idDest: 2), a consumidor final (indFinal: 1) e destinatário não contribuinte (destinatario.indicadorIE: 9, ou o campo ausente).

Pré-requisitos

Os campos do grupo

Os três campos de FCP formam um bloco: informe os três, ou nenhum.

Emitindo

Os três somatórios do documento (vICMSUFDest, vICMSUFRemet e vFCPUFDest do total da nota) são calculados pela engineAPI a partir dos itens, somando os valores exatamente como cada item os transmite.

Com o Cérebro Fiscal (resolverTributacao: true)

Em Regime Normal o ICMS da operação própria é sempre resolvido pelo Cérebro Fiscal (não existe caminho manual de cst nesse regime). E aí entra a mudança que esta funcionalidade trouxe: venda interestadual a consumidor final não contribuinte sem o grupo continua recusando com 422 TRIBUTACAO_NAO_RESOLVIDA, porque o documento sairia com o ICMS da operação própria sozinho, subdeclarando a parcela do destino. Informando items[].icms.ufDestino, o Cérebro resolve a operação própria normalmente (com a alíquota interestadual da lei federal) e a partilha que você apurou vai junto.

O que a engineAPI recusa antes de numerar

Nenhuma dessas recusas consome número fiscal.

O que ainda não é conferido, e por quê

A engineAPI não confere vICMSUFDest contra vBCUFDest × (pICMSUFDest − pICMSInter). Parece a conta óbvia, mas os insumos dela (a base, a alíquota interna e as reduções por produto) são da legislação do estado de destino, e não estão curados aqui. Conferir uma conta cujos insumos não temos recusaria emissão legítima, e a casa não crava regra fiscal sem fonte que a sustente. O que é conferido é o que a norma afirma diretamente: a partilha vigente, o zero do remetente que decorre dela, o domínio fechado da alíquota interestadual, a integridade do grupo e a única identidade que vem da definição dos campos (vFCPUFDest = vBCFCPUFDest × pFCPUFDest).
Estado desta funcionalidade: estrutura validada contra o leiaute real e as regras do documento fiscal, com o XML conferido campo a campo contra o schema oficial. Ainda aguardando prova por emissão real autorizada na SEFAZ. Acompanhe em Cobertura fiscal.