Envie o XML da NFS-e Nacional (ou DPS) via requisição HTTP POST e receba o documento DANFSe em PDF pronto para exibição ou download.
POST/api/danfe/render
Converte um arquivo XML de NFS-e em um documento PDF formato A4 oficial com QR Code e logotipo incorporados.
Especificações da Requisição
Formato / Content-Type
Descrição
Parâmetro
multipart/form-data
Envio padrão de formulário com arquivo em anexo (upload de arquivo)
Campo file contendo o arquivo .xml
application/xml ou text/xml
Envio direto da string ou bytes do XML no corpo (Body) bruto da requisição
Corpo bruto da mensagem em UTF-8 ou ANSI (Windows-1252)
Especificações da Resposta
Status Code
Content-Type
Cabeçalhos / Retorno
200 OK
application/pdf
Retorna os bytes do PDF gerado com o cabeçalho Content-Disposition: inline; filename="DANFSe_NF_...pdf"
400 Bad Request
text/plain
Mensagem explicativa com a causa do erro na leitura ou validação do XML
Exemplos de Código para Integração
# 1. Envio via Form Data (Multipart)
curl -X POST "https://danfse.sisgel.com.br/api/danfe/render" \
-F "file=@sua_nota_fiscal.xml" \
-o "DANFSe_Resultado.pdf"
# 2. Envio via Corpo Bruto (Binary XML Body)
curl -X POST "https://danfse.sisgel.com.br/api/danfe/render" \
-H "Content-Type: application/xml" \
--data-binary "@sua_nota_fiscal.xml" \
-o "DANFSe_Resultado.pdf"
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
var apiUrl = "https://danfse.sisgel.com.br/api/danfe/render";
// Envia o arquivo XML via MultipartFormDataContent
using var form = new MultipartFormDataContent();
var xmlBytes = await File.ReadAllBytesAsync("sua_nota_fiscal.xml");
using var fileContent = new ByteArrayContent(xmlBytes);
fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("text/xml");
form.Add(fileContent, "file", "sua_nota_fiscal.xml");
var response = await client.PostAsync(apiUrl, form);
if (response.IsSuccessStatusCode)
{
var pdfBytes = await response.ContentReadAsByteArrayAsync();
await File.WriteAllBytesAsync("DANFSe_Gerado.pdf", pdfBytes);
Console.WriteLine("DANFSe em PDF salvo com sucesso: DANFSe_Gerado.pdf");
}
else
{
string err = await response.ContentReadAsStringAsync();
Console.WriteLine($"Erro ao gerar DANFSe ({response.StatusCode}): {err}");
}
}
}
const fs = require('fs');
async function gerarDanfse() {
const apiUrl = 'https://danfse.sisgel.com.br/api/danfe/render';
const xmlBuffer = fs.readFileSync('sua_nota_fiscal.xml');
// Envia os bytes do XML diretamente no corpo da requisição
const response = await fetch(apiUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/xml'
},
body: xmlBuffer
});
if (!response.ok) {
const errorText = await response.text();
throw new Error(`Erro na API (${response.status}): ${errorText}`);
}
const pdfBuffer = Buffer.from(await response.arrayBuffer());
fs.writeFileSync('DANFSe_Gerado.pdf', pdfBuffer);
console.log('DANFSe gerado com sucesso em DANFSe_Gerado.pdf');
}
gerarDanfse().catch(console.error);
import requests
api_url = "https://danfse.sisgel.com.br/api/danfe/render"
with open("sua_nota_fiscal.xml", "rb") as f:
files = {"file": ("sua_nota_fiscal.xml", f, "text/xml")}
response = requests.post(api_url, files=files)
if response.status_code == 200:
with open("DANFSe_Gerado.pdf", "wb") as pdf_out:
pdf_out.write(response.content)
print("DANFSe em PDF gerado com sucesso!")
else:
print(f"Erro ao gerar DANFSe ({response.status_code}): {response.text}")