Pular para o conteúdo principal
Hoje a Pagou expõe dois formatos públicos de envelope de webhook.

Comparação de envelopes

DomínioCampo de evento no topoCampo do recursoNome concreto do evento
Pagamentosevent: "transaction"datadata.event_type
Transferênciastypedata.objecttype no topo

Exemplo de webhook de pagamento

{
  "id": "evt_pay_1001",
  "event": "transaction",
  "api_version": "v1",
  "data": {
    "id": "tr_1001",
    "event_type": "transaction.paid",
    "correlation_id": "order_1001",
    "method": "pix",
    "status": "paid",
    "amount": 1500,
    "currency": "BRL"
  }
}

Exemplo de webhook de transferência

{
  "id": "evt_payout_1001",
  "type": "payout.transferred",
  "api_version": "v2",
  "data": {
    "object": {
      "id": "po_1001",
      "status": "paid",
      "type": "pix",
      "amount": 1200
    }
  }
}

Resposta de ACK

{
  "received": true
}

Erro comum de ingestão

{
  "error": "missing_event_id"
}
Como corrigir: exija o id de topo, faça deduplicação por esse valor, responda 200 OK rapidamente e processe de forma assíncrona.

Guia de mapeamento

  • Dirija o estado de negócio pelo status do recurso, não por suposição no front-end.
  • Mapeie o evento de transferência payout.transferred para o status liquidado do recurso paid.
  • Reconcilie se seu worker cair depois do ack.

Leia a seguir