Eventos para pague contas

Escute os eventos do Asaas para ter sua integração em dia.

Use os eventos de Pague Contas para acompanhar automaticamente o processamento de pagamentos realizados pelo Asaas.

Cada notificação informa o evento ocorrido em event e os dados atuais do pagamento no objeto bill. Para acompanhar mudanças de estado, prefira Webhooks em vez de consultas periódicas à API.

Eventos disponíveis

EventoQuando ocorre
BILL_CREATEDUm novo pagamento de contas é criado.
BILL_PENDINGO pagamento aguarda processamento.
BILL_BANK_PROCESSINGO pagamento está em processamento bancário.
BILL_PAIDO pagamento é realizado.
BILL_CANCELLEDO pagamento é cancelado.
BILL_FAILEDO pagamento falha.
BILL_REFUNDEDO pagamento é estornado.

Como interpretar os eventos

EventoTratamento na integração
BILL_CREATEDRegistre a operação e associe bill.id ao pagamento no seu sistema.
BILL_PENDINGMantenha o pagamento como pendente.
BILL_BANK_PROCESSINGIndique que o pagamento está em processamento bancário.
BILL_PAIDConfirme o pagamento e utilize transactionReceiptUrl quando o comprovante estiver disponível.
BILL_CANCELLEDAtualize a operação como cancelada.
BILL_FAILEDMarque a operação como falha e consulte failReasons.
BILL_REFUNDEDAtualize a operação para refletir o estorno.

event identifica a alteração notificada pelo Webhook. bill.status representa o estado atual do pagamento no payload.

Fluxos do pagamento

Pagamento concluído

%%{init: {"flowchart": {"nodeSpacing": 28,"rankSpacing": 32,"diagramPadding": 8,"padding": 10}}}%%
flowchart TD
    A["BILL_CREATED"] --> B["BILL_PENDING"]
    B --> C["BILL_BANK_PROCESSING"]
    C --> D["BILL_PAID"]

    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 validacao
    class D sucesso

    linkStyle default stroke:#94A3B8,stroke-width:2px

Falha no processamento

%%{init: {"flowchart": {"nodeSpacing": 28,"rankSpacing": 32,"diagramPadding": 8,"padding": 10}}}%%
flowchart TD
    A["BILL_CREATED"] --> B["BILL_PENDING"]
    B --> C["BILL_FAILED"]

    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 respostaNao fill:#EF4444,stroke:#B91C1C,color:#FFFFFF,stroke-width:3px,font-size:17px

    class A inicio
    class B validacao
    class C respostaNao

    linkStyle default stroke:#94A3B8,stroke-width:2px

Ao receber BILL_FAILED, utilize bill.failReasons para identificar a causa antes de orientar uma nova tentativa.

Pagamento cancelado

%%{init: {"flowchart": {"nodeSpacing": 28,"rankSpacing": 32,"diagramPadding": 8,"padding": 10}}}%%
flowchart TD
    A["BILL_CREATED"] --> B["BILL_CANCELLED"]

    classDef inicio fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:3px,font-size:17px
    classDef sucesso fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:3px,font-size:17px

    class A inicio
    class B sucesso

    linkStyle default stroke:#94A3B8,stroke-width:2px

Os eventos representam alterações no processamento. Não assuma que toda operação passará obrigatoriamente por todos os estados intermediários antes do resultado final.

Payload do evento

A notificação é enviada via POST com o evento e os dados do pagamento de contas.

{
    "id": "evt_05b708f961d739ea7eba7e4db318f621&368604920",
    "event": "BILL_PAID",
    "dateCreated": "2024-06-12 16:45:03",
    "account": {
        "id": "47ed0d25-f9fb-4b35-b23a-d8895caf92b7",
        "ownerId": null
    },
    "bill": {
        "object": "bill",
        "id": "f1bce822-6f37-4905-8de8-f1af9f2f4bab",
        "status": "PAID",
        "value": 29.90,
        "discount": 0.00,
        "interest": 0.00,
        "fine": 0.00,
        "identificationField": "03399.77779 29900.000000 04751.101017 1 81510000002990",
        "dueDate": "2020-01-31",
        "scheduleDate": "2020-01-31",
        "paymentDate": "2020-01-31",
        "fee": 0.00,
        "description": "Celular 01/12",
        "companyName": null,
        "transactionReceiptUrl": "https://www.asaas.com/comprovantes/00016578",
        "canBeCancelled": false,
        "failReasons": null
    }
}

Campos importantes do payload

CampoDescrição
idIdentificador único do evento. Utilize-o para idempotência.
eventIdentifica o evento recebido.
bill.idIdentificador do pagamento de contas.
bill.statusEstado atual do pagamento.
bill.paymentDateData efetiva do pagamento.
bill.transactionReceiptUrlURL do comprovante, quando disponível.
bill.failReasonsMotivos da falha, quando existirem.
bill.canBeCancelledIndica se o pagamento ainda pode ser cancelado.
👍

Retorno do Webhook com tipagem e ENUMs

Caso você queira saber qual o tipo de cada campo e os retornos de ENUMs disponíveis, confira a resposta 200 no endpoint "Recuperar um único pagamento de contas" na documentação.

Como tratar os eventos

Ao receber um evento:

  1. identifique a alteração pelo campo event;
  2. persista o id para impedir processamento duplicado;
  3. utilize bill.id para localizar o pagamento no seu sistema;
  4. atualize a operação conforme event e bill.status;
  5. responda HTTP 200 após confirmar a persistência;
  6. processe regras adicionais de forma assíncrona.

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.

🚧

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


Did this page help you?