Pular para o conteúdo principal

Emitir NFe

Emita uma Nota Fiscal Eletrônica (NFe — modelo 55) e transmita para a SEFAZ em uma única chamada.

POST/v1/nfe/emitir

Pré-requisitos

Antes de emitir, você precisa ter:

  1. Conta criadaRegistrar-se
  2. Empresa cadastrada — com CNPJ e dados fiscais
  3. Certificado digital A1 — upload pelo dashboard ou API
  4. Ambiente de homologação — para testes sem efeito fiscal
💡

Use o ambiente de homologação (environment: 2) para testar sem gerar notas fiscais reais. Mude para produção (environment: 1) apenas quando estiver pronto.


Request Body

CampoTipoObrigatórioDescrição
issuerIdstringSimID da empresa emissora (uuid)
naturezaOperacaostringSimEx: 'VENDA DE MERCADORIA', 'DEVOLUÇÃO'
destinatarioobjectSimDados do destinatário da nota
destinatario.cpfCnpjstringSimCPF ou CNPJ do destinatário
destinatario.nomestringSimNome ou razão social
destinatario.enderecoobjectSimEndereço completo
destinatario.indicadorIEnumberSim1=Contribuinte, 2=Isento, 9=Não contribuinte
itensarraySimLista de itens/produtos da nota
itens[].codigostringSimCódigo interno do produto
itens[].descricaostringSimDescrição do produto
itens[].ncmstringSimCódigo NCM (8 dígitos)
itens[].cfopstringSimCódigo CFOP (4 dígitos)
itens[].unidadestringSimUnidade de medida (UN, KG, etc.)
itens[].quantidadenumberSimQuantidade vendida
itens[].valorUnitarionumberSimValor unitário em R$
itens[].valorTotalnumberSimValor total do item (qtd × unitário)
itens[].icmsobjectSimDados de ICMS do item
pagamentoobjectSimForma e valor do pagamento
pagamento.formastringSim01=Dinheiro, 02=Cheque, 03=Cartão Crédito, etc.
pagamento.valornumberSimValor total do pagamento em R$
observacoesstringNãoInformações adicionais da nota

Exemplos de Request

curl -X POST https://api.engineapi.com.br/v1/nfe/emitir \
-H "Authorization: Bearer sk_test_sua_api_key" \
-H "Content-Type: application/json" \
-d '{
"issuerId": "ISSUER_ID",
"naturezaOperacao": "VENDA DE MERCADORIA",
"destinatario": {
"cnpj": "99888777000155",
"nome": "Cliente Exemplo SA",
"endereco": {
"logradouro": "Av Brasil",
"numero": "500",
"bairro": "Centro",
"codigoMunicipio": "3550308",
"municipio": "São Paulo",
"uf": "SP",
"cep": "01001000"
},
"indicadorIE": 1
},
"itens": [{
"codigo": "PROD001",
"descricao": "Camiseta Algodão P",
"ncm": "61091000",
"cfop": "5102",
"unidade": "UN",
"quantidade": 2,
"valorUnitario": 59.90,
"valorTotal": 119.80,
"icms": {
"origem": 0,
"cst": "00",
"aliquota": 18,
"baseCalculo": 119.80,
"valor": 21.56
}
}],
"pagamento": {
"forma": "01",
"valor": 119.80
}
}'

Response de Sucesso (200)

{
"success": true,
"invoice": {
"id": "nfe_abc123def456",
"accessKey": "35260211222333000144550010000000011000000019",
"number": 1,
"series": 1,
"status": "AUTHORIZED",
"protocol": "135260000001234",
"xml": "https://api.engineapi.com.br/v1/nfe/nfe_abc123def456/xml",
"pdf": "https://api.engineapi.com.br/v1/nfe/nfe_abc123def456/pdf",
"createdAt": "2026-02-14T18:30:00.000Z"
}
}

Status Possíveis

StatusSignificadoAção
AUTHORIZEDNota autorizada pela SEFAZNenhuma — nota válida
REJECTEDRejeitada pela SEFAZCorrija os dados e reenvie
PROCESSINGEm processamentoAguarde ou consulte via GET
CANCELLEDCanceladaNota foi cancelada
CORRECTIONCarta de correção emitidaNota corrigida

Tratamento de Erros

400 — Dados Inválidos

{
"statusCode": 400,
"error": "Bad Request",
"message": "Campo 'destinatario.cpfCnpj' é obrigatório"
}

422 — Rejeição SEFAZ

{
"statusCode": 422,
"error": "Unprocessable Entity",
"message": "Rejeição 539: Duplicidade de NFe",
"sefazCode": 539,
"sefazMessage": "Duplicidade de NFe, com diferença na Chave de Acesso"
}
🚨

Rejeições SEFAZ (422) incluem os campos sefazCode e sefazMessage para facilitar o diagnóstico. Consulte a tabela de rejeições para detalhes.


Webhook

Após a emissão, a Engine API dispara um webhook nfe.emitida com o payload:

{
"event": "nfe.emitida",
"data": {
"id": "nfe_abc123def456",
"accessKey": "35260211222333000144550010000000011000000019",
"status": "AUTHORIZED",
"issuerId": "ISSUER_ID"
},
"timestamp": "2026-02-14T18:30:00.000Z"
}
ℹ️

Configure seus webhooks em Dashboard → Configurações → Webhooks ou via API de Webhooks.


Próximos passos