Emissão de DFes na API Rest
A Emissão de DF-e (Documento Fiscal Eletrônico) através da API Rest será permitido para o usuário que já possuir o x-auth-token. No artigo Autenticação na API Rest damos mais detalhes sobre o x-auth-token. Existem alguns Endpoints para o serviço de Emissão de Documentos Fiscais e para cada um, há uma URL específica.
Autorização / Envio / Emissão de DFe (POST)
A emissão de um DFe através da API Rest pode ser feita utilizando alguns Layout específicos, como XML Oobj (padrão), XML Sefaz, Json, TXT Abrasf ou TXT-SP.
A URL é construída da seguinte forma:
http:// ou https:// + /endereço da API Rest + /api/empresas/{empresa}/docs/{ambiente}/{codModelo}?layout={layoutDFe}
Os valores sublinhados devem ser substituídos pelos valores correspondentes abaixo:
- {empresa} : CNPJ da Empresa
- {ambiente} : hom ou prod
- {codModelo} : 55, 57, 58, 59, 65 ou 99 (respectivamente, NFe, CTe, MDFe, CFe (SAT), NFCe ou NFSe)
- {layoutDFe} : oobj, sefaz, txt abrasf, json ou txtsp.
É possível enviar a requisição de emissão de documento sem o layout. Mas, caso não informado, será assumido o valor oobj.
Exemplo com o parâmetro opcional layoutDFe preenchido:
http://rest.oobj-dfe.com.br/api/empresas/07385111000102/docs/prod/55?layout=oobj
Exemplo sem o parâmetro opcional layoutDFe preenchido:
http://rest.oobj-dfe.com.br/api/empresas/07385111000102/docs/prod/55
Exemplo de Retorno após envio da requisição de emissão:
{ "mensagem": "/api/empresas/07385111000102/docs/hom/55/2021/503/000690290", "tempoMedioMs": 1000, "timestamp": 1629117845034 }
Obter Retorno de um Documento Fiscal
Após a emissão de um DFe, o usuário deve obter o retorno de processamento do mesmo. Esse retorno poderá ser de Autorização, Rejeição ou Arquivo Inválido. Para isso há dois Endpoints, um que permite obter o o retorno através da série e número e outro por chave de acesso:
1. Obter retorno de um DFe através da série e número (GET)
Nesse Endpoint, o retorno do DFe é obtido através da série e número do DFe emitido.
A URL é construída da seguinte forma:
http:// ou https:// + /endereço da API Rest + /api/empresas/{empresa}/docs/{ambiente}/{codModelo}/{ano}/{serie}/{numero}
Os valores sublinhados devem ser substituídos pelos valores correspondentes:
- {empresa} : CNPJ da Empresa
- {ambiente} : hom ou prod
- {codModelo} : 55, 57, 58, 59, 65 ou 99 (respectivamente, NFe, CTe, MDFe, CFe (SAT), NFCe ou NFSe)
- {ano} : Ano de Emissão no formado AAAA
- {serie} : Série do DFe
- {numero} : Número do DFe
http://rest.oobj-dfe.com.br/api/empresas/07385111000102/docs/prod/55/2018/502/186067
2. Obter o retorno de um DFe através da chave de acesso (GET)
Nesse Endpoint, o retorno do DFe é obtido através da Chave de Acesso:
A URL é construída da seguinte forma:
http:// ou https:// + /endereço da API Rest + /api/empresas/{empresa}/docs/{ambiente}/{codModelo}/{chaveAcesso}
- {empresa} : CNPJ da Empresa
- {ambiente} : hom ou prod
- {codModelo} : 55, 57, 58, 59, 65 ou 99 (respectivamente, NFe, CTe, MDFe, CFe (SAT), NFCe ou NFSe)
- {chaveAcesso} : Chave de Acesso do DFe
http://rest.oobj-dfe.com.br/api/empresas/07385111000102/docs/prod/55/43180307385111000102555020001860671000000000
No seu Sistema, ao integrar com a API Rest, o desenvolvedor poderá escolher qual componente para obter o retorno irá implementar ou se usará os dois.
Em ambas as requisições para obter o status do documento emitido, o retorno será como o exemplo abaixo:
{ "idLote": 690290, "timestamp": 1629115147000, "conteudo": "Conteúdo do XML", "status": "Rejeitada", "chaveAcesso": "43210807385111000102555030006902901414699288", "cStat": 866, "xMotivo": "Rejeicao: Ausencia de troco quando o valor dos pagamentos informados for maior que o total da nota", "codigoUF": 43, "numeroProtocolo": null, "dataRecebimento": 1629115147000, "permiteImpressao": false, "tipoEmissao": { "codigo": 1, "descricao": "Normal" } }
Download de PDF (Documento Auxiliar)
Se o DFe for autorizado ou emitido em Contingência, após realizar a Emissão poderá obter o Documento Auxiliar do DFe em formado PDF. E assim como para Retornar um DFe, há dois Endpoints, um que permite obter o PDF através da série e número e outro por chave de acesso:
1. Download de PDF de um DFe através da série e número (GET)
Nesse Endpoint, o PDF (Documento Auxiliar) do DFe é obtido através da série e número do DFe emitido.
A URL é construída da seguinte forma:
http:// ou https:// + /endereço da API Rest + /api/empresas/{empresa}/docs/{ambiente}/{codModelo}/{ano}/{serie}/{numero}.pdf
Os valores sublinhados devem ser substituídos pelos valores correspondentes:
- {empresa} : CNPJ da Empresa
- {ambiente} : hom ou prod
- {codModelo} : 55, 57, 58, 59, 65 ou 99 (respectivamente, NFe, CTe, MDFe, CFe (SAT), NFCe ou NFSe)
- {ano} : Ano de Emissão no formado AAAA
- {serie} : Série do DFe
- {numero} : Número do DFe
http://rest.oobj-dfe.com.br/api/empresas/07385111000102/docs/prod/55/2018/502/186067.pdf
Observe que a URL é semelhante a URL do Endpoint para Obter o retorno de um DFe através da série e número, sendo necessário adicionar apenas o termo .pdf no final.
2. Download de PDF de um DFe através da chave de acesso (GET)
Nesse Endpoint, o PDF (Documento Auxiliar) do DFe é obtido através da Chave de Acesso:
A URL é construída da seguinte forma:
http:// ou https:// + /endereço da API Rest + /api/empresas/{empresa}/docs/{ambiente}/{codModelo}/{chaveAcesso}.pdf
- {empresa} : CNPJ da Empresa
- {ambiente} : hom ou prod
- {codModelo} : 55, 57, 58, 59, 65 ou 99 (respectivamente, NFe, CTe, MDFe, CFe (SAT), NFCe ou NFSe)
- {chaveAcesso} : Chave de Acesso do DFe
http://rest.oobj-dfe.com.br/api/empresas/07385111000102/docs/prod/55/43180307385111000102555020001860671000000000.pdf
No seu Sistema, ao integrar com a API Rest, o desenvolvedor poderá escolher qual componente para obter o Documento Auxiliar irá implementar ou se usará os dois.
Abaixo, exemplo de como é gerado o PDF através do postman utilizando o ano, numero e série do documento:
O XML Proc é o Documento Fiscal com Assinatura Digital, que é idêntico ao armazenado na Sefaz e que deve ser guardado pelo contribuinte por no mínimo 5 anos.
Nesse Endpoint, é possível obter o XML Proc de um DFe Emitido ou Recebido. Sempre que esse serviço for utilizado será retornado os DFes emitidos ou recebidos pela empresa informada na URL de forma paginada com 20 elementos (XML Proc), ou seja, ao realizar o primeiro acesso a esse Endpoint, você poderá informar a página que deseja consultar na URL, ou poderá deixar em branco, assim virá a primeira página.
Na resposta de sua consulta, será informado no final a quantidade de itens que há na página, e qual o Total de itens que pode ser obtidos em todas as outras páginas. Dessa forma, basta realizar uma iteração, passando por cada página até que não hajam mais elementos, caso queira obter todos os XML's Proc da sua empresa.
A URL é construída da seguinte forma:
http:// ou https:// + /endereço da API Rest + /api/empresas/{empresa}/docs/{ambiente}/{codModelo}/?pagina={numeroPagina}&comXML={true ou false}
- {empresa} : CNPJ da Empresa
- {ambiente} : hom ou prod
- {codModelo} : 55, 57, 58, 59, 65 ou 99 (respectivamente, NFe, CTe, MDFe, CFe (SAT), NFCe ou NFSe)
- {numeroPagina} : numero da pagina (Opcional. Se não informado, o valor 1 é assumido como padrão)
- {comXml} : true ou false (Opcional. Se não informado, o valor false é assumido como padrão)
Exemplo com os parâmetros opcionais preenchidos:
http://rest.oobj-dfe.com.br/api/empresas/07385111000102/docs/hom/55/listar/2021-08-01/2021-08-31/emitente?comXml=true
Exemplo sem os parâmetros opcionais preenchidos:
http://rest.oobj-dfe.com.br/api/empresas/07385111000102/docs/hom/55/2021-08-01/2021-08-31/emitente
Abaixo exemplo de retorno da requisição sem as informações do XML. Repare que no fim é informado a quantidade de documentos listados na consulta, o número de páginas e a quantidade por páginas:
{
"registros": [
{
"idLote": 690080,
"timestamp": 1628768264000,
"conteudo": null,
"status": "Autorizada",
"chaveAcesso": "43210807385111000102555030006900801942526750",
"cStat": 100,
"xMotivo": "Autorizado o uso da NF-e",
"codigoUF": 43,
"numeroProtocolo": "143210000564607",
"dataRecebimento": 1628768264000,
"permiteImpressao": true,
"tipoEmissao": {
"codigo": 1,
"descricao": "Normal"
}
},
{
"idLote": 690290,
"timestamp": 1629115147000,
"conteudo": null,
"status": "Autorizada",
"chaveAcesso": "43210807385111000102555030006902901414699288",
"cStat": 100,
"xMotivo": "Autorizado o uso da NF-e",
"codigoUF": 43,
"numeroProtocolo": "143210000570609",
"dataRecebimento": 1629115147000,
"permiteImpressao": true,
"tipoEmissao": {
"codigo": 1,
"descricao": "Normal"
}
},
{
"idLote": 690373,
"timestamp": 1629203958000,
"conteudo": null,
"status": "Autorizada",
"chaveAcesso": "43210807385111000102555030006903731678924922",
"cStat": 100,
"xMotivo": "Autorizado o uso da NF-e",
"codigoUF": 43,
"numeroProtocolo": "143210000572778",
"dataRecebimento": 1629203958000,
"permiteImpressao": true,
"tipoEmissao": {
"codigo": 1,
"descricao": "Normal"
}
}
],
"pagina": 1,
"numeroTotal": 3,
"numeroElementos": 3,
"maximoPorPagina": 20
}
Para realizar testes com a API Rest, e ter mais detalhes sobre a Emissão de Documentos Fiscais, acesse a documentação completa através do link: http://rest-teste.oobj.com.br/swagger-ui.html#/