{"id":273,"date":"2016-01-15T15:57:01","date_gmt":"2016-01-15T18:57:01","guid":{"rendered":"http:\/\/www.l2maker.com.br\/documentacao\/?p=273"},"modified":"2024-05-20T15:56:03","modified_gmt":"2024-05-20T18:56:03","slug":"gerando-um-nf-e-com-a-api-da-sefaz","status":"publish","type":"post","link":"https:\/\/www.l2maker.com.br\/documentacao\/2016\/01\/gerando-um-nf-e-com-a-api-da-sefaz\/","title":{"rendered":"Gerando uma NF-e\/NFC-e com a API da SEFAZ"},"content":{"rendered":"\n<p>O processo resumido de gera\u00e7\u00e3o de uma nota fiscal usando nossa API \u00e9 descrito abaixo. D\u00favidas e refer\u00eancias devem ser consultadas no material oficial disponibilizado pela SEFAZ,&nbsp; em especial o manual oficial da SEFAZ, Notas t\u00e9cnicas e os XSDs disponibilizados no site: <a href=\"http:\/\/www.nfe.fazenda.gov.br\/portal\/principal.aspx\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.nfe.fazenda.gov.br\/portal\/principal.aspx<\/a> .<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Parte 1 &#8211; Gerando o XML<\/h1>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.l2maker.com.br\/documentacao\/2016\/11\/criando-um-conector-para-comunicacao-atraves-da-api-da-sefaz\/\">Crie um conector<\/a>:\n<ol class=\"wp-block-list\">\n<li>Caso o certifcado n\u00e3o tenha explicito o CNPJ e Nome do emissor utilize a fun\u00e7\u00e3o:&nbsp;SEFAZ &#8211; Definir dados do emissor(&#8230;).<br>\n<h3>Dados b\u00e1sicos<\/h3>\n<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>Crie uma nova nota fiscal para o lote atrav\u00e9s da fun\u00e7\u00e3o &#8220;<strong>SEFAZ NF-e &#8211; Criar Nota Fiscal<\/strong>&#8220;, passando os seguintes par\u00e2metros:\n<ol class=\"wp-block-list\">\n<li>Conector;<\/li>\n\n\n\n<li>Data de Emiss\u00e3o (Data)<\/li>\n\n\n\n<li>Modelo (Letras) &#8211; &#8220;55&#8221; para NF-e ou &#8220;65&#8221; para NFC-e;<\/li>\n\n\n\n<li>S\u00e9rie (Letras) &#8211; S\u00e9rie do documento;<\/li>\n\n\n\n<li>N\u00ba da NF-e (Letras) &#8211; N\u00famero sequencial da nota, controlado pelo emissor;<\/li>\n\n\n\n<li>Tipo de Emiss\u00e3o (Inteiro);<\/li>\n\n\n\n<li>C\u00f3digo num\u00e9rico que comp\u00f5e a Chave de Acesso (Letras) cNF &#8211; Identificador \u00fanico da nota no banco de dados do cliente;<\/li>\n\n\n\n<li>Vers\u00e3o (Letras) do XML da NF-e, EX: &#8220;4.00&#8221;, &#8220;3.10&#8221;.<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>Utilize a fun\u00e7\u00e3o &#8220;<strong>SEFAZ NF-e &#8211; Adicionar Elemento ao XML<\/strong>&#8221; para adicionar os dados do XML do documento. A fun\u00e7\u00e3o recebe como par\u00e2metro os seguintes itens:\n<ul class=\"wp-block-list\">\n<li> O retorno da fun\u00e7\u00e3o  &#8220;<strong>SEFAZ NF-e &#8211; Criar Nota Fiscal<\/strong>&#8220;;<\/li>\n\n\n\n<li>No segundo par\u00e2metro ela recebe o caminho da tag a ser adicionada;<\/li>\n\n\n\n<li>No terceiro o valor a ser adicionado;<\/li>\n\n\n\n<li>E por \u00faltimo, como OPCIONAL a m\u00e1scara de formata\u00e7\u00e3o, caso n\u00e3o deseja que a fun\u00e7\u00e3o <strong>N\u00c3O formate<\/strong> o valor, adicione a constante &#8220;<strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">TString<\/mark><\/strong>&#8221; nesse par\u00e2metro. Neste caso, ser\u00e1 adicionado a tag com o texto exato passado no terceiro par\u00e2metro, evitando inclusive que valores ZERADOS sejam suprimidos.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Adicionar os dados do emitente (&#8220;infNFe\/ide\/&#8221;) usando a fun\u00e7\u00e3o &#8220;<strong>SEFAZ NF-e &#8211; Adicionar Elemento ao XML<\/strong>&#8220;;<\/li>\n\n\n\n<li>Algumas UFs exigem a rela\u00e7\u00e3o de pessoas (f\u00edsicas ou jur\u00eddicas) autorizadas a acessar a nota, para tal usar as tags abaixo para preencher esse item:<br> <ul><li><p>infNFe\/autXML\/CNPJ[<span style=\"color: #ff0000;\">x<\/span>]<span style=\"color: initial;\"> <\/span><\/p><\/li><li><p>infNFe\/autXML\/CPF[<span style=\"color: #ff0000;\">x<\/span>]<\/p><\/li> <\/ul> <p>Se n\u00e3o informada voc\u00ea receber\u00e1 uma mensagem de erro: Rejei\u00e7\u00e3o 486: N\u00e3o informado o Grupo de Autoriza\u00e7\u00e3o para UF que exige a identifica\u00e7\u00e3o do Escrit\u00f3rio de Contabilidade na Nota Fiscal<\/p> <\/li>\n\n\n\n<li> Se for uma nota de devolu\u00e7\u00e3o informe a NF-e referenciada usando as tags:<div class=\"line number19 index18 alt2\"><code class=\"xml keyword\"> \"infNFe\/ide\/NFref\/<\/code><code class=\"xml plain\"><\/code><code class=\"xml plain\"><\/code><code class=\"xml keyword\">refNFe[<span style=\"color: #ff0000;\">x<\/span>]\";<\/code><\/div> <\/li>\n\n\n\n<li>Adicione os dados do destinat\u00e1rio (&#8220;infNFe\/dest\/&#8221;);<br>\n<h3>Produtos\/Servi\u00e7os<\/h3>\n<\/li>\n\n\n\n<li>Utilizando a mesma fun\u00e7\u00e3o &#8220;<strong>SEFAZ NF-e &#8211; Adicionar Elemento ao XML<\/strong>&#8220;, adicione os CNPJs ou CPFs autorizador a baixar o XML usando a tags de &#8220;infNFe\/autXML\/CNPJ[<span style=\"color: #ff0000;\">x<\/span>]&#8221; ou &#8220;infNFe\/autXML\/CPF[<span style=\"color: #ff0000;\">x<\/span>]&#8221;, passando o n\u00famero no lugar do <span style=\"color: #ff0000;\">x<span style=\"color: #000000;\"> (1, 2, 3, &#8230;). Importante, esta tag \u00e9 obrigat\u00f3ria em algumas UFs<\/span><\/span>:<\/li>\n\n\n\n<li>Adicionar itens (produtos ou servi\u00e7os) usando a mesma fun\u00e7\u00e3o de definit tag passando o indice do item, &#8216;infNFe\/det[&#8220;@nItem=1&#8221;];&#8217;.<\/li>\n\n\n\n<li>Definindo o ICMS:\n<ol>\n<li>Observe o ICMS40&nbsp;(e outros na mesma situa\u00e7\u00e3o), o nome da tag n\u00e3o muda para as varia\u00e7\u00f5es 40, 41, 50 e 51, a tag continua se chamando &#8220;ICMS40&#8221; e o detalhamento \u00e9 feito no &#8220;CST&#8221;.<\/li>\n<li>Dica: A tag &#8220;infNFe\/det<strong>[<span style=\"color: #ff0000;\">X<\/span>]<\/strong>\/imposto\/ICMSUFDest\/pICMSInter&#8221; recebe constantes pr\u00e9-definidas. &#8220;4.00&#8221;, &#8220;7.00&#8221; e &#8220;12.00&#8221;, e n\u00e3o est\u00e1 definida como n\u00famero e sim como letras (&#8216;string&#8217;) nos XSDs da SEFAZ. Assim, o valor j\u00e1 deve vir formatado com 2 decimais, pois n\u00e3o ser\u00e1 feita nenhuma formata\u00e7\u00e3o autom\u00e1tica neste valor.<br>\n<\/li>\n<\/ol>\n<h3>Totais<\/h3>\n<\/li>\n\n\n\n<li>Dados de cobran\u00e7a:\n<ul class=\"wp-block-list\">\n<li>infNFe\/cobr\/dup<strong>[<span style=\"color: #ff0000;\">1<\/span>]<\/strong>\/nDup<\/li>\n\n\n\n<li>infNFe\/cobr\/dup<strong>[<span style=\"color: #ff0000;\">1<\/span>]<\/strong>\/dVenc<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Adicione os detalhes de pagamento. Para adicionar mais de uma tag indique o indice usando colchetes como no exemplo a seguir:\n<ul class=\"wp-block-list\">\n<li>Vers\u00e3o 4.00:\n<ul class=\"wp-block-list\">\n<li>infNFe\/pag\/detPag<strong>[<span style=\"color: #ff0000;\">1<\/span>]<\/strong>\/tPag<\/li>\n\n\n\n<li>infNFe\/pag\/detPag<strong>[<span style=\"color: #ff0000;\">1<\/span>]<\/strong>\/vPag<\/li>\n\n\n\n<li>infNFe\/pag\/detPag<strong>[<span style=\"color: #ff0000;\">2<\/span>]<\/strong>\/tPag<\/li>\n\n\n\n<li>infNFe\/pag\/detPag<strong>[<span style=\"color: #ff0000;\">2<\/span>]<\/strong>\/vPag<\/li>\n\n\n\n<li>&nbsp;<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Vers\u00e3o 3.10:\n<ul class=\"wp-block-list\">\n<li>infNFe\/pag<strong>[<span style=\"color: #ff0000;\">1<\/span>]<\/strong>\/tPag<\/li>\n\n\n\n<li>infNFe\/pag<strong>[<span style=\"color: #ff0000;\">1<\/span>]<\/strong>\/vPag<\/li>\n\n\n\n<li>infNFe\/pag<strong>[<span style=\"color: #ff0000;\">2<\/span>]<\/strong>\/tPag<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Montando o lote e assinando<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ap\u00f3s informar&nbsp;todos&nbsp;os dados utilize a fun\u00e7\u00e3o &#8220;<strong>SEFAZ NF-e &#8211; Montar Lote<\/strong>&#8221; para gerar o XML:\n<ol class=\"wp-block-list\">\n<li>Conector (Variante) &#8211; <a href=\"https:\/\/www.l2maker.com.br\/documentacao\/2016\/11\/criando-um-conector-para-comunicacao-atraves-da-api-da-sefaz\/\">Veja como criar um conector aqui<\/a>;<\/li>\n\n\n\n<li>Vers\u00e3o: Vers\u00e3o do lote &#8220;4.00&#8221;, &#8220;3.10&#8221;;<\/li>\n\n\n\n<li>ID do lote: Identificador \u00fanico, incremental do lote;<\/li>\n\n\n\n<li>Sincrono &#8211; Importante, nem todas as UFs disponibilizam esse servi\u00e7o, caso n\u00e3o o tenha, informe falso, outras exigem que seja verdadeiro (true), quando houver apenas uma nota no lote;<\/li>\n\n\n\n<li>Nota fiscal (Variante) &#8211; Uma \u00fanica, ou uma lista de NFs para serem emitidas. <\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>Ao final assine o XML, chamando a fun\u00e7\u00e3o &#8220;<strong>SEFAZ &#8211; Assinar XML<\/strong>&#8220;. e passando os seguintes par\u00e2metros:\n<ol class=\"wp-block-list\">\n<li>Conector (Variante);<\/li>\n\n\n\n<li>XML Original &#8211; (Letras) Texto do XML gerado;<\/li>\n\n\n\n<li>Nome da tag: Informar a constante Letras:&nbsp;&#8220;infNFe&#8221;. <\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>Obter o retorno da fun\u00e7\u00e3o com o XML assinado e gravar em arquivo ou no banco usando as fun\u00e7\u00f5es &nbsp;nativas do Maker:\n<ol class=\"wp-block-list\">\n<li>DICA: Para gravar no banco utilize um campo de texto longo (TEXT, CLOB) com o mesmo charset do XML (UTF-8) ou BLOB (Bytea, VARBINARY, Image, &#8230;); <\/li>\n<\/ol>\n<\/li>\n<\/ol>\n\n\n\n<h1 class=\"wp-block-heading\">Parte 2 &#8211; Transmitindo o XML<\/h1>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ap\u00f3s montar todo o XML &nbsp;de um lote com a Nota Fiscal desejada precisamos envia-la para SEFAZ, para isso se utiliza a fun\u00e7\u00e3o &#8220;<strong>SEFAZ NF-e &#8211; Obter Autoriza\u00e7\u00e3o da SEFAZ<\/strong>&#8220;;<\/li>\n\n\n\n<li>Por fim, grave a resposta em XML&nbsp;da SEFAZ. Ela ser\u00e1 usada na consulta da NF-e;<\/li>\n\n\n\n<li>Obter o XML retornado&nbsp;no envio da NF-e verificar o seu conte\u00fado;<\/li>\n\n\n\n<li>Usar a fun\u00e7\u00e3o &#8220;<strong>SEFAZ &#8211; Processar XML de Retorno<\/strong>&#8221; para verificar se retornou um &#8220;nRec&#8221; para consulta posterior, ou um erro a ser tratado;\n<ul class=\"wp-block-list\">\n<li>Esta fun\u00e7\u00e3o trabalha de forma an\u00e1loga \u00e0 de montagem de XML, assim, as tags s\u00e3o reduzidas a uma forma de estrututra de pastas, de acordo com a estrtutura do XML, assim, para pegr o nRec por exemplo se passa o caminho completo: &#8220;retEnviNFe\/infRec\/nRec&#8221;;<\/li>\n\n\n\n<li>DICA: Utilize o depurador de fluxos do Maker para ver exatamente os dados retornados por essa fun\u00e7\u00e3o.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h1 class=\"wp-block-heading\">Parte 3 &#8211; Consultando a situa\u00e7\u00e3o do lote<\/h1>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ap\u00f3s obter o retorno da autorizadora voc\u00ea ter\u00e1 o n\u00famero do recibo de entrega (nRec) dentro do XML retornado;<\/li>\n\n\n\n<li>Para extrair o nRec do XML voc\u00ea pode utilizar a fun\u00e7\u00e3o &#8220;<strong>SEFAZ &#8211; Processar XML de Retorno<\/strong>&#8221; com o XML retornado no envio do lote;<\/li>\n\n\n\n<li>Utilize o nRec para gerar o XML de consulta da autoria\u00e7\u00e3o, passando-o como o segundo par\u00e2metro da fun\u00e7\u00e3o &#8220;<strong>SEFAZ&nbsp;&#8211;&nbsp;NF-e &#8211; Consulta Autoriza\u00e7\u00e3o Montar XML(transporte, nRec)&#8221;<\/strong>, o primeiro par\u00e2metro ser\u00e1 um conector criado com os mesmos dados do envio;<\/li>\n\n\n\n<li>Depois de montado, use a fun\u00e7\u00e3o <strong>&#8220;SEFAZ NF-e &#8211; Consultar Autoriza\u00e7\u00e3o&#8221;<\/strong> para enviar a consulta da situa\u00e7\u00e3o do lote para o servidor da SEFAZ, passando o Conector e o XML de consulta;<\/li>\n\n\n\n<li>A resposta ir\u00e1 indicar a situa\u00e7\u00e3o da NF-e, use a fun\u00e7\u00e3o &#8220;<strong>SEFAZ &#8211; Processar XML de Retorno<\/strong>&#8221; para transformar o XML em um mapa;<\/li>\n\n\n\n<li>Leia o item &#8220;retConsReciNFe\/cStat&#8221; para saber a situa\u00e7\u00e3o do lote:\n<ol class=\"wp-block-list\">\n<li>105 &#8211; Em processamento, aguarde e tente novamente;<\/li>\n\n\n\n<li>104 &#8211; Processado,&nbsp;continue ou caso contr\u00e1rio houve um erro.<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>Ap\u00f3s o fim do processamento (cStat = 104), leia o item &#8220;retConsReciNFe\/protNFe\/infProt\/cStat&#8221; para saber a situa\u00e7\u00e3o do protocolo:\n<ol class=\"wp-block-list\">\n<li>Caso a situa\u00e7\u00e3o seja &#8220;100&#8221; o lote foi aprovado, caso contr\u00e1rio houve um erro;<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>Em caso de erro, leia o item &#8220;retConsReciNFe\/protNFe\/infProt\/xMotivo&#8221; para obter uma descri\u00e7\u00e3o do erro.<\/li>\n\n\n\n<li>Em caso de lote aprovado (infProt\/cStat = 100) salve o XML completo, pois ele cont\u00e9m os dados da autoriza\u00e7\u00e3o que ser\u00e3o utilizado na montagem do XML de distribui\u00e7\u00e3o.<\/li>\n<\/ol>\n\n\n\n<h1 class=\"wp-block-heading\">Parte 4 &#8211; XML de distribui\u00e7\u00e3o<\/h1>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Para montar o XML de distribui\u00e7\u00e3o ser\u00e1 utilizada a fun\u00e7\u00e3o &#8220;<strong>SEFAZ &#8211; Montar XML de distribui\u00e7\u00e3o<\/strong>&#8220;, os par\u00e2metros de entrada s\u00e3o:\n<ol class=\"wp-block-list\">\n<li>O XML do lote enviado;<\/li>\n\n\n\n<li>O XML retornado na consulta da situa\u00e7\u00e3o do lote;<\/li>\n\n\n\n<li>A&nbsp;chave da NF-e desejada, quando o lote cont\u00e9m mais de uma NF-e se&nbsp;deixar em branco ir\u00e1 pegar a primeira;<\/li>\n\n\n\n<li>A fun\u00e7\u00e3o ir\u00e1 retornar o XML de distribui\u00e7\u00e3o que pode ser usado para enviar ao cliente e\/ou gerar a DANFE.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n\n\n\n<h1 class=\"wp-block-heading\">Parte 5 &#8211;&nbsp;Gerar DANFE<\/h1>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Para gerar a DANFE em PDF utilize a fun\u00e7\u00e3o &#8220;<strong>SEFAZ NF-e &#8211; Gerar DANFE&#8221;<\/strong>, passando como par\u00e2metros:\n<ol class=\"wp-block-list\">\n<li>Caminho completo do arquivo XML de distribui\u00e7\u00e3o&nbsp;ou conte\u00fado do XML de distribui\u00e7\u00e3o&nbsp;(Letras);<\/li>\n\n\n\n<li>Caminho da logomarca a ser impressa (Letras), pode ser deixado em branco;<\/li>\n\n\n\n<li>cIdToken (Letras) &#8211; Usado na NFC-e apenas (Opcional);<\/li>\n\n\n\n<li>csc (Letras) &#8211; Usado na NFC-e apenas (Opcional).<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>DICA: Voc\u00ea pode obter o caminho relativo do PDF gerado atrav\u00e9s da seguinte sequencia:\n<ol class=\"wp-block-list\">\n<li>Remova o caminho absoluto&nbsp;do arquivo obtendo somente o nome;<\/li>\n\n\n\n<li>Adicione antes do nome do arquivo &#8220;tmp\/&#8221;;<\/li>\n\n\n\n<li>A URL final deve ficar &#8220;tmp\/nomeArquivo.pdf&#8221;;<\/li>\n\n\n\n<li>Use a fun\u00e7\u00e3o de abrir URL numa moldura, ou download para enviar para o cliente.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>O processo resumido de gera\u00e7\u00e3o de uma nota fiscal usando nossa API \u00e9 descrito abaixo. D\u00favidas e refer\u00eancias devem ser consultadas no material oficial disponibilizado pela SEFAZ,&nbsp; em especial o manual oficial da SEFAZ, Notas t\u00e9cnicas e os XSDs disponibilizados no site: http:\/\/www.nfe.fazenda.gov.br\/portal\/principal.aspx . Parte 1 &#8211; Gerando o XML Montando o lote e assinando [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[47],"tags":[9,10,11,84,49],"class_list":["post-273","post","type-post","status-publish","format-standard","hentry","category-documentacao","tag-nf-e","tag-nfc-e","tag-sefaz","tag-webservice","tag-xml"],"_links":{"self":[{"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/posts\/273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/comments?post=273"}],"version-history":[{"count":53,"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/posts\/273\/revisions"}],"predecessor-version":[{"id":3526,"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/posts\/273\/revisions\/3526"}],"wp:attachment":[{"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/media?parent=273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/categories?post=273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/tags?post=273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}