{
"id": "evt_01k2p9r1t3v5x7z9b1d3f5h7k9",
"type": "med.rejected",
"created_at": "2026-09-19T11:02:55+00:00",
"data": {
"med": {
"object": "med",
"id": "med_01k2m4n5r3t7v9x1z3b5d7f9h1",
"status": "rejected",
"reason": "Não reconheço esta compra no meu extrato.",
"held_amount": 10000,
"currency": "BRL",
"end_to_end_id": "E12345678202608041200",
"purchase_date": "2026-08-04",
"opened_by": "customer",
"claimant": {
"name": "Maria Souza"
},
"evidence": [
{
"id": 42,
"side": "seller",
"filename": "comprovante-de-entrega.png",
"mime": "image/png",
"size": 96144,
"sent_at": "2026-09-17T09:10:02+00:00"
}
],
"events": [
{
"type": "opened",
"at": "2026-09-16T13:22:40+00:00",
"held_cents": 10000,
"charge_code": "ch_01k1y6r6m6q2x0p3d9v4t7c8n2",
"evidence_count": 0
},
{
"type": "seller_defence",
"at": "2026-09-17T09:10:02+00:00",
"files": 1
},
{
"type": "rejected",
"at": "2026-09-19T11:02:54+00:00",
"released_cents": 10000
}
],
"opened_at": "2026-09-16T13:22:40+00:00",
"defence_deadline": "2026-09-23T13:22:40+00:00",
"responded_at": "2026-09-17T09:10:02+00:00",
"decided_at": "2026-09-19T11:02:54+00:00",
"decision_note": "Entrega comprovada ao titular do Pix.",
"resolved_by": "platform",
"refund": null
},
"charge": {
"object": "charge",
"id": "ch_01k1y6r6m6q2x0p3d9v4t7c8n2",
"status": "paid",
"payment_method": "pix",
"amount": 10000,
"currency": "BRL",
"platform_fee": 798,
"net_amount": 9103,
"refunded_amount": 0,
"description": "Curso de Vue 3",
"reference": "pedido-1042",
"metadata": {
"carrinho": "cart_88f21"
},
"customer": {
"name": "João Comprador",
"email": "joao@exemplo.com.br",
"document": "111.***.***-35"
},
"pix": {
"qr_code": "00020101021226840014br.gov.bcb.pix2562qrcodepix.example.com/v2/abcd1234",
"expires_at": "2026-08-05T14:00:00+00:00",
"end_to_end_id": "E12345678202608041200"
},
"created_at": "2026-08-04T14:00:00+00:00",
"paid_at": "2026-08-04T14:03:11+00:00",
"expired_at": null,
"refunded_at": null
}
}
}Eventos de contestação (MED)
med.rejected
Enviado quando a contestação de Pix é indeferida. O valor retido volta ao saldo e a venda segue de pé.
WEBHOOK
med.rejected
{
"id": "evt_01k2p9r1t3v5x7z9b1d3f5h7k9",
"type": "med.rejected",
"created_at": "2026-09-19T11:02:55+00:00",
"data": {
"med": {
"object": "med",
"id": "med_01k2m4n5r3t7v9x1z3b5d7f9h1",
"status": "rejected",
"reason": "Não reconheço esta compra no meu extrato.",
"held_amount": 10000,
"currency": "BRL",
"end_to_end_id": "E12345678202608041200",
"purchase_date": "2026-08-04",
"opened_by": "customer",
"claimant": {
"name": "Maria Souza"
},
"evidence": [
{
"id": 42,
"side": "seller",
"filename": "comprovante-de-entrega.png",
"mime": "image/png",
"size": 96144,
"sent_at": "2026-09-17T09:10:02+00:00"
}
],
"events": [
{
"type": "opened",
"at": "2026-09-16T13:22:40+00:00",
"held_cents": 10000,
"charge_code": "ch_01k1y6r6m6q2x0p3d9v4t7c8n2",
"evidence_count": 0
},
{
"type": "seller_defence",
"at": "2026-09-17T09:10:02+00:00",
"files": 1
},
{
"type": "rejected",
"at": "2026-09-19T11:02:54+00:00",
"released_cents": 10000
}
],
"opened_at": "2026-09-16T13:22:40+00:00",
"defence_deadline": "2026-09-23T13:22:40+00:00",
"responded_at": "2026-09-17T09:10:02+00:00",
"decided_at": "2026-09-19T11:02:54+00:00",
"decision_note": "Entrega comprovada ao titular do Pix.",
"resolved_by": "platform",
"refund": null
},
"charge": {
"object": "charge",
"id": "ch_01k1y6r6m6q2x0p3d9v4t7c8n2",
"status": "paid",
"payment_method": "pix",
"amount": 10000,
"currency": "BRL",
"platform_fee": 798,
"net_amount": 9103,
"refunded_amount": 0,
"description": "Curso de Vue 3",
"reference": "pedido-1042",
"metadata": {
"carrinho": "cart_88f21"
},
"customer": {
"name": "João Comprador",
"email": "joao@exemplo.com.br",
"document": "111.***.***-35"
},
"pix": {
"qr_code": "00020101021226840014br.gov.bcb.pix2562qrcodepix.example.com/v2/abcd1234",
"expires_at": "2026-08-05T14:00:00+00:00",
"end_to_end_id": "E12345678202608041200"
},
"created_at": "2026-08-04T14:00:00+00:00",
"paid_at": "2026-08-04T14:03:11+00:00",
"expired_at": null,
"refunded_at": null
}
}
}rejected é a contestação indeferida — ou seja, você ganhou. Como em
med.approved, o adjetivo descreve a decisão sobre a
contestação, não sobre a sua loja.med.opened mandou segurar: a
entrega pode seguir. O valor retido voltou ao saldo disponível.
data.charge continua paid, e refund vem null porque não houve estorno.
Confira a assinatura antes de agir. Ver Verificar a assinatura.
Este desfecho é final
Não existe reabertura: a trava é de banco, uma contestação por venda, para sempre. Recebido este evento, a venda não volta a ser contestada — você pode encerrar o caso no seu lado sem deixar um estado pendente esperando por um evento que não vem.Headers
Assinatura da entrega, no formato t=<timestamp>,v1=<hmac>, onde
hmac é HMAC-SHA256("<timestamp>.<corpo bruto>", <segredo>).
Duas regras ao conferir:
- Calcule sobre o corpo bruto, antes de desserializar. Reserializar muda espaçamento e ordem, e o HMAC deixa de bater.
- Recuse timestamps com mais de 5 minutos. É isso que impede
alguém que interceptou uma entrega de
charge.paidde reenviá-la quantas vezes quiser, com assinatura perfeitamente válida.
Pattern:
^t=[0-9]+,v1=[0-9a-f]{64}$Tipo do evento, repetido fora do corpo. Redundante com o payload e útil mesmo assim: permite filtrar no seu log sem desserializar nada.
Identificador da entrega. Cite-o ao abrir um chamado - é por ele que localizamos a tentativa, a resposta do seu servidor e o horário.
Body
application/json
Identificador do evento. Estável entre as retentativas da mesma entrega - use-o para deduplicar do seu lado.
Example:
"evt_01k1y6r7z2m4n6p8q0r2s4t6u8"
Available options:
charge.paid, charge.failed, charge.in_analysis, charge.refunded, charge.chargedback, withdrawal.paid, med.opened, med.approved, med.rejected Show child attributes
Show child attributes
Response
Recebido.