Eventos

O que a plataforma envia, e como o nome do evento já diz tudo.

Como o nome é montado

Todo evento tem três partes, sempre nesta ordem: <recurso>.<método>.<ação>. Ler o nome responde as três perguntas que você faz ao receber a entrega: sobre o que é, por qual rail o dinheiro andou, e o que aconteceu.

Anatomia
charge.pix.paid
│      │   └── ação: o que aconteceu
│      └────── método: por qual rail
└───────────── recurso: sobre o que

charge.boleto.emitted   cobrança, boleto, instrumento pronto
payment.ted.completed   pagamento, TED, dinheiro creditado

Recursos

charge
entradaopcional
Cobrança: dinheiro entrando, pago por um cliente seu.
payment
saídaopcional
Pagamento: dinheiro saindo do seu saldo para uma conta externa.
dispute
contestaçãoopcional
Disputa: um MED aberto contra uma cobrança Pix, com defesa e desfecho.

Métodos

pix
charge, payment, disputeopcional
Pix, nos dois sentidos.
boleto
chargeopcional
Boleto bancário.
card
chargeopcional
Cartão de crédito.
ted
paymentopcional
TED.
Não existe evento genérico como charge.paid. O método faz parte do nome porque a régua de cobrança de um boleto não é a mesma de um Pix, e quem assina quase sempre quer tratar um sem tratar o outro. Para reagir a todos, assine os três: charge.pix.paid, charge.boleto.paid, charge.card.paid.

Elegibilidade

Só existem as combinações que fazem sentido. Boleto não sofre chargeback, cartão não tem instrumento emitido nem vence, Pix não passa por autorização em duas etapas. Assinar um nome fora do catálogo devolve 422 no cadastro do endpoint, em vez de aceitar em silêncio um evento que nunca chegaria.

A lista completa também é servida pela API, em GET /v1/webhooks/events, com a descrição de cada evento e o campo dispatched.

payment e o recurso payout

Os eventos payment.* descrevem o mesmo recurso servido em /v1/payouts. O nome do evento usa payment por simetria com charge: os dois lados do dinheiro, entrando e saindo, com a mesma gramática de nome.

Cobrança via Pix

charge.pix.*

charge.pix.created
eventoopcional
Cobrança Pix registrada na plataforma.
charge.pix.emitted
eventoopcional
QR code e copia e cola disponíveis para o pagador.
charge.pix.paid
eventoopcional
Pix liquidado. É o evento que dá baixa no pedido.
charge.pix.expired
ainda não disparadoopcional
QR code venceu sem pagamento.
charge.pix.failed
eventoopcional
A liquidação foi tentada e recusada pelo provedor.
charge.pix.canceled
eventoopcional
Cobrança cancelada antes do pagamento.
charge.pix.refunded
eventoopcional
Valor devolvido ao pagador.
charge.pix.infraction
eventoopcional
Infração aberta no MED: o pagador contestou o Pix e o desfecho está em aberto.
charge.pix.charged_back
eventoopcional
Devolução determinada pelo mecanismo especial de devolução (MED).

Cobrança via boleto

charge.boleto.*

charge.boleto.created
eventoopcional
Cobrança por boleto registrada na plataforma.
charge.boleto.emitted
eventoopcional
Boleto emitido: linha digitável e PDF disponíveis.
charge.boleto.paid
eventoopcional
Boleto compensado pelo banco.
charge.boleto.expired
ainda não disparadoopcional
Boleto venceu sem compensação.
charge.boleto.failed
eventoopcional
O banco recusou o registro ou a compensação.
charge.boleto.canceled
eventoopcional
Boleto baixado antes do pagamento.
charge.boleto.refunded
eventoopcional
Valor devolvido ao pagador.

Cobrança via cartão

charge.card.*

charge.card.created
eventoopcional
Cobrança no cartão registrada na plataforma.
charge.card.authorized
ainda não disparadoopcional
Emissor autorizou o valor, ainda sem captura.
charge.card.paid
eventoopcional
Valor capturado. É o evento que dá baixa no pedido.
charge.card.failed
eventoopcional
Compra recusada pelo emissor ou pelo antifraude.
charge.card.canceled
eventoopcional
Autorização cancelada antes da captura.
charge.card.refunded
eventoopcional
Estorno concedido ao portador.
charge.card.charged_back
eventoopcional
Compra contestada pelo portador junto ao emissor.

Pagamento via Pix

payment.pix.*

payment.pix.created
eventoopcional
Pagamento Pix solicitado e na fila.
payment.pix.processing
eventoopcional
Enviado ao provedor, aguardando confirmação.
payment.pix.completed
ainda não disparadoopcional
Dinheiro creditado na conta de destino.
payment.pix.failed
eventoopcional
Recusado pelo provedor. O valor volta ao saldo disponível.
payment.pix.canceled
eventoopcional
Cancelado antes de entrar em processamento.

Pagamento via TED

payment.ted.*

payment.ted.created
eventoopcional
Pagamento por TED solicitado e na fila.
payment.ted.processing
eventoopcional
Enviado ao banco, aguardando confirmação.
payment.ted.completed
ainda não disparadoopcional
Dinheiro creditado na conta de destino.
payment.ted.failed
eventoopcional
Recusado pelo banco. O valor volta ao saldo disponível.
payment.ted.canceled
eventoopcional
Cancelado antes de entrar em processamento.

