Endpoints NF-e / NFC-e
Emitir, enviar, consultar, XML, DANFE, cancelar, CC-e e inutilizar.
Referência completa e detalhada de todos os endpoints REST da NFER. A API permite emitir notas fiscais (NF-e modelo 55, NFC-e modelo 65 e DC-e), gerar arquivos XML e DANFE PDF, gerenciar devoluções de e-commerce, cancelamentos e cartas de correção com sincronização direta na SEFAZ.
https://api.nfer.me/v1
X-API-Key: sec_live_...application/jsonCiclo de Vida da NF-e (Como Emitir)
A emissão na NFER é projetada para ser rápida, resiliente e imune a lentidões da SEFAZ. O fluxo é dividido em 3 etapas simples:
Criar Rascunho
Gera o rascunho da nota, calcula impostos e reserva o próximo número sequencial. Responde 201 Created em ~50ms.
Enfileirar Envio
Assina com o certificado A1 e envia à SEFAZ via fila assíncrona. Responde 202 Accepted imediatamente.
Obter Resultado
Seu backend recebe o webhook nfe.autorizada com a chave de 44 dígitos e o protocolo, ou faz polling em GET /v1/nfe/:id.
Por que a transmissão (/send) é assíncrona?
Tabela Geral de Endpoints
| Método | Endpoint | Descrição | Status HTTP |
|---|---|---|---|
| POST | /v1/nfe | Cria rascunho de NF-e (modelo 55) com número reservado | 201 Created |
| POST | /v1/nfe/:id/send | Assina e envia a nota para autorização na SEFAZ | 202 Accepted |
| GET | /v1/nfe/:id | Consulta dados completos da nota, status e itens | 200 OK |
| PUT | /v1/nfe/:id | Corrige dados de nota rejeitada mantendo o mesmo número | 200 OK |
| GET | /v1/nfe/:id/xml | Baixa o arquivo XML assinado e autorizado | 200 XML |
| GET | /v1/nfe/:id/danfe | Baixa o documento PDF do DANFE formatado | 200 PDF |
| POST | /v1/nfe/:id/devolucao | Gera rascunho automático de devolução/troca | 201 Created |
| POST | /v1/nfe/:id/cancel | Cancela nota fiscal autorizada (prazo SEFAZ de 24h) | 202 Accepted |
| POST | /v1/nfe/:id/correction-letter | Emite Carta de Correção Eletrônica (CC-e) | 202 Accepted |
| POST | /v1/nfe/inutilizar | Inutiliza faixa numérica não utilizada na SEFAZ | 200 OK |
| POST | /v1/nfe/batch | Emissão assíncrona em lote (até 50 notas) | 202 Accepted |
| POST | /v1/nfce | Cria rascunho de NFC-e (modelo 65 - Cupom) | 201 Created |
| POST | /v1/dce | Cria Declaração de Conteúdo Eletrônica (e-commerce) | 201 Created |
| GET | /v1/nfe | Lista notas emitidas com paginação e filtros de data | 200 OK |
1. Criar Rascunho de NF-e (POST /v1/nfe)
Você pode passar o destinatário de duas formas: diretamente no corpo da requisição (customer) ou usando o ID de um cliente previamente cadastrado (customerId).
/v1/nfeCria o rascunho da NF-e, calcula os impostos pelos perfis fiscais e reserva o número.
Exemplo 1: Destinatário Inline (Recomendado para E-commerce)
Venda pela internet para consumidor final (não contribuinte), com frete e pagamento via PIX.
• indFinal: 1 = Consumidor final.
• indPres: 2 = Operação não presencial (internet).
• fiscalProfileId = Aplica tributação e CFOP configurados no painel.
{
"customer": {
"cpfCnpj": "12345678000199",
"nome": "Cliente Exemplo LTDA",
"email": "fiscal@cliente.com",
"telefone": "4430000000",
"endereco": {
"logradouro": "Rua das Flores",
"numero": "100",
"complemento": "Sala 2",
"bairro": "Centro",
"xMun": "Cianorte",
"UF": "PR",
"CEP": "87200000"
}
},
"naturezaOperacao": "VENDA DE MERCADORIA",
"tipoOperacao": "1",
"finalidade": 1,
"serie": 1,
"indFinal": 1,
"indPres": 2,
"valorFrete": 15.94,
"transporte": { "modFrete": 0 },
"informacoesAdicionais": "Pedido 3306 - Integracao API",
"itens": [
{
"codigo": "SKU-001",
"descricao": "Camiseta 100% Algodao",
"ncm": "61091000",
"unidade": "UN",
"quantidade": 1,
"valorUnitario": 259.90,
"fiscalProfileId": "0e8a719f-..."
}
],
"pagamentos": [
{ "forma": "17", "valor": 275.84 }
]
}Tabela de Parâmetros Principais (POST /v1/nfe)
| Campo | Tipo | Obrigatório | Descrição e Valores |
|---|---|---|---|
| customer | objeto | um dos dois | Dados cadastrais do cliente destinatário no próprio payload. |
| customerId | string (UUID) | um dos dois | ID de cliente já salvo no NFER (POST /v1/customers). |
| naturezaOperacao | string | sim | Ex.: "VENDA DE MERCADORIA", "DEVOLUCAO DE COMPRA", "REMESSA". |
| tipoOperacao | string ("0"|"1") | não (def. "1") | "1" = Saída (venda/remessa), "0" = Entrada (devolução/compra). |
| finalidade | number (1..4) | não (def. 1) | 1 = Normal, 2 = Complementar, 3 = Ajuste, 4 = Devolução. |
| serie | number | não (def. 1) | Série da nota fiscal na SEFAZ (ex.: 1). |
| indFinal | number (0|1) | não (def. 0) | 1 = Consumidor final (e-commerce e pessoa física), 0 = Revenda. |
| indPres | number (0..9) | não (def. 1) | 1 = Presencial, 2 = Internet/Não presencial, 9 = Outros. |
| itens | array | sim | Lista de itens. Requer codigo, descricao, ncm, quantidade e valorUnitario. |
| pagamentos | array | sim | 01=Dinheiro, 03=Cartão Crédito, 04=Cartão Débito, 17=PIX, 90=Sem Pagamento. |
| valorFrete | number | não | Valor do frete somado automaticamente ao total da nota. |
| transporte | objeto | não | Modalidade do frete (modFrete: 0=Remetente, 1=Destinatário, 9=Sem frete). |
| informacoesAdicionais | string | não | Observações fiscais impressas no DANFE e gravadas no XML. |
2. Transmitir para a SEFAZ (POST /v1/nfe/:id/send)
Dispara a assinatura digital com certificado A1 e o envio do lote para os servidores da SEFAZ estadual.
/v1/nfe/:id/sendEnfileira o envio para a SEFAZ. Responde HTTP 202 com status 'processando'.
curl -s -X POST https://api.nfer.me/v1/nfe/8f21ac-uuid/send \ -H "X-API-Key: $NFER_KEY" \ -H "Content-Type: application/json"
Resposta imediata da fila:
{
"id": "8f21ac-uuid",
"status": "processando",
"numero": 1042,
"serie": 1,
"message": "Nota fiscal enviada para a fila de processamento da SEFAZ"
}3. Consultar Status e Dados (GET /v1/nfe/:id)
Retorna todos os dados da nota fiscal, incluindo chave de acesso de 44 dígitos, protocolo de autorização, valores calculados e mensagens de erro da SEFAZ caso tenha sido rejeitada.
/v1/nfe/:idRetorna o objeto completo da NF-e, status (rascunho, processando, autorizada, erro, cancelada).
curl -s https://api.nfer.me/v1/nfe/8f21ac-uuid \ -H "X-API-Key: $NFER_KEY"
4. Corrigir e Reenviar Nota com Erro (PUT /v1/nfe/:id)
Se a SEFAZ rejeitar a nota (ex: cStat 321 ou 539), nunca gere um novo rascunho. Atualize os dados da mesma nota usando PUT /v1/nfe/:id e chame /send novamente. Isso garante que o mesmo número sequencial seja utilizado, sem furos de numeração.
/v1/nfe/:idSubstitui os dados do rascunho ou de nota com erro para reenviar à SEFAZ.
# 1. Atualiza os dados com o body corrigido
curl -s -X PUT https://api.nfer.me/v1/nfe/8f21ac-uuid \
-H "X-API-Key: $NFER_KEY" \
-H "Content-Type: application/json" \
-d '{ ...body corrigido... }'
# 2. Reenvia a mesma nota para a SEFAZ
curl -s -X POST https://api.nfer.me/v1/nfe/8f21ac-uuid/send \
-H "X-API-Key: $NFER_KEY"5. Download de XML e DANFE PDF
Após a autorização na SEFAZ, o NFER armazena o XML protocolado e gera o DANFE em PDF de alta qualidade para impressão.
/v1/nfe/:id/xmlRetorna o XML oficial assinado e protocolado pela SEFAZ (Content-Type: application/xml).
/v1/nfe/:id/danfeGera o arquivo PDF do DANFE pronto para impressão ou envio por e-mail.
Baixar XML Protocolado
O arquivo contém as tags <nfeProc> e <protNFe> exigidas pelo Fisco.
curl -s https://api.nfer.me/v1/nfe/$NFE_ID/xml \ -H "X-API-Key: $NFER_KEY" -o nfe.xml
Baixar DANFE em PDF
Também suporta autenticação via query param ?api_key=... para abrir direto no navegador.
curl -s "https://api.nfer.me/v1/nfe/$NFE_ID/danfe?api_key=$NFER_KEY" \ -o danfe.pdf
6. Nota de Devolução e Troca (E-commerce e Varejo)
Quando um cliente pede troca ou devolução de um pedido cujo prazo de cancelamento (24h) já expirou, a legislação fiscal brasileira exige a emissão de uma Nota Fiscal de Devolução de Entrada (finalidade 4).
/v1/nfe/:id/devolucaoClona a nota original, inverte CFOPs (ex: 5102→1202), define tipo 0 (Entrada) e vincula nfeReferenciada.
| Cenário | O que fazer | Efeito Fiscal e Estoque |
|---|---|---|
| Devolução de Mercadoria | Emite NF-e de Entrada (tipo 0, finalidade 4) referenciando a chave da venda original. | Anula os impostos da venda original e registra a reentrada do item no estoque. |
| Troca de Produto no E-commerce | 1. Emite NF-e de Devolução (Entrada) 2. Emite nova NF-e de Saída para o item substituto. | Estorna contabilmente o item anterior e formaliza a remessa do novo produto com rastreio. |
| Atalho NFER (/devolucao) | POST /v1/nfe/:id/devolucao na nota autorizada. | O NFER preenche automaticamente tipo=0, finalidade=4, CFOPs de devolução e chave vinculada! |
# 1. Gera o rascunho de devolução a partir da nota autorizada curl -s -X POST https://api.nfer.me/v1/nfe/$NFE_ORIGINAL_ID/devolucao \ -H "X-API-Key: $NFER_KEY" # 2. Envia para autorização na SEFAZ curl -s -X POST https://api.nfer.me/v1/nfe/$NFE_DEVOLUCAO_ID/send \ -H "X-API-Key: $NFER_KEY"
7. Cancelamento de NF-e (POST /v1/nfe/:id/cancel)
O cancelamento só pode ser solicitado se a mercadoria ainda não saiu para entrega e dentro do prazo legal da SEFAZ estadual (geralmente 24 horas). A justificativa deve conter no mínimo 15 caracteres.
/v1/nfe/:id/cancelEnvia evento de cancelamento para a SEFAZ. Responde HTTP 202 com status 'processando'.
curl -s -X POST https://api.nfer.me/v1/nfe/$NFE_ID/cancel \
-H "X-API-Key: $NFER_KEY" \
-H "Content-Type: application/json" \
-d '{
"justificativa": "Cancelamento solicitado pelo cliente antes do envio"
}'8. Carta de Correção Eletrônica — CC-e (POST /v1/nfe/:id/correction-letter)
Usada para corrigir erros simples (ex.: erro de digitação no endereço de entrega, dados do transportador, informações complementares). Não permite alterar valores fiscais, alíquotas de impostos, data de emissão ou mudar completamente o destinatário.
/v1/nfe/:id/correction-letterEnvia evento de CC-e à SEFAZ. Justificativa entre 15 e 1000 caracteres.
curl -s -X POST https://api.nfer.me/v1/nfe/$NFE_ID/correction-letter \
-H "X-API-Key: $NFER_KEY" \
-H "Content-Type: application/json" \
-d '{
"correcao": "Onde se le Rua das Flores 100, leia-se Rua das Flores 102 Sala 4"
}'9. Inutilização de Numeração (POST /v1/nfe/inutilizar)
Se houve uma quebra na sequência de numeração (ex: pulou do número 105 para o 110 por falha interna do ERP), você deve justificar a inutilização desses números perante a SEFAZ para evitar multas tributárias.
/v1/nfe/inutilizarInutiliza faixa de números na SEFAZ. Síncrono.
curl -s -X POST https://api.nfer.me/v1/nfe/inutilizar \
-H "X-API-Key: $NFER_KEY" \
-H "Content-Type: application/json" \
-d '{
"serie": 1,
"numeroInicial": 106,
"numeroFinal": 109,
"justificativa": "Numeros pulados por falha na integracao do software emissor",
"modelo": "55"
}'10. Emissão em Lote (POST /v1/nfe/batch)
Permite enviar até 50 notas de uma única vez para processamento paralelo de alta velocidade. Ideal para fechamento de vendas diárias ou expedições de e-commerce.
/v1/nfe/batchEnvia lista de payloads (mesmo JSON de POST /nfe). Responde 202 com batchId.
/v1/nfe/batch/:batchIdAcompanha o progresso do lote e o status de cada nota.
curl -s -X POST https://api.nfer.me/v1/nfe/batch \
-H "X-API-Key: $NFER_KEY" \
-H "Content-Type: application/json" \
-d '{
"notas": [
{ "naturezaOperacao": "VENDA", "itens": [...], "pagamentos": [...] },
{ "naturezaOperacao": "VENDA", "itens": [...], "pagamentos": [...] }
]
}'11. NFC-e — Cupom Fiscal Eletrônico (Modelo 65)
Para ponto de venda (PDV) e frente de caixa. O destinatário é opcional (venda anônima no balcão). Requer o CSC (nfceIdCsc e nfceTokenCsc) configurado no cadastro da empresa.
/v1/nfceCria rascunho de cupom NFC-e modelo 65.
/v1/nfce/:id/sendEnvia o cupom para autorização na SEFAZ.
/v1/nfce/:id/xmlDownload do XML da NFC-e autorizada.
curl -s -X POST https://api.nfer.me/v1/nfce \
-H "X-API-Key: $NFER_KEY" \
-H "Content-Type: application/json" \
-d '{
"naturezaOperacao": "VENDA AO CONSUMIDOR",
"itens": [
{
"descricao": "Cafe Expresso 50ml",
"ncm": "09012100",
"unidade": "UN",
"quantidade": 1,
"valorUnitario": 7.50
}
],
"pagamentos": [
{ "forma": "01", "valor": 7.50 }
]
}'