Eventos para notas fiscais
Escute os eventos do Asaas para ter sua integração em dia.
Eventos para notas fiscais
Use os eventos de nota fiscal para acompanhar emissão, atualização, autorização, cancelamento e falhas das notas fiscais emitidas pelo Asaas.
Cada notificação contém o tipo do evento em event e os dados da nota fiscal no objeto invoice.
Eventos disponíveis
| Evento | Quando ocorre |
|---|---|
INVOICE_CREATED | Uma nova nota fiscal é criada. |
INVOICE_UPDATED | A nota fiscal é alterada. |
INVOICE_SYNCHRONIZED | A nota fiscal é enviada para a prefeitura. |
INVOICE_AUTHORIZED | A nota fiscal é emitida. |
INVOICE_PROCESSING_CANCELLATION | O cancelamento da nota fiscal está sendo processado. |
INVOICE_CANCELED | A nota fiscal é cancelada. |
INVOICE_CANCELLATION_DENIED | O cancelamento da nota fiscal é recusado. |
INVOICE_ERROR | Ocorre um erro relacionado à nota fiscal. |
Fluxo de emissão
O fluxo comum de emissão passa pela criação, sincronização com a prefeitura e autorização da nota fiscal.
%%{init: {"flowchart": {"nodeSpacing": 28,"rankSpacing": 32,"diagramPadding": 8,"padding": 10}}}%%
flowchart TD
A["INVOICE_CREATED"] --> B["Enviar para a prefeitura"]
B --> C["INVOICE_SYNCHRONIZED"]
C --> D["Processar autorização"]
D --> E["INVOICE_AUTHORIZED"]
classDef inicio fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:3px,font-size:17px
classDef validacao fill:#E0F2FE,stroke:#0284C7,color:#0C4A6E,stroke-width:2px,font-size:17px
classDef sucesso fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:3px,font-size:17px
class A inicio
class B,C,D validacao
class E sucesso
linkStyle default stroke:#94A3B8,stroke-width:2px
O evento INVOICE_UPDATED pode ocorrer quando os dados da nota fiscal forem alterados.
Fluxo de cancelamento
Quando o cancelamento é solicitado, acompanhe o resultado pelo evento enviado após o processamento.
%%{init: {"flowchart": {"nodeSpacing": 28,"rankSpacing": 32,"diagramPadding": 8,"padding": 10}}}%%
flowchart TD
A["Solicitar cancelamento"] --> B["INVOICE_PROCESSING_<br/>CANCELLATION"]
B --> C{"Cancelamento autorizado?"}
C --> CSim(("Sim"))
C --> CNao(("Não"))
CSim --> D["INVOICE_CANCELED"]
CNao --> E["INVOICE_CANCELLATION_<br/>DENIED"]
classDef inicio fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:3px,font-size:17px
classDef decisao fill:#FEF3C7,stroke:#D97706,color:#78350F,stroke-width:3px,font-size:17px
classDef validacao fill:#E0F2FE,stroke:#0284C7,color:#0C4A6E,stroke-width:2px,font-size:17px
classDef sucesso fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:3px,font-size:17px
classDef respostaSim fill:#22C55E,stroke:#15803D,color:#FFFFFF,stroke-width:3px,font-size:16px
classDef respostaNao fill:#EF4444,stroke:#B91C1C,color:#FFFFFF,stroke-width:3px,font-size:16px
class A inicio
class B validacao
class C decisao
class D sucesso
class CSim respostaSim
class CNao,E respostaNao
linkStyle default stroke:#94A3B8,stroke-width:2px
linkStyle 2 stroke:#22C55E,stroke-width:4px
linkStyle 3 stroke:#EF4444,stroke-width:4px
Se ocorrer uma falha relacionada à nota fiscal, será enviado INVOICE_ERROR.
Payload do evento
A notificação é enviada via POST com o evento e os dados da nota fiscal.
{
"id": "evt_05b708f961d739ea7eba7e4db318f621&368604920",
"event": "INVOICE_CREATED",
"dateCreated": "2024-06-12 16:45:03",
"account": {
"id": "47ed0d25-f9fb-4b35-b23a-d8895caf92b7",
"ownerId": null
},
"invoice": {
"object": "invoice",
"id": "inv_000000000232",
"status": "SCHEDULED",
"customer": "cus_000000002750",
"type": "NFS-e",
"statusDescription": null,
"serviceDescription": "Nota fiscal da Fatura 101940. \nDescrição dos Serviços: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS",
"pdfUrl": null,
"xmlUrl": null,
"rpsSerie": null,
"rpsNumber": null,
"number": null,
"validationCode": null,
"value": 300,
"deductions": 0,
"effectiveDate": "2018-07-03",
"observations": "Mensal referente aos trabalhos de Junho.",
"estimatedTaxesDescription": "",
"payment": "pay_145059895800",
"installment": null,
"taxes": {
"retainIss": false,
"iss": 3,
"cofins": 3,
"csll": 1,
"inss": 0,
"ir": 1.5,
"pis": 0.65
},
"municipalServiceCode": "1.01",
"municipalServiceName": "Análise e desenvolvimento de sistemas"
}
}Campos importantes do payload
| Campo | Finalidade |
|---|---|
id | Identificador único do evento. Utilize-o para idempotência. |
event | Identifica o evento ocorrido. |
dateCreated | Data e hora de criação do evento. |
invoice.id | Identificador da nota fiscal. |
invoice.status | Status atual da nota fiscal. |
invoice.payment | Cobrança relacionada à nota fiscal. |
invoice.pdfUrl | URL do PDF da nota fiscal emitida. |
invoice.xmlUrl | URL do XML da nota fiscal emitida. |
invoice.number | Número da nota fiscal. |
invoice.validationCode | Código de validação da nota fiscal. |
ImportanteOs campos
pdfUrl,xmlUrl,numberevalidationCodenormalmente estarão preenchidos após a autorização da nota fiscal.
Como tratar os eventos
Ao receber um evento de nota fiscal:
- identifique a alteração pelo campo
event; - persista o
idpara impedir processamento duplicado; - utilize
invoice.idpara identificar a nota fiscal; - responda
HTTP 200após confirmar a persistência; - processe a atualização no seu sistema.
Os Webhooks seguem o modelo at least once, portanto o mesmo evento pode ser enviado mais de uma vez.
Consulte como implementar idempotência em Webhooks.
Como tratar eventos específicos
INVOICE_AUTHORIZED
INVOICE_AUTHORIZEDQuando a nota for autorizada, utilize os dados do objeto invoice para atualizar seu sistema e, quando disponíveis, armazenar ou disponibilizar pdfUrl, xmlUrl, number e validationCode.
INVOICE_ERROR
INVOICE_ERRORO evento indica uma falha relacionada à nota fiscal.
Verifique os dados retornados no evento e a configuração fiscal utilizada na emissão antes de realizar uma nova tentativa ou intervenção.
INVOICE_CANCELLATION_DENIED
INVOICE_CANCELLATION_DENIEDO cancelamento não foi autorizado. Mantenha a nota fiscal sincronizada com o estado retornado pelo Asaas e trate a recusa conforme a regra da sua integração.
Valide a origem do Webhook
Quando utilizar authToken, valide o header:
asaas-access-tokenSe sua infraestrutura restringir requisições por origem, consulte os IPs oficiais do Asaas.
Retorno do Webhook com tipagem e ENUMsCaso você queira saber qual o tipo de cada campo e os retornos de ENUMs disponíveis, confira a resposta
200no endpoint "Recuperar uma nota fiscal" na documentação.
Atenção
- Com a entrada de novos produtos e funções dentro do Asaas, é possível que novos atributos sejam incluídos no Webhook. É muito importante que seu código esteja preparado para não gerar exceções caso o Asaas devolva novos atributos não tratados pela sua aplicação, pois isso poderá causar interrupção na fila de sincronização.
- Enviaremos um e-mail e avisaremos em nosso Discord quando novos campos forem incluídos no Webhook. O disparo será feito para o e-mail de notificação definido nas configurações do Webhook.
Próximos passos
Updated 2 days ago
