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.
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 creditadoRecursos
chargeentradaopcional | Cobrança: dinheiro entrando, pago por um cliente seu. |
paymentsaídaopcional | Pagamento: dinheiro saindo do seu saldo para uma conta externa. |
disputecontestaçãoopcional | Disputa: um MED aberto contra uma cobrança Pix, com defesa e desfecho. |
Métodos
pixcharge, payment, disputeopcional | Pix, nos dois sentidos. |
boletochargeopcional | Boleto bancário. |
cardchargeopcional | Cartão de crédito. |
tedpaymentopcional | TED. |
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.createdeventoopcional | Cobrança Pix registrada na plataforma. |
charge.pix.emittedeventoopcional | QR code e copia e cola disponíveis para o pagador. |
charge.pix.paideventoopcional | Pix liquidado. É o evento que dá baixa no pedido. |
charge.pix.expiredainda não disparadoopcional | QR code venceu sem pagamento. |
charge.pix.failedeventoopcional | A liquidação foi tentada e recusada pelo provedor. |
charge.pix.canceledeventoopcional | Cobrança cancelada antes do pagamento. |
charge.pix.refundedeventoopcional | Valor devolvido ao pagador. |
charge.pix.infractioneventoopcional | Infração aberta no MED: o pagador contestou o Pix e o desfecho está em aberto. |
charge.pix.charged_backeventoopcional | Devolução determinada pelo mecanismo especial de devolução (MED). |
Cobrança via boleto
charge.boleto.*
charge.boleto.createdeventoopcional | Cobrança por boleto registrada na plataforma. |
charge.boleto.emittedeventoopcional | Boleto emitido: linha digitável e PDF disponíveis. |
charge.boleto.paideventoopcional | Boleto compensado pelo banco. |
charge.boleto.expiredainda não disparadoopcional | Boleto venceu sem compensação. |
charge.boleto.failedeventoopcional | O banco recusou o registro ou a compensação. |
charge.boleto.canceledeventoopcional | Boleto baixado antes do pagamento. |
charge.boleto.refundedeventoopcional | Valor devolvido ao pagador. |
Cobrança via cartão
charge.card.*
charge.card.createdeventoopcional | Cobrança no cartão registrada na plataforma. |
charge.card.authorizedainda não disparadoopcional | Emissor autorizou o valor, ainda sem captura. |
charge.card.paideventoopcional | Valor capturado. É o evento que dá baixa no pedido. |
charge.card.failedeventoopcional | Compra recusada pelo emissor ou pelo antifraude. |
charge.card.canceledeventoopcional | Autorização cancelada antes da captura. |
charge.card.refundedeventoopcional | Estorno concedido ao portador. |
charge.card.charged_backeventoopcional | Compra contestada pelo portador junto ao emissor. |
Pagamento via Pix
payment.pix.*
payment.pix.createdeventoopcional | Pagamento Pix solicitado e na fila. |
payment.pix.processingeventoopcional | Enviado ao provedor, aguardando confirmação. |
payment.pix.completedainda não disparadoopcional | Dinheiro creditado na conta de destino. |
payment.pix.failedeventoopcional | Recusado pelo provedor. O valor volta ao saldo disponível. |
payment.pix.canceledeventoopcional | Cancelado antes de entrar em processamento. |
Pagamento via TED
payment.ted.*
payment.ted.createdeventoopcional | Pagamento por TED solicitado e na fila. |
payment.ted.processingeventoopcional | Enviado ao banco, aguardando confirmação. |
payment.ted.completedainda não disparadoopcional | Dinheiro creditado na conta de destino. |
payment.ted.failedeventoopcional | Recusado pelo banco. O valor volta ao saldo disponível. |
payment.ted.canceledeventoopcional | Cancelado antes de entrar em processamento. |
Disputa de Pix (MED)
dispute.pix.*
dispute.pix.openedeventoopcional | Disputa aberta: o pagador contestou o Pix e o valor está bloqueado aguardando a defesa. |
dispute.pix.messageeventoopcional | A plataforma respondeu no chat da disputa. O texto vem em data.message. |
dispute.pix.woneventoopcional | Disputa ganha: o MED foi negado e o valor bloqueado voltou para o saldo. |
dispute.pix.losteventoopcional | 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.
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.
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.
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=...{
"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"
}
}{
"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
idstringopcional | Id da entrega. É o mesmo valor de X-Webhook-Delivery. |
eventstringopcional | Nome completo, no formato recurso.método.ação. |
resourcestringopcional | Primeira parte do nome, solta. |
methodstringopcional | Segunda parte do nome, solta. |
actionstringopcional | Terceira parte do nome, solta. Dá para dar switch sem fatiar string. |
created_atstringopcional | Quando a entrega foi montada, em ISO 8601 UTC. |
dataobjetoopcional | A cobrança ou o pagamento, no mesmo formato do GET correspondente. |
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.