Developers / Tributário
Tributário

ICMS · DIFAL POST

Calcula o Diferencial de Alíquota entre duas UFs -- 100% devido à UF de destino desde 2019 (fim do cronograma de partilha da EC 87/2015; base normativa atual: Convênio ICMS 236/2021 + LC 190/2022, que substituiu o Convênio 93/2015 após a ADI 5469 do STF).

POST https://areacliente.centralfiscal.com.br/v1/tributario/icms/difal

Corpo da requisição

CampoTipoObrigatórioObservação
uf_origemstringSim 
uf_destinostringSim 
valor_operacaonumberSim 
aliquota_interna_destinonumberNãoSe omitido, o motor tenta usar a alíquota geral curada da UF de destino -- só funciona pras UFs já curadas; nas demais, omitir retorna 400 pedindo que você informe. Não existe fonte federal única pras 27 alíquotas internas, então esta API nunca inventa uma.
percentual_fcp_destinonumberNão 
produto_importado_ou_conteudo_importacao_maior_40booleanNão 
crt_emitentestringNão, mas recomendadoCRT do emitente ("1"/"2" = Simples Nacional).
destinatario_contribuintebooleanNãotrue = destinatário é contribuinte do ICMS; false = consumidor final não contribuinte.
⚠️
Exceção do STF (ADI 5464): se o emitente é optante do Simples Nacional (crt_emitente "1" ou "2") e o destinatário é consumidor final não contribuinte (destinatario_contribuinte: false), o DIFAL correto é zero -- o STF suspendeu essa cobrança na ADI 5464 (cautelar, fev/2016, ainda vigente) e o Convênio ICMS 236/2021 manteve a exclusão do Simples Nacional dessa hipótese. Não se aplica à antecipação/DIFAL na compra por optante do Simples para uso/consumo (LC 123/2006, art. 13, §1º, XIII), que segue as regras normais. Sem informar crt_emitente/destinatario_contribuinte, o motor não sabe aplicar essa exceção e pode calcular um valor que não é devido.
curl -X POST https://areacliente.centralfiscal.com.br/v1/tributario/icms/difal \
  -H "Authorization: Bearer cf_live_51JqK..." \
  -H "Content-Type: application/json" \
  -d '{
    "uf_origem": "SP",
    "uf_destino": "BA",
    "valor_operacao": 1000,
    "aliquota_interna_destino": 18,
    "percentual_fcp_destino": 2,
    "produto_importado_ou_conteudo_importacao_maior_40": false
  }'

Resposta

{
  "aliquotaInterestadual": 12,
  "aliquotaInternaDestino": 18,
  "aliquotaInternaDestinoOrigem": "informada_pelo_chamador",
  "aliquotaInternaDestinoObservacao": null,
  "aliquotaDifal": 6,
  "valorDifal": 60,
  "valorFcpDestino": 20,
  "fundamentacao": "..."
}

aliquotaInternaDestinoOrigem indica se a alíquota interna veio de você (informada_pelo_chamador) ou de uma curadoria interna (curada (...), com a base legal). Se vier curada, aliquotaInternaDestinoObservacao pode trazer ressalvas.

Usando o resultado na emissão. Este endpoint só calcula -- pra colocar o DIFAL na NF-e de verdade, informe os valores calculados em itens[].tributacao.icms_uf_dest na emissão de NF-e. O motor confere a aritmética contra a mesma fonte oficial usada aqui e avisa se algo não bater.