Documentação › Emissão de NF-e
Produtos e motor fiscal
Cadastro de produtos validado na tabela oficial e o cálculo dos tributos da NF-e com regra e fonte de cada valor.
Cadastro de produtos
POST /v1/produtos cadastra o produto da empresa com o seu código (SKU). A
validação acontece no cadastro, não na nota:
| Recusa | Tabela oficial |
|---|---|
ncm_inexistente, ncm_fora_de_vigencia |
Nomenclatura vigente do Siscomex (Resolução Gecex nº 926/2026) |
cest_inexistente, cest_incompativel_ncm |
Convênio ICMS 142/18, texto consolidado do CONFAZ |
gtin_invalido, gtin_digito_invalido, gtin_prefixo_invalido |
Regras GS1 de dígito verificador e prefixos reservados |
A homologação da SEFAZ chega a autorizar NCM inexistente; a produção recusa a nota. Por isso o cadastro confere antes. Cada tabela vem de fonte oficial, com a data da cópia e o SHA-256 do arquivo de origem.
O GTIN também é consultado no Cadastro Centralizado de GTIN da SEFAZ, com o
certificado da empresa: se a SEFAZ conhece o GTIN com outro NCM, o cadastro é
recusado com gtin_ncm_divergente. O que a SEFAZ devolveu fica em gtin_sefaz.
GTIN que a SEFAZ não conhece, ou consulta fora do ar, não impede o cadastro.
A nota guarda uma cópia do produto como ele estava na emissão: mudar o produto depois não muda nota emitida.
Perfil fiscal e aprovação
O perfil fiscal do produto diz o tratamento de ICMS (tributado,
base_reduzida, isento, nao_tributado, imune, st_retida, st_substituto), o de PIS/COFINS
(tributado, monofasico, aliquota_zero, outros) e o CST e a classificação do
IBS/CBS. O da empresa (PUT /v1/nfe/perfil-fiscal/{empresa_id}) diz o regime de
PIS/COFINS, se ela é contribuinte do IPI e, no Simples, a alíquota de crédito do
mês (CSOSN 101). Nada é calculado sem perfil aprovado por uma pessoa da empresa
ou do escritório: POST /v1/produtos/{codigo}/aprovacao-perfil e
POST /v1/nfe/perfil-fiscal/{empresa_id}/aprovacao gravam quem aprovou e quando.
Mudar um campo fiscal apaga a aprovação.
Sandbox com cadastro próprio. A chave sdr_test_ cadastra, altera e aprova
produtos e perfis num cadastro separado, só dela: nada do que ela grava aparece
para a chave de produção, e ela não vê nem muda o cadastro de produção. Assim dá
para testar o modo calcular inteiro sem tocar no que emite de verdade. O campo
ambiente do produto diz de qual cadastro ele é.
Termo de Acordo de atacadista (Bahia)
Para o atacadista credenciado no Decreto 7.799/2000, grave o credenciamento no
perfil da empresa (termo_acordo com número, item do Anexo Único e vigência) e
marque termo_acordo: true nos produtos alcançados. O motor aplica a redução de
41,176% da base (CST 20) só onde o decreto alcança: vigência do credenciamento,
saída interna para contribuinte inscrito na Bahia ou pessoa jurídica não
contribuinte (art. 1º e §3º), venda ou bonificação, mercadoria na alíquota geral
(art. 5º), sem ST (art. 4º), fora do papel higiênico (art. 2º-A). Fora disso, a
nota sai sem a redução e o motivo vem em ajustes (termo_acordo_nao_aplicado).
As condições de período (percentual de saídas para contribuintes, faturamento,
transferências) são do credenciamento: quem aprova o perfil declara que valem.
ICMS-ST
- Revenda com ST retida anteriormente (CST 60 / CSOSN 500): os campos de ST
retida saem das notas de compra que a Sudrel já captura, pelo vínculo do produto
com o item de compra (
POST /v1/produtos/{codigo}/vinculos-entrada, por GTIN, pelo código do fornecedor ou manual), das últimas aquisições e proporcionais à quantidade que sai (Convênio ICMS 142/18, cláusula décima quinta, §3º). Sem vínculo, mandest_retidono item; sem nenhum dos dois, a nota sai como você informar, com aviso emajustes. - Substituto na venda interna (
st_substituto): ICMS10 (ou ICMS70 com redução), MVA do Anexo 1 do RICMS/BA e alíquota interna. Venda a consumidor final não tem operação subsequente e sai como ICMS00. Item do Anexo 1 que pede conferência, com FECP ou com MVA ajustada fica fora da cobertura. - ST interestadual fica fora da cobertura.
7% para ME/EPP (Bahia)
Na venda interna do fabricante para ME ou EPP optante do Simples inscrita na
Bahia, a alíquota é 7% e o benefício vai como desconto expresso na nota (Lei
7.014/96, art. 16, I, "c", e §1º): o motor calcula o desconto, põe em vDesc e
explica em infAdProd. O porte do destinatário vem do que você informar em
destinatario.optante_simples; sem isso, da consulta de CNPJ, com a fonte em
ajustes (nfe_destinatario_porte_consulta_cnpj). O que você informa prevalece.
PIS/COFINS e o ICMS na base
O perfil da empresa tem exclui_icms_base_pis_cofins (padrão true, Tema 69 do
STF): a base do PIS/COFINS sai sem o ICMS destacado e, na revenda com ST, sem o
ICMS-ST retido. Com false, o ICMS fica na base, que é a escolha conservadora de
quem ainda não aplica a exclusão.
Operações
operacao resolve CFOP, finalidade e natureza: venda,
venda_consumidor_final, remessa (com subtipo: conserto, demonstracao,
industrializacao ou outras), transferencia, bonificacao e devolucao (com
chave_referenciada e subtipo comercializacao ou industrializacao).
O que o motor calcula
| Tributo | Cobertura |
|---|---|
| ICMS | A Sudrel ativa a regra da UF do emitente quando a empresa entra, em minutos e sem ação sua. A Bahia já vem com o conjunto completo, descrito aqui: operação interna, ou interestadual com destinatário contribuinte (12%, ou 4% para importados). Simples: CSOSN 101 (com o crédito do mês), 102, 103, 300 e 500 (com a ST retida das entradas). Regime normal: CST 00, 20 (reduções objetivas da base legal da BA e Termo de Acordo de atacadista), 40, 41, 60 (com a ST retida das entradas), 10 e 70 (ST do substituto na venda interna) e 7% para ME/EPP, com o FECP da BA. |
| IPI | Contribuinte do IPI, produção própria, alíquota da TIPI. No Simples, sem destaque. |
| PIS/COFINS | Regime cumulativo ou não cumulativo, base sem o ICMS destacado (ou com, pelo perfil da empresa) e sem o ICMS-ST retido; alíquota zero. No Simples, CST 49 sem destaque. |
| IBS/CBS | Regime normal, pela calculadora oficial da Receita. |
Nunca um valor chutado. O que o motor ainda não resolve responde 422
fora_de_cobertura, com a lista fora_de_cobertura (item, tributo e motivo), e a
nota pode seguir no modo informado, que atende todas as UFs. Quem precisa do cálculo
pela Sudrel nesse caso fala com o suporte: a regra entra em minutos. Exemplos: ST
interestadual, DIFAL, emitente de UF cuja regra a Sudrel ainda vai ativar, venda interna do fabricante para contribuinte cujo porte nem você nem
a consulta de CNPJ informaram (a Bahia tem 7% para ME/EPP), PIS/COFINS de
revenda com ICMS-ST sem o valor retido nas entradas e monofásico.
Se a calculadora oficial do IBS/CBS não responder, o fora_de_cobertura vem com
temporario: true e retentavel: true: tente de novo.
Modo conferir
A nota sai com os SEUS valores, e cada diferença volta em ajustes com
acao: "divergente" e a regra nfe_conferencia_divergencia. Com
recusar_divergencias: true no perfil da empresa, a nota com diferença é recusada
com 422 conferencia_divergente e a lista divergencias.
Rotas desta seção, com teste na página
- GET/v1/produtos · Lista os produtos
- POST/v1/produtos · Cadastra um produto
- GET/v1/produtos/{codigo} · Consulta um produto pelo código
- PATCH/v1/produtos/{codigo} · Altera um produto
- POST/v1/produtos/{codigo}/aprovacao-perfil · Aprova o perfil fiscal do produto
- GET/v1/produtos/{codigo}/vinculos-entrada · Lista os vínculos do produto com as compras
- POST/v1/produtos/{codigo}/vinculos-entrada · Vincula o produto às compras
- DELETE/v1/produtos/{codigo}/vinculos-entrada/{id} · Remove um vínculo
- GET/v1/nfe/perfil-fiscal/{empresa_id} · Perfil fiscal da empresa
- PUT/v1/nfe/perfil-fiscal/{empresa_id} · Grava o perfil fiscal da empresa
- POST/v1/nfe/perfil-fiscal/{empresa_id}/aprovacao · Aprova o perfil fiscal da empresa