Webhooks NF-e / NFC-e

Receba notificações em tempo real sobre o ciclo de vida das suas NF-e e NFC-e. Os mesmos endpoints de gerenciamento da NFS-e ( /webhooks/endpoints ) suportam eventos NF-e/NFC-e. Cadastre os eventos desejados ao criar ou atualizar um endpoint.

Eventos Suportados

NF-e (modelo 55)

Eventos NF-e

CampoTipoReq?Descrição
nfe.issuedeventnãoNF-e autorizada pela SEFAZ (cStat 100 ou 150). Payload inclui invoiceId, chaveAcesso, nProt, cStat, xMotivo.
nfe.erroreventnãoRejeição SEFAZ na emissão. Payload inclui invoiceId, chaveAcesso, cStat, xMotivo.
nfe.cancelledeventnãoNF-e cancelada com sucesso na SEFAZ. Payload inclui invoiceId, chaveAcesso, nProt.

NFC-e (modelo 65)

Eventos NFC-e

CampoTipoReq?Descrição
nfce.issuedeventnãoNFC-e autorizada pela SEFAZ. Payload inclui invoiceId, chaveAcesso, nProt, cStat, xMotivo, qrCode (URL do QR Code) e urlChave (consulta pública SEFAZ).
nfce.erroreventnãoRejeição SEFAZ na emissão NFC-e. Payload inclui invoiceId, chaveAcesso, cStat, xMotivo.
nfce.cancelledeventnãoNFC-e cancelada com sucesso. Payload inclui invoiceId, chaveAcesso, nProt.

Formato do Payload

Todos os eventos são enviados via POST com Content-Type: application/json. O header X-Notaas-Event identifica o tipo do evento.

{
  "event": "nfe.issued",
  "deliveryId": "uuid",
  "timestamp": "2026-04-22T19:30:00Z",
  "data": {
    "invoiceId": "uuid-da-nfe",
    "chaveAcesso": "41260412345678000195550010000000011234567890",
    "nProt": "141260000012345",
    "cStat": 100,
    "xMotivo": "Autorizado o uso da NF-e",
    "dhRecbto": "2026-04-22T19:30:00-03:00"
  }
}

Verificação de Assinatura

Se um secret estiver configurado no endpoint, o header X-Notaas-Signature conterá o HMAC-SHA256 do body usando o secret como chave.

// Validação em Node.js
const crypto = require('crypto');

function verifySignature(body, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(body, 'utf8')
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}

Retentativas

Em caso de falha (status ≥ 400 ou timeout), o sistema faz até 5 retentativas com backoff exponencial:

TentativaIntervalo
1Imediata
21 minuto
35 minutos
430 minutos
52 horas