1. NFC-e 4.0 está disponível no Fiscal Manager

A última revisão de leiaute foi feita em 2014. Atualmente o leiaute da NF-e está na versão “3.10” e esta Nota Técnica tem o objetivo de divulgar: Alterações necessárias para a migração da versão "3.10" para a versão “4.00” do leiaute da NF-e;

  • Alterações em regras de validação, principalmente aquelas vinculadas aos novos campos ou a novos controles, melhorando a qualidade da informação prestada pelas empresas e mantida pelas SEFAZ.

  • Definição do protocolo TLS 1.2 ou superior como padrão de comunicação.

  • Eliminação o uso de variáveis no SOAP Header (eliminada a "Área de Cabeçalho”) na requisição enviada para todos os Web Services previstos no Sistema NFE.

Mas o Partner que usa a Plataforma Fiscal Bematech através da APIOne, precisará se preocupar apenas em passar os novos campos, pois o restante, já fizemos para vocês.

1.1. Alterações Globais

  • Validação do GTIN;

  • Fundo de Combate a Pobreza (FCP);

  • Pagamento;

1.2. Alterações Específicas

  • Combustível;

  • Rastreabilidade de Produto;

  • Medicamentos;

2. Validação do GTIN

A nova versão traz a obrigatoriedade de preenchimento dos campos cEAN e cEANTrib(códigodebarras). Eles serão validados deacordo como Cadastro Centralizado de GTIN(CCG) mantido pela GS1 que controla o Cadastro Nacional de Produtos(CNP).

  • Caso o Produto não Possua Código de Berras deverá ser informado o valor SEM GTIN;

  • A SEFAZ irá recusar nos cEAN e cEANTrib valores que não estejam no CNP;

3. Fundo de Combate a Pobreza (FCP)

Tabela 1. Tabela de Correspondência
FCP ICMS ICMS ICMS ICMS ICMS ICMS ICMS ICMS ICMSSN ICMSSN ICMSSN ICMSSN ICMSSN

FCP

00

10

20

30

51

60

70

90

201

202

203

500

900

vBCFCP

X

X

X

X

X

pFCP

X

X

X

X

X

X

vFCP

X

X

X

X

X

X

vBCFCPST

X

X

X

X

X

X

X

X

pFCPST

X

X

X

X

X

X

X

X

vBCFCPST

X

X

X

X

X

X

X

X

pST

X

X

vBCFCPSTRet

X

X

pFCPSTRet

X

X

vFCPSTRet

X

X

4. Pagamento

O Grupo de Pagamento foi remanejado em dois novos campos:

Detalhamento da Forma de Pagamento (campo detPag), Valor do Troco (campo vTroco).

Com essas alterações o indicador da forma de pagamento (campo indPag) que estava no Grupo ide foi reposicionado na NFe4.0.

4.1. Detalhamento de Pagamento

  • Valor do Pagamento (campo vPag)

    • Valor pago para a determinada forma de pagamento.

  • Indicador da Forma do Pagamento(campoindPag)

    • Indica como a nota será paga. Poderá ser escolhida mais de uma forma:

00 = Pagamento à Vista
01 = Pagamento à Prazo

  • MeiodePagamento(campoindPag)

    • Indica por qual meio a nota será paga.

Poderá ser escolhida mais de um meio:
01=Dinheiro
02=Cheque
03=Cartão de Crédito
04=Cartão de Débito
05=Crédito Loja
10=Vale Alimentação
11=Vale Refeição
12=Vale Presente
13=Vale Combustível
15=Boleto Bancário
90=Sem Pagamento
99=Outros

Para as notas onde a finalidade é uma NFe de Ajuste ou a Devolução de uma NFe(campofinNFe=3 ou 4),a forma de pagamento deve serpreenchida como valor 90=SemPagamento. Nas demais finalidades, deve ser indicado como foi realizado o pagamento da nota.

  • Grupo de Cartões(campocard)

    • Detalhes do pagamento feito via cartão de crédito ou débito.

  • Tipo de Integração para pagamento (campo tpIntegra)

    • Qual o processo de pagamento com o sistema de automação da empresa: 1=Pagamento integrado com o sistema de automação da empresa (Ex.: equipamento TEF, Comércio Eletrônico);
      2=Pagamento não integrado com o sistema de automação da empresa (Ex.: equipamento POS);

  • CNPJ da Credenciadora de cartão (campo CNPJ)

  • Bandeira da operadora de cartão (campo tBand)
    01=Visa
    02=Mastercard
    03=American Express
    04=Sorocred
    05=DinersClub
    06=Elo
    07=Hipercard
    08=Aura
    09=Cabal
    99=Outros

  • Número de autorização da operação (campo cAut)

4.2. Valor do Troco

O Fiscal Manager exibirá o valor do Troco na Danfe, sempre que o campo vTroco estiver preenchido.

O valor do Troco deve ser informado quando a soma dos pagamentos vPag for maior que o valor da nota (vNF) .

5. Combustível

Para o ramo de Combustíveis, houve a criação de alguns novos campos para os percentuais de mistura do Gás Liquefeito de Petróleo -GLP(cProdANP=210203001). Os valores decimais podem variar de 0 a 1.

São eles:

  • Percentual do GLP derivado do petróleo no produto GLP (campo pGLP);

  • Percentual de Gás Natural Nacional –GLGNnpara o produto GLP (campo pGNn);

  • Percentual de Gás Natural Importado –GLGNipara o produto GLP (campo pGNi);

Com isso o Percentual de Gás Natural para o produto GLP (campo pMixGN) presente na versão 3.10 foi excluído. Além dos percentuais, foram adicionados os seguintes campos:

  • Descrição do produto conforme ANP (campo descANP);

  • Valor de partida(campo vPart) apenas para produto GLP (cProdANP=210203001).

Este campo deve ser informado por quilograma sem o ICMS.

Os demais campos do Grupo de Combustíveis líquidos foram mantidos.

6. Rastreabilidade de Produto

Na NFe 4.0 foi criado um novo grupo para permitir que os itens da nota sejam rastreados.
O foco é a rastreabilidade de qualquer produto sujeito a regulações sanitárias,casos de recolhimento/recall, além de defensivos agrícolas,produtos veterinários, odontológicos, medicamentos, bebidas, águas envasadas, embalagens, dentre outros casos.+

Com os novos campos é possível ter um controle de quando um produto foi fabricado, informação de quando irá vencer e a identificação de lote e quantidade.

Isso é feito a partir da indicação das seguintes informações:

  • Númerodelotedoproduto(camponLote);

  • Quantidadedeprodutonolote(campoqLote);

  • Datadefabricação/produção(campodFab);

  • Datadevalidade(campodVal);

  • CódigodeAgregação(campocAgreg)

Atenção! É obrigatório o preenchimento deste grupo no caso de medicamentos e produtos farmacêuticos, uma vez que os campos específicos da NFe3.10 para medicamento foram removidos.

7. Medicamentos

Para o ramo de Medicamentos,houve a criação de campo para informar o código de Produto da ANVISA(cProdANVISA).

Nele deve ser informado o número de registro dos medicamentos e matérias-primas farmacêuticas presentes na nota de acordo com a Câmara de Regulação do Mercado de Medicamento(CMED).

Outra alteração na NFe4.0 foi a exclusão dos campos específicos de lote para medicamentos.

Agora eles fazem parte do Grupo Rastreabilidade de Produto. Logo as empresas que preenchiam essas informações na NFe3.10 no grupo de medicamentos são obrigadas a continuar preenchendo as mesmas informações no grupo de rastreabilidade.

Agora o Grupo de Detalhamento de Medicamentos(campomed) possui apenas os campos:

  • Código de Produto da ANVISA(campo cProdANVISA);

  • Preço Máximo ao Consumidor(campovPMC)

8. Para quem utiliza VirtualECF

Para aqueles que utilizam VirtualECF foram inseridos as seguintes Funções que devem ser acionadas para cada item vendido conforme a necessidade.

8.1. Bematech_FI_AdicionaInfoFCP

Adicionar os novos valores de FCP na Nota Fiscal ao Consumidor Eletrônica. (Obrigatório)

int __stdcall Bematech_FI_AdicionaInfoFCP(char *itemIndex, char *valorBCFCP, char *aliquotaFCP, char *valorFCP, char *valorBCFCPST, char *aliquotaFCPST, char *valorFCPST, char *pST, char *valorBCFCPSTRet, char *aliquotaFCPSTRet, char *valorFCPSTRet);

 @param itemIndex
   Char pointer com o indice do produto. Tamanho máximo de 3 caracteres.
 @param valorBCFCP
Char pointer com o valor da Base de Cálculo do FCP. Numérico. Duas Casas Decimais. Tamanho máximo 15 caracteres.
 @param aliquotaFCP
Char pointer com o Percentual do Fundo de Combate à Pobreza (FCP). Numérico. Duas Casas Decimais. Tamanho máximo 4 caracteres.
 @param valorFCP
Char pointer com o Valor do Fundo de Combate à Pobreza (FCP). Duas Casas Decimais. Tamanho máximo 15 caracteres.
 @param valorBCFCPST
Char pointer com o Valor da Base de Cálculo do FCP retido por Substituição Tributária. Numérico. Duas Casas Decimais. Tamanho máximo 15 caracteres.
 @param aliquotaFCPST
Char pointer com o Percentual do FCP retido por Substituição Tributária. Numérico. Duas Casas Decimais. Tamanho máximo 4 caracteres.
 @param valorFCPST
Char pointer com o Valor do FCP retido por Substituição Tributária (em reais). Numérico. Duas Casas Decimais. Tamanho máximo 15 caracteres.
 @param valorBCFCPSTRet
Char pointer com o Valor da Base de Cálculo do FCP retido anteriormente por ST. Numérico. Duas Casas Decimais. Tamanho máximo 15 caracteres.
 @param aliquotaFCPSTRet
Char pointer com o Percentual do FCP retido anteriormente por Substituição Tributária. Numérico. Duas Casas Decimais. Tamanho máximo 4 caracteres.
 @param valorFCPSTRet
Char pointer com o Valor do FCP retido por Substituição Tributária. Duas Casas Decimais. Tamanho máximo 15 caracteres.
Os retornos da função são:
@return Inteiro com o status da função.
@retval (int)  1  - Ok.
@retval (int)  0  - Erro de comunicação.
@retval (int) -1  - Erro durante execução.
@retval (int) -2  - Parâmetro inválido.
@retval (int) -27 - Status da impressora diferente de 6,0,0,0 (ACK, ST1, ST2, ST3).

8.2. Bematech_FI_AdicionaInfoGrupoI

Adicionar informações do grupo Itens na Nota Fiscal ao Consumidor Eletrônica. (Obrigatório)

int __stdcall Bematech_FI_AdicionaInfoGrupoI(char *itemIndex, char *indEscala, char *CNPJFab, char *cBenef, char *cEANTrib, char *vFrete)

 @param indEscala
Char pointer com o Indicador de Escala Relevante. 1 caractere. Indicador de Produção em escala relevante,
conforme Cláusula 23 do Convenio ICMS 52/2017: S - Produzido em Escala Relevante; N – Produzido em Escala NÃO Relevante.
Nota: preenchimento obrigatório para produtos com NCM relacionado no Anexo XXVII do Convenio 52/2017
 @param CNPJFab
Char pointer com o CNPJ do Fabricante da Mercadoria. Numérico.
Quatro Casas Decimais. Tamanho 14 caracteres.
 @param cBenef
Char pointer com o Código de Benefício Fiscal na UF aplicado ao item. Tamanho máximo 10 caracteres.
 @param cEANTrib
Char pointer com o GTIN (Global Trade Item Number) da unidade tributável, antigo código EAN ou código de barras.
Tamanho máximo 14 caracteres.
 @param vFrete
Char pointer com o Valor do Frete cobrado do consumidor. Numérico. Duas Casas Decimais. Tamanho máximo 15 caracteres.

int __stdcall Bematech_FI_AdicionaInfoRastro(char *itemIndex, char *nLote, char *qLote, char *dFab, char *dVal, char *cAgreg)

8.3. Bematech_FI_AdicionaInfoRastro

Adicionar os novos valores de Rastro de item na Nota Fiscal ao Consumidor Eletrônica. (Condicionado ao tipo de Item)

int __stdcall Bematech_FI_AdicionaInfoRastro(char *itemIndex, char *nLote, char *qLote, char *dFab, char *dVal, char *cAgreg)

 @param itemIndex
   Char pointer com o indice do produto. Tamanho máximo de 3 caracteres.
 @param nLote
Char pointer com o valor do Número do Lote do produto. Tamanho máximo 20 caracteres.
 @param qLote
Char pointer com a Quantidade de produto no Lote. Numérico. Três Casas Decimais. Tamanho máximo 11 caracteres.
 @param dFab
Char pointer com a Data de fabricação/ Produção. 10 caracteres.  Formato: “AAAA-MM-DD”
 @param dVal
Char pointer com a Data de validade. 10 caracteres.  Formato: “AAAA-MM-DD”
 @param cAgreg
Char pointer com o Código de Agregação. Numérico. Tamanho máximo 20 caracteres.
Os retornos da função são:
@return Inteiro com o status da função.
@retval (int)  1  - Ok.
@retval (int)  0  - Erro de comunicação.
@retval (int) -1  - Erro durante execução.
@retval (int) -2  - Parâmetro inválido.
@retval (int) -27 - Status da impressora diferente de 6,0,0,0 (ACK, ST1, ST2, ST3).

8.4. Bematech_FI_AdicionaInfoCombustivel_LA03x

Adicionar informações de venda de Combustível (Campos LA03x) na Nota Fiscal ao Consumidor Eletrônica. (Condicionado ao tipo de Item)

int __stdcall Bematech_FI_AdicionaInfoCombustivel_LA03x(char *itemIndex, char *descANP, char *pGLP, char *pGNn, char *pGNi, char *vPart)

 @param itemIndex
   Char pointer com o indice do produto. Tamanho máximo de 3 caracteres.
 @param descANP
   Char pointer com Descrição do produto conforme ANP. Tamanho de 2 a 95 caracteres.
 @param pGLP
Char pointer com o Percentual do GLP derivado do petróleo no produto GLP (cProdANP=210203001). Numérico.
Três Casas Decimais. Tamanho máximo 7 caracteres.
 @param pGNn
Char pointer com o Percentual de Gás Natural Nacional – GLGNn para o produto GLP (cProdANP=210203001). Numérico.
Três Casas Decimais. Tamanho máximo 7 caracteres.
 @param pGNi
Char pointer com o Percentual de Gás Natural Importado – GLGNi para o produto GLP (cProdANP=210203001).  Numérico.
Três Casas Decimais. Tamanho máximo 7 caracteres.
 @param vPart
Char pointer com o Valor de partida (cProdANP=210203001). Numérico.
Três Casas Decimais. Tamanho máximo 15 caracteres.
Os retornos da função são:
@return Inteiro com o status da função.
@retval (int)  1  - Ok.
@retval (int)  0  - Erro de comunicação.
@retval (int) -1  - Erro durante execução.
@retval (int) -2  - Parâmetro inválido.
@retval (int) -27 - Status da impressora diferente de 6,0,0,0 (ACK, ST1, ST2, ST3).

8.5. Bematech_FI_AdicionaInfoTransporte

Adicionar informações do grupo Transporte (Condicionado ao tipo de Venda)

int __stdcall Bematech_FI_AdicionaInfoTransporte(char *modFrete, char *CNPJTransp, char *CPFTransp, char *NomeTransp, char *IETransp, char *EnderTransp, char *MunicTransp)

 @param modFrete
  Char pointer com o Código CEST.Numérico. Tamanho 1 caracter.
  0=Contratação do Frete por conta do Remetente (CIF); 1=Contratação do Frete por conta do Destinatário (FOB); 2=Contratação do Frete por conta de Terceiros; 3=Transporte Próprio por conta do Remetente; 4=Transporte Próprio por conta do Destinatário; 9=Sem Ocorrência de Transporte.
 @param CNPJTransp
Char pointer com o CNPJ da transportadora. Tamanho max 14 caracteres.
 @param CPFTransp
Char pointer com o CPF da transportadora. Tamanho max 29 caracteres.
 @param NomeTransp
Char pointer com o nome da transportadora. Tamanho max 30 caracteres.
 @param IETransp
Char pointer com a IE da transportadora. Tamanho max 20 caracteres.
 @EnderTransp
Char pointer com o endereço da transportadora. Tamanho max 80 caracteres.
 @MunicTransp
 Char pointer com o município da transportadora. Tamanho max 60 caracteres.
Os retornos da função são:
@return Inteiro com o status da função.
@retval (int)  1  - Ok.
@retval (int)  0  - Erro de comunicação.
@retval (int) -1  - Erro durante execução.
@retval (int) -2  - Parâmetro inválido.
@retval (int) -27 - Status da impressora diferente de 6,0,0,0 (ACK, ST1, ST2, ST3).

8.6. Bematech_FI_AdicionaInfoICMSUFDest

Adicionar informações do grupo ICMS para a UF Destino (Condicionado ao tipo de venda)

int __stdcall Bematech_FI_AdicionaInfoICMSUFDest(char *vBCUFDest, char *vBCFCPUFDest, char *pFCPUFDest, char *pICMSUFDest, char *pICMSInter, char *pICMSInterPart, char *vFCPUFDest, char *vICMSUFDest, char *vICMSUFRemet)

 @param vBCUFDest
   Char pointer com o Valor da BC do ICMS na UF de destino.Numérico. Três Casas Decimais. Tamanho máximo 15 caracteres.
 @param vBCFCPUFDest
Char pointer com o Valor da BC FCP na UF de destino. Numérico. Três Casas Decimais. Tamanho máximo 15 caracteres.
 @param pFCPUFDest
Char pointer com o Percentual do ICMS relativo ao Fundo de Combate à Pobreza (FCP) na UF de destino. Numérico.
Quatro Casas Decimais. Tamanho máximo 7 caracteres.
 @param pICMSUFDest
Char pointer com a Alíquota interna da UF de destino. Numérico.
Quatro Casas Decimais. Tamanho máximo 7 caracteres.
 @param pICMSInter
Char pointer com a Alíquota interestadual das UF envolvidas. Numérico.
Duas Casas Decimais. Tamanho máximo 4 caracteres.
 @param pICMSInterPart
Char pointer com o Percentual provisório de partilha do ICMS Interestadual. Numérico.
Quatro Casas Decimais. Tamanho máximo 7 caracteres.
 @param vFCPUFDest
Char pointer com o Valor do ICMS relativo ao Fundo de Combate à Pobreza (FCP) da UF de destino. Numérico.
Três Casas Decimais. Tamanho máximo 15 caracteres.
 @param vICMSUFDest
Char pointer com o Valor do ICMS Interestadual para a UF de destino. Numérico.
Três Casas Decimais. Tamanho máximo 15 caracteres.
 @param vICMSUFRemet
Char pointer com o Valor do ICMS Interestadual para a UF do remetente. Numérico.
Três Casas Decimais. Tamanho máximo 15 caracteres.
Os retornos da função são:
@return Inteiro com o status da função.
@retval (int)  1  - Ok.
@retval (int)  0  - Erro de comunicação.
@retval (int) -1  - Erro durante execução.
@retval (int) -2  - Parâmetro inválido.
@retval (int) -27 - Status da impressora diferente de 6,0,0,0 (ACK, ST1, ST2, ST3).