{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"occurred_at": "2023-11-07T05:31:56Z",
"club_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"data": {
"purchase": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"student": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"email": "jsmith@example.com",
"created_at": "2023-11-07T05:31:56Z"
},
"product": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"subscription_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"external_transaction_id": "<string>",
"external_product_id": "<string>",
"external_offer_id": "<string>",
"amount_cents": 123,
"currency": "<string>",
"paid_at": "2023-11-07T05:31:56Z",
"refunded_at": "2023-11-07T05:31:56Z"
}
}
}Eventos de webhook
purchase.paid e purchase.refunded
Uma compra de produto mapeado foi aprovada, ou foi reembolsada ou contestada.
O acesso que a compra abre chega à parte, como
access.granted — uma compra pode abrir
várias entregas, e cada uma é um evento de acesso. Em purchase.refunded, o
data.purchase.status distingue reembolso (refunded) de contestação (chargeback).
{
"id": "3e5a7c9b-1d2f-4b4a-8c6e-0a2c4e6b8d1f",
"type": "purchase.paid",
"occurred_at": "2026-09-14T13:02:41Z",
"club_id": "7a1e9c4b-5d3f-4e2a-8b6c-1f0d9e8a7b65",
"data": {
"purchase": {
"id": "8a0c2e4b-6d1f-4a3c-b5e7-1f3a5c7e9b0d",
"status": "paid",
"student": {
"id": "c3d5e7f9-1a2b-4c6d-8e0f-a1b2c3d4e5f6",
"name": "Maria Silva",
"email": "maria.silva@example.com",
"created_at": "2026-09-14T13:02:40Z"
},
"product": {
"id": "6f8a0c2e-4b1d-4f3a-a5c7-9e1b3d5f7a9c",
"name": "Curso de Marketing"
},
"subscription_id": null,
"platform": "hotmart",
"external_transaction_id": "HP17264981530123",
"external_product_id": "4829173",
"external_offer_id": "k7x2p9qa",
"amount_cents": 19700,
"currency": "BRL",
"paid_at": "2026-09-14T13:01:58Z",
"refunded_at": null
}
}
}
amount_cents é em centavos (19700 é R$ 197,00), e nulo quando a plataforma não
informou o valor.purchase.paid: uma compra de produto mapeado foi aprovada — uma vez por
compra, mesmo que a plataforma reenvie. purchase.refunded: reembolso ou
contestação (purchase.status diz qual).
O tipo de uma mensagem entregue — os eventos, mais o webhook.test do botão de teste.
Available options:
student.created, student.updated, student.removed, access.granted, access.revoked, access.extended, access.shortened, access.restored, access.moved, purchase.paid, purchase.refunded, subscription.past_due, subscription.canceled, lesson.completed, course.completed, webhook.test Show child attributes
Show child attributes