Disputa de Pix (MED)

dispute.pix.*

dispute.pix.opened
eventoopcional
Disputa aberta: o pagador contestou o Pix e o valor está bloqueado aguardando a defesa.
dispute.pix.message
eventoopcional
A plataforma respondeu no chat da disputa. O texto vem em data.message.
dispute.pix.won
eventoopcional
Disputa ganha: o MED foi negado e o valor bloqueado voltou para o saldo.
dispute.pix.lost
eventoopcional
Disputa perdida: o MED foi aceito e o valor voltou para o pagador.

O data traz object: "dispute", o charge_id da cobrança contestada, o status (open, under_review, won ou lost), o amount bloqueado em centavos, o reason e as datas opened_at, defense_deadline_at e resolved_at.

Nem todo MED passa pela etapa de defesa. Quando a instituição já devolve o Pix ao pagador sem aviso prévio, chega só o dispute.pix.lost, com arrived_resolved: true. A cobrança recebe junto o charge.pix.refunded ou o charge.pix.charged_back. Uma disputa ganha também pode virar perdida depois, se a instituição devolver o Pix mais tarde: trate lost como estado final mesmo depois de um won.

Eventos ainda não disparados

Os marcados como ainda não disparado existem no catálogo e podem ser assinados desde já: quando a plataforma passar a emiti-los, o endpoint começa a receber sem precisar mexer no cadastro. Até lá, acompanhe o estado por GET /v1/charges/{id} e GET /v1/payouts/{id}.

created e emitted

Na criação de uma cobrança, Pix e boleto disparam os dois: created marca o registro na plataforma, emitted marca o instrumento pronto para o pagador. Hoje os dois acontecem no mesmo instante, porque a cobrança só é devolvida depois que o adquirente entregou o QR code ou a linha digitável.

Assine created se você só quer registrar o pedido, e emitted se o gatilho é mandar o QR code ou o boleto para o cliente. Assinar os dois faz o endpoint receber duas entregas.

Cartão não tem charge.card.emitted: não há instrumento para entregar ao pagador. Use charge.card.created.

Formato da entrega

A entrega é um POST com corpo JSON. Os headers carregam o evento inteiro e também as partes soltas, para quem roteia a mensagem para uma fila antes de abrir o corpo.

Headers
X-Webhook-Event: charge.pix.paid
X-Webhook-Resource: charge
X-Webhook-Method: pix
X-Webhook-Delivery: 4c1d9f80-2b7e-4a11-8c30-9f2a1b3c4d5e
X-Webhook-Signature: sha256=...
Corpo: cobrança
{
  "id": "4c1d9f80-2b7e-4a11-8c30-9f2a1b3c4d5e",
  "object": "event",
  "event": "charge.pix.paid",
  "resource": "charge",
  "method": "pix",
  "action": "paid",
  "created_at": "2026-07-28T14:03:11.000Z",
  "data": {
    "object": "charge",
    "id": "8f1c2a90-1f4b-4f0e-9d33-5a2c1b7e9a10",
    "status": "paid",
    "method": "pix",
    "amount": 4990,
    "currency": "BRL",
    "reference": "pedido-1042",
    "created_at": "2026-07-28T14:00:00.000Z"
  }
}
Corpo: pagamento
{
  "id": "b2790cf1-55a3-4a7d-9a02-1f6d4e8c3b77",
  "object": "event",
  "event": "payment.ted.created",
  "resource": "payment",
  "method": "ted",
  "action": "created",
  "created_at": "2026-07-28T15:10:00.000Z",
  "data": {
    "object": "payment",
    "id": "9d55a0b2-3c11-4e77-b0a1-72f9c4d10e3a",
    "status": "pending",
    "method": "ted",
    "amount": 250000,
    "currency": "BRL",
    "reference": "lote-3",
    "created_at": "2026-07-28T15:10:00.000Z"
  }
}

Envelope

id
stringopcional
Id da entrega. É o mesmo valor de X-Webhook-Delivery.
event
stringopcional
Nome completo, no formato recurso.método.ação.
resource
stringopcional
Primeira parte do nome, solta.
method
stringopcional
Segunda parte do nome, solta.
action
stringopcional
Terceira parte do nome, solta. Dá para dar switch sem fatiar string.
created_at
stringopcional
Quando a entrega foi montada, em ISO 8601 UTC.
data
objetoopcional
A cobrança ou o pagamento, no mesmo formato do GET correspondente.
O valor vem em centavos inteiros, como no resto da API: 4990 são R$ 49,90. O status em data é o mesmo vocabulário de GET /v1/charges e GET /v1/payouts.

Como responder

Responda 2xx assim que receber, antes de processar. Todo o trabalho pesado, consulta a banco, envio de e-mail, deve acontecer depois da resposta: um handler lento vira timeout e a entrega é marcada como falha.

Trate as entregas como possivelmente repetidas. Use X-Webhook-Delivery para descartar o que já processou, ou torne o efeito idempotente pelo id em data.id.