Skip to main content

Eventos disponíveis

Emissão

Eventos das notas que a sua empresa emite.

Notas recebidas

Eventos das notas emitidas contra o seu CNPJ por terceiros — veja NF-e recebidas e NFS-e tomadas.
inbound_invoice.completed não é disparado para NFS-e. O evento anuncia a passagem de resumo para XML completo, transição que existe apenas na NF-e — a NFS-e é entregue completa pelo ambiente nacional. Integrações que aguardam esse evento para obter o XML de uma NFS-e não serão notificadas; utilize o detected.
Os três eventos são compartilhados pelos dois modelos. O campo model do payload identifica o modelo recebido: productInvoice para NF-e, serviceInvoice para NFS-e. Cada webhook assina um único evento (campo event em WebhookEditingDto, veja Gerenciamento de webhooks). Para receber mais de um tipo, crie um webhook por evento. Na maioria dos casos, assinar apenas invoice.status_changed é suficiente — ele cobre todo o ciclo de vida da nota (veja Ciclo de vida da nota), incluindo as mesmas transições que os eventos mais específicos (invoice.authorized, invoice.rejected, invoice.canceled) também disparam. Use os eventos específicos apenas se sua integração precisa reagir de forma diferenciada a cada um sem inspecionar o data.status do payload.

Envelope do payload

Todo evento é entregue como um HTTP POST com o corpo no seguinte formato:
Nos eventos de notas recebidas (inbound_invoice.*), o data varia por evento: em inbound_invoice.detected e inbound_invoice.completed traz o objeto da nota recebida — no formato de GET /v1/inbound-product-invoices/{id} para NF-e ou de GET /v1/inbound-service-invoices/{id} para NFS-e; em inbound_invoice.event traz { invoice, event }. Veja os exemplos em Notas recebidas mais abaixo, e o conceito em NF-e recebidas e NFS-e tomadas.

Exemplo de payload

O exemplo abaixo é de uma autorização de NFS-e. O data contém os mesmos campos retornados por GET /v1/service-invoices/{id} — a estrutura é idêntica para NF-e e NFC-e, usando os campos dos respectivos endpoints de leitura.
Use data.company para identificar a empresa que gerou o evento (lembre-se: o webhook é por conta e recebe eventos de todas as empresas — veja Webhooks: visão geral) e data.status para saber o estado atual da nota (veja Ciclo de vida da nota para o significado de cada valor).

Exemplo de payload — notas recebidas

Os eventos de notas recebidas (NF-e e NFS-e) têm um data diferente dos eventos de emissão — e que varia conforme o evento.

inbound_invoice.detected e inbound_invoice.completed

Nos dois eventos, o data é o objeto da nota recebida — o mesmo formato do GET correspondente ao modelo: /v1/inbound-product-invoices/{id} para NF-e, /v1/inbound-service-invoices/{id} para NFS-e. O campo model diz qual dos dois você recebeu. Na NF-e, o que muda entre os dois eventos é o estágio da nota:
  • inbound_invoice.detected: a nota acabou de ser detectada, ainda como resumo — isComplete: false e sem manifestação.
  • inbound_invoice.completed: o mesmo objeto depois de manifestado — isComplete: true e manifestation preenchida.
Na NFS-e ocorre apenas o detected, e a nota já é entregue com isComplete: true.

NF-e — inbound_invoice.detected

NFS-e — inbound_invoice.detected

Mesmo envelope, com o corpo do modelo de serviço. As diferenças em relação ao exemplo anterior: isComplete já é verdadeiro na detecção, a chave de acesso tem 50 dígitos, role indica o papel da empresa na nota e manifestation não traz protocol — o ambiente nacional não emite protocolo para evento de NFS-e.

inbound_invoice.event

Disparado quando um evento fiscal é vinculado à nota (cancelamento ou carta de correção feitos pelo emitente, por exemplo). Aqui o data é um envelope { invoice, event }: a nota e o evento específico que disparou — porque a nota sozinha não diz qual evento ocorreu.
O campo event.type indica o tipo do evento, e os valores possíveis dependem do modelo: O exemplo acima é de NF-e. Na NFS-e o envelope é o mesmo, com duas diferenças no objeto event: não há protocol (o ambiente nacional não emite protocolo para evento de NFS-e) e o eventCode segue a numeração do padrão nacional — por exemplo 101101 para o cancelamento e 203202 para a confirmação do tomador.