Eventos de webhook
Todos os eventos que a MinePag envia, quando cada um acontece e os dados que ele traz.
Cada envio de webhook leva um evento. Escolha os eventos de cada endpoint em Desenvolvedores › Webhooks. Para receber e verificar os envios, veja Webhooks.
Formato do envio
O corpo é sempre um JSON com o mesmo envelope. Só o campo data muda de um evento para outro.
| Campo | Tipo | Descrição |
|---|---|---|
id | texto | Identificador único do evento. É o mesmo valor do cabeçalho webhook-id e se repete nas novas tentativas. Use para deduplicar. |
type | texto | Nome do evento, como order.paid. |
apiVersion | texto | Versão do formato dos dados. Hoje é 2026-10-01. |
createdAt | data e hora | Quando o fato aconteceu (ISO 8601, UTC). |
projectId | UUID | Loja que gerou o evento. |
data | objeto | Dados do evento. Os campos de cada um estão abaixo. |
Valores em centavos e datas em UTC
Todo valor em dinheiro é um inteiro em centavos de real (4990 = R$ 49,90) e a moeda é sempre BRL. As datas vêm em ISO 8601 com fuso UTC.
A ordem de chegada não é garantida
Eventos podem chegar fora de ordem, principalmente depois de novas tentativas. Compare createdAt ou consulte o recurso pela API antes de sobrescrever um estado mais novo com um mais antigo.
Resumo
| Evento | Grupo | Quando é enviado |
|---|---|---|
order.created | Pedidos | Um pedido foi criado no checkout da vitrine ou pela API, antes do pagamento. |
order.paid | Pedidos | O pagamento do pedido foi confirmado no gateway. A MinePag sempre consulta o gateway de novo antes de considerar o pedido pago. |
order.refunded | Pedidos | Parte ou todo o valor do pedido foi devolvido, pelo painel, pela API ou direto no gateway. |
order.cancelled | Pedidos | Um pedido que ainda aguardava pagamento foi cancelado pelo painel ou pela API (POST /orders/{orderId}/cancel) ou expirou sem pagamento. |
payment.confirmed | Pagamentos | Uma cobrança foi aprovada no gateway. |
payment.refunded | Pagamentos | Um valor foi devolvido ao comprador. |
payment.chargeback | Pagamentos | O comprador abriu uma contestação no banco ou na operadora do cartão. |
entitlement.granted | Acessos liberados | Um benefício foi liberado para o cliente (acesso liberado), depois de um pedido pago ou da renovação de uma assinatura. |
entitlement.revoked | Acessos liberados | Um acesso liberado foi revogado ou expirou. |
delivery.requested | Entregas | A MinePag pede a um serviço externo que faça uma entrega. |
delivery.completed | Entregas | Uma entrega foi concluída em qualquer canal: Minecraft, Discord, Telegram, serviço externo, e-mail, download ou chave de licença. |
delivery.failed | Entregas | Uma tentativa de entrega falhou. |
subscription.created | Assinaturas | Uma assinatura foi criada. |
subscription.renewed | Assinaturas | Um novo ciclo da assinatura foi pago. |
subscription.past_due | Assinaturas | A renovação não foi paga até o vencimento. |
subscription.cancelled | Assinaturas | O cliente ou a loja cancelou a assinatura. |
subscription.ended | Assinaturas | A assinatura foi encerrada e os acessos dela foram removidos. |
customer.created | Clientes | Um cliente novo foi cadastrado na loja, pelo checkout, pelo painel ou pela API. |
customer.deleted | Clientes | Os dados pessoais do cliente foram apagados a pedido dele (LGPD). |
Objetos
Pedido (order)
| Campo | Descrição |
|---|---|
id, number | Identificador e número sequencial do pedido na loja (o que aparece para o cliente). |
externalId | Referência externa do pedido, quando existir. |
status | pending (aguardando pagamento), paid (pago), completed (concluído), cancelled (cancelado), expired (expirado) ou refunded (reembolsado). |
paymentStatus | pending, paid, partially_refunded, refunded, failed, cancelled ou chargeback. |
subtotal, discountTotal, total, refundedTotal | Valores em centavos. |
paidAt | Quando o pagamento foi confirmado, ou null. |
items[] | Itens: produto, preço, nome, quantidade, valor unitário e total. |
status e paymentStatus trazem a situação efetiva no momento do evento, a mesma da API: pedido pending com o prazo de pagamento vencido vem como expired e cancelled.
Pagamento (payment)
| Campo | Descrição |
|---|---|
provider | Gateway: efi, mercadopago, pagseguro (PagBank) ou stripe. |
method | pix, boleto ou card. |
status | pending, authorized, confirmed, overdue, partially_refunded, refunded, failed, cancelled ou chargeback. |
amount, refundedAmount | Valor cobrado e valor já devolvido, em centavos. |
Acesso liberado (entitlement)
| Campo | Descrição |
|---|---|
benefitType | download, content_access, discord_role, telegram_access, minecraft_command, license_key, external_webhook, service ou custom. |
status | pending (pendente), active (ativo), revoked (revogado) ou expired (expirado). |
orderId, orderItemId, subscriptionId | Origem do acesso. Acessos de assinatura trazem subscriptionId. |
startsAt, endsAt | Início e fim do acesso. endsAt é null quando não há prazo. |
revokedAt, revokeReason | Preenchidos quando o acesso foi revogado ou expirou. |
Entrega (delivery)
| Campo | Descrição |
|---|---|
operationId | Identificador da entrega. É o {id} das rotas /deliveries/{id}. |
channel | minecraft, discord, telegram, webhook (serviço externo), email, download ou license_key. |
kind | grant (concessão), revoke (revogação) ou resend (reenvio). |
attempt | Número da tentativa, a partir de 1. |
quantity | Quantidade comprada do item. |
Assinatura (subscription)
| Campo | Descrição |
|---|---|
status | pending, trialing, active, past_due, paused, suspended, cancelled ou expired. |
currentPeriodStart, currentPeriodEnd | Ciclo atual. |
cancelAtPeriodEnd | true quando o cancelamento vale no fim do ciclo. |
Cliente (customer)
Os eventos trazem só id, email e name do cliente. Telefone e documento nunca vão no webhook; consulte GET /customers/{customerId} com uma chave secreta se precisar deles.
Pedidos
order.created
Um pedido foi criado no checkout da vitrine ou pela API, antes do pagamento.
- Pedidos gratuitos (total zero) recebem
order.createde, logo em seguida,order.paid. - Use este evento para registrar o pedido no seu sistema. Não libere nada antes de
order.paid.
{
"id": "0193b7c3-1000-7abc-8def-100000000000",
"type": "order.created",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"order": {
"id": "0193b7c2-5b2f-7d66-8e30-2b3c4d5e6f02",
"number": 1042,
"externalId": null,
"subtotal": 4990,
"discountTotal": 0,
"total": 4990,
"currency": "BRL",
"createdAt": "2026-10-12T14:30:00.000Z",
"items": [
{
"id": "0193b7c2-5b30-7d66-8e30-2b3c4d5e6f03",
"productId": "0193b7c2-3c10-7a44-9b1e-0f1a2b3c4d04",
"priceId": "0193b7c2-3c11-7a44-9b1e-0f1a2b3c4d05",
"name": "VIP Diamante",
"quantity": 1,
"unitAmount": 4990,
"totalAmount": 4990
}
],
"status": "pending",
"paymentStatus": "pending",
"refundedTotal": 0,
"paidAt": null
},
"customer": {
"id": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"email": "steve@exemplo.com.br",
"name": "Steve Silva"
}
}
}order.paid
O pagamento do pedido foi confirmado no gateway. A MinePag sempre consulta o gateway de novo antes de considerar o pedido pago.
- É o evento certo para liberar acesso em sistemas próprios. Os benefícios configurados no produto já são liberados pela MinePag.
- Chega uma vez por pedido. Se o mesmo pedido tiver mais de um pagamento, só o primeiro confirmado gera este evento.
- Pedido gratuito (total zero) não passa por gateway: é confirmado na hora e chega com
paymentStatus: "paid"epaidAtigual acreatedAt.
{
"id": "0193b7c3-1001-7abc-8def-100000000001",
"type": "order.paid",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"order": {
"id": "0193b7c2-5b2f-7d66-8e30-2b3c4d5e6f02",
"number": 1042,
"externalId": null,
"subtotal": 4990,
"discountTotal": 0,
"total": 4990,
"currency": "BRL",
"createdAt": "2026-10-12T14:30:00.000Z",
"items": [
{
"id": "0193b7c2-5b30-7d66-8e30-2b3c4d5e6f03",
"productId": "0193b7c2-3c10-7a44-9b1e-0f1a2b3c4d04",
"priceId": "0193b7c2-3c11-7a44-9b1e-0f1a2b3c4d05",
"name": "VIP Diamante",
"quantity": 1,
"unitAmount": 4990,
"totalAmount": 4990
}
],
"status": "paid",
"paymentStatus": "paid",
"refundedTotal": 0,
"paidAt": "2026-10-12T14:31:12.000Z"
},
"customer": {
"id": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"email": "steve@exemplo.com.br",
"name": "Steve Silva"
}
}
}order.refunded
Parte ou todo o valor do pedido foi devolvido, pelo painel, pela API ou direto no gateway.
fullyRefundeddiz se o pedido foi reembolsado por inteiro. No reembolso total,order.statuspassa arefundede os acessos marcados para revogar em reembolso são revogados (você recebeentitlement.revoked).refundtraz o reembolso mais recente concluído. Pode virnullquando o gateway informou o valor sem detalhar o reembolso.- Cada novo valor reembolsado gera um evento novo.
{
"id": "0193b7c3-1002-7abc-8def-100000000002",
"type": "order.refunded",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"order": {
"id": "0193b7c2-5b2f-7d66-8e30-2b3c4d5e6f02",
"number": 1042,
"externalId": null,
"subtotal": 4990,
"discountTotal": 0,
"total": 4990,
"currency": "BRL",
"createdAt": "2026-10-12T14:30:00.000Z",
"items": [
{
"id": "0193b7c2-5b30-7d66-8e30-2b3c4d5e6f03",
"productId": "0193b7c2-3c10-7a44-9b1e-0f1a2b3c4d04",
"priceId": "0193b7c2-3c11-7a44-9b1e-0f1a2b3c4d05",
"name": "VIP Diamante",
"quantity": 1,
"unitAmount": 4990,
"totalAmount": 4990
}
],
"status": "paid",
"paymentStatus": "partially_refunded",
"refundedTotal": 2000,
"paidAt": "2026-10-12T14:31:12.000Z"
},
"customer": {
"id": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"email": "steve@exemplo.com.br",
"name": "Steve Silva"
},
"refund": {
"id": "0193b7c2-6c50-7e77-9f41-3c4d5e6f7a08",
"paymentId": "0193b7c2-5b40-7d66-8e30-2b3c4d5e6f07",
"amount": 2000,
"reason": "Cliente pediu a troca por outro plano.",
"createdAt": "2026-10-13T10:05:00.000Z"
},
"fullyRefunded": false
}
}order.cancelled
Um pedido que ainda aguardava pagamento foi cancelado pelo painel ou pela API (POST /orders/{orderId}/cancel) ou expirou sem pagamento.
- Pedidos pagos não são cancelados: eles são reembolsados e geram
order.refunded. - No pedido que expirou,
order.statusvem comoexpired; no cancelado, comocancelled.
{
"id": "0193b7c3-1003-7abc-8def-100000000003",
"type": "order.cancelled",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"order": {
"id": "0193b7c2-5b2f-7d66-8e30-2b3c4d5e6f02",
"number": 1042,
"externalId": null,
"subtotal": 4990,
"discountTotal": 0,
"total": 4990,
"currency": "BRL",
"createdAt": "2026-10-12T14:30:00.000Z",
"items": [
{
"id": "0193b7c2-5b30-7d66-8e30-2b3c4d5e6f03",
"productId": "0193b7c2-3c10-7a44-9b1e-0f1a2b3c4d04",
"priceId": "0193b7c2-3c11-7a44-9b1e-0f1a2b3c4d05",
"name": "VIP Diamante",
"quantity": 1,
"unitAmount": 4990,
"totalAmount": 4990
}
],
"status": "cancelled",
"paymentStatus": "cancelled",
"refundedTotal": 0,
"paidAt": null
},
"customer": {
"id": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"email": "steve@exemplo.com.br",
"name": "Steve Silva"
}
}
}Pagamentos
payment.confirmed
Uma cobrança foi aprovada no gateway.
- Chega antes de
order.paidpara o mesmo pedido. Para saber se o pedido está pago, prefiraorder.paid.
{
"id": "0193b7c3-1004-7abc-8def-100000000004",
"type": "payment.confirmed",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"payment": {
"id": "0193b7c2-5b40-7d66-8e30-2b3c4d5e6f07",
"orderId": "0193b7c2-5b2f-7d66-8e30-2b3c4d5e6f02",
"provider": "efi",
"method": "pix",
"status": "confirmed",
"amount": 4990,
"refundedAmount": 0,
"currency": "BRL",
"paidAt": "2026-10-12T14:31:12.000Z"
}
}
}payment.refunded
Um valor foi devolvido ao comprador.
payment.refundedAmounté o total já devolvido daquele pagamento;refund.amounté o valor deste reembolso.
{
"id": "0193b7c3-1005-7abc-8def-100000000005",
"type": "payment.refunded",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"payment": {
"id": "0193b7c2-5b40-7d66-8e30-2b3c4d5e6f07",
"orderId": "0193b7c2-5b2f-7d66-8e30-2b3c4d5e6f02",
"provider": "efi",
"method": "pix",
"status": "partially_refunded",
"amount": 4990,
"refundedAmount": 2000,
"currency": "BRL",
"paidAt": "2026-10-12T14:31:12.000Z"
},
"refund": {
"id": "0193b7c2-6c50-7e77-9f41-3c4d5e6f7a08",
"paymentId": "0193b7c2-5b40-7d66-8e30-2b3c4d5e6f07",
"amount": 2000,
"reason": "Cliente pediu a troca por outro plano.",
"createdAt": "2026-10-13T10:05:00.000Z"
}
}
}payment.chargeback
O comprador abriu uma contestação no banco ou na operadora do cartão.
- Os acessos marcados para revogar em contestação são revogados na hora, e você recebe
entitlement.revokedpara cada um.
{
"id": "0193b7c3-1006-7abc-8def-100000000006",
"type": "payment.chargeback",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"payment": {
"id": "0193b7c2-5b40-7d66-8e30-2b3c4d5e6f07",
"orderId": "0193b7c2-5b2f-7d66-8e30-2b3c4d5e6f02",
"provider": "stripe",
"method": "card",
"status": "chargeback",
"amount": 4990,
"refundedAmount": 0,
"currency": "BRL",
"paidAt": "2026-10-12T14:31:12.000Z"
}
}
}Acessos liberados
entitlement.granted
Um benefício foi liberado para o cliente (acesso liberado), depois de um pedido pago ou da renovação de uma assinatura.
- Benefícios com prazo trazem
endsAt; os sem prazo trazemnull.
{
"id": "0193b7c3-1007-7abc-8def-100000000007",
"type": "entitlement.granted",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"entitlement": {
"id": "0193b7c2-7d60-7f88-a052-4d5e6f7a8b09",
"customerId": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"benefitId": "0193b7c2-3c20-7a44-9b1e-0f1a2b3c4d0a",
"benefitType": "minecraft_command",
"productId": "0193b7c2-3c10-7a44-9b1e-0f1a2b3c4d04",
"orderId": "0193b7c2-5b2f-7d66-8e30-2b3c4d5e6f02",
"orderItemId": "0193b7c2-5b30-7d66-8e30-2b3c4d5e6f03",
"subscriptionId": null,
"status": "active",
"startsAt": "2026-10-12T14:31:12.000Z",
"endsAt": "2026-11-11T14:31:12.000Z",
"revokedAt": null,
"revokeReason": null
},
"customer": {
"id": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"email": "steve@exemplo.com.br",
"name": "Steve Silva"
}
}
}entitlement.revoked
Um acesso liberado foi revogado ou expirou.
revokeReasondiz o motivo da revogação:refund(reembolso),chargeback(contestação),cancellation(cancelamento),subscription_ended(fim da assinatura),subscription_paused(assinatura pausada),expiration(prazo vencido) oumanual(revogado no painel).- Quando o acesso chega ao fim do prazo (
endsAt), o evento trazstatus: "expired"erevokeReason: "expiration", comrevokedAtemnull.
{
"id": "0193b7c3-1008-7abc-8def-100000000008",
"type": "entitlement.revoked",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"entitlement": {
"id": "0193b7c2-7d60-7f88-a052-4d5e6f7a8b09",
"customerId": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"benefitId": "0193b7c2-3c20-7a44-9b1e-0f1a2b3c4d0a",
"benefitType": "minecraft_command",
"productId": "0193b7c2-3c10-7a44-9b1e-0f1a2b3c4d04",
"orderId": "0193b7c2-5b2f-7d66-8e30-2b3c4d5e6f02",
"orderItemId": "0193b7c2-5b30-7d66-8e30-2b3c4d5e6f03",
"subscriptionId": null,
"status": "revoked",
"startsAt": "2026-10-12T14:31:12.000Z",
"endsAt": "2026-11-11T14:31:12.000Z",
"revokedAt": "2026-10-13T10:05:00.000Z",
"revokeReason": "refund"
},
"customer": {
"id": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"email": "steve@exemplo.com.br",
"name": "Steve Silva"
}
}
}Entregas
delivery.requested
A MinePag pede a um serviço externo que faça uma entrega.
- Só o endpoint do tipo Serviço externo de entrega ligado ao benefício recebe este evento, mesmo que outros endpoints tenham marcado
delivery.requested. - Cada tentativa é um evento novo, com
webhook-idpróprio edelivery.attemptmaior. Deduplique pelodelivery.operationId. - Responda com 2xx assim que receber e confirme depois pela API:
POST /deliveries/{operationId}/completeouPOST /deliveries/{operationId}/fail. Veja Serviços externos. benefit.configé a configuração do benefício como o lojista salvou no produto.
{
"id": "0193b7c3-1009-7abc-8def-100000000009",
"type": "delivery.requested",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"delivery": {
"operationId": "0193b7c2-8e70-7099-b163-5e6f7a8b9c0b",
"entitlementId": "0193b7c2-7d60-7f88-a052-4d5e6f7a8b09",
"channel": "webhook",
"kind": "grant",
"attempt": 1,
"orderId": "0193b7c2-5b2f-7d66-8e30-2b3c4d5e6f02",
"orderItemId": "0193b7c2-5b30-7d66-8e30-2b3c4d5e6f03",
"productId": "0193b7c2-3c10-7a44-9b1e-0f1a2b3c4d04",
"benefitId": "0193b7c2-3c20-7a44-9b1e-0f1a2b3c4d0a",
"quantity": 1
},
"customer": {
"id": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"email": "steve@exemplo.com.br",
"name": "Steve Silva"
},
"benefit": {
"id": "0193b7c2-3c20-7a44-9b1e-0f1a2b3c4d0a",
"type": "external_webhook",
"config": {
"endpointId": "0193b7c2-1f00-7c22-8a0b-7c8d9e0f1a0c"
}
}
}
}delivery.completed
Uma entrega foi concluída em qualquer canal: Minecraft, Discord, Telegram, serviço externo, e-mail, download ou chave de licença.
externalReferenceedownloadUrlvêm preenchidos quando o serviço externo os informou na confirmação.
{
"id": "0193b7c3-100a-7abc-8def-10000000000a",
"type": "delivery.completed",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"delivery": {
"operationId": "0193b7c2-8e70-7099-b163-5e6f7a8b9c0b",
"entitlementId": "0193b7c2-7d60-7f88-a052-4d5e6f7a8b09",
"channel": "webhook",
"kind": "grant",
"attempt": 1,
"orderId": "0193b7c2-5b2f-7d66-8e30-2b3c4d5e6f02",
"orderItemId": "0193b7c2-5b30-7d66-8e30-2b3c4d5e6f03",
"productId": "0193b7c2-3c10-7a44-9b1e-0f1a2b3c4d04",
"benefitId": "0193b7c2-3c20-7a44-9b1e-0f1a2b3c4d0a",
"quantity": 1
},
"completedAt": "2026-10-12T14:31:40.000Z",
"externalReference": "pack-licenca-8812",
"downloadUrl": "https://packs.exemplo.com.br/download/8812"
}
}delivery.failed
Uma tentativa de entrega falhou.
willRetry: trueindica que a MinePag vai tentar de novo sozinha. Comfalse, as tentativas acabaram e a entrega precisa de ação no painel (Entregas).error.codeé um código curto, estável e em inglês;error.messageexplica o problema em português.
{
"id": "0193b7c3-100b-7abc-8def-10000000000b",
"type": "delivery.failed",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"delivery": {
"operationId": "0193b7c2-8e70-7099-b163-5e6f7a8b9c0b",
"entitlementId": "0193b7c2-7d60-7f88-a052-4d5e6f7a8b09",
"channel": "discord",
"kind": "grant",
"attempt": 2,
"orderId": "0193b7c2-5b2f-7d66-8e30-2b3c4d5e6f02",
"orderItemId": "0193b7c2-5b30-7d66-8e30-2b3c4d5e6f03",
"productId": "0193b7c2-3c10-7a44-9b1e-0f1a2b3c4d04",
"benefitId": "0193b7c2-3c20-7a44-9b1e-0f1a2b3c4d0a",
"quantity": 1
},
"failedAt": "2026-10-12T14:40:00.000Z",
"error": {
"code": "discord_unavailable",
"message": "O Discord está indisponível ou limitou as requisições. Uma nova tentativa foi agendada."
},
"willRetry": true
}
}Assinaturas
subscription.created
Uma assinatura foi criada.
{
"id": "0193b7c3-100c-7abc-8def-10000000000c",
"type": "subscription.created",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"subscription": {
"id": "0193b7c2-9f80-71aa-8274-6f7a8b9c0d0d",
"customerId": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"productId": "0193b7c2-3c30-7a44-9b1e-0f1a2b3c4d0e",
"priceId": "0193b7c2-3c31-7a44-9b1e-0f1a2b3c4d0f",
"status": "active",
"currentPeriodStart": "2026-10-12T14:31:12.000Z",
"currentPeriodEnd": "2026-11-12T14:31:12.000Z",
"cancelAtPeriodEnd": false
},
"customer": {
"id": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"email": "steve@exemplo.com.br",
"name": "Steve Silva"
}
}
}subscription.renewed
Um novo ciclo da assinatura foi pago.
currentPeriodStartecurrentPeriodEndjá trazem o ciclo novo.
{
"id": "0193b7c3-100d-7abc-8def-10000000000d",
"type": "subscription.renewed",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"subscription": {
"id": "0193b7c2-9f80-71aa-8274-6f7a8b9c0d0d",
"customerId": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"productId": "0193b7c2-3c30-7a44-9b1e-0f1a2b3c4d0e",
"priceId": "0193b7c2-3c31-7a44-9b1e-0f1a2b3c4d0f",
"status": "active",
"currentPeriodStart": "2026-11-12T14:31:12.000Z",
"currentPeriodEnd": "2026-12-12T14:31:12.000Z",
"cancelAtPeriodEnd": false
},
"customer": {
"id": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"email": "steve@exemplo.com.br",
"name": "Steve Silva"
}
}
}subscription.past_due
A renovação não foi paga até o vencimento.
- Os acessos continuam até a assinatura ser encerrada. Use o evento para avisar o cliente.
{
"id": "0193b7c3-100e-7abc-8def-10000000000e",
"type": "subscription.past_due",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"subscription": {
"id": "0193b7c2-9f80-71aa-8274-6f7a8b9c0d0d",
"customerId": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"productId": "0193b7c2-3c30-7a44-9b1e-0f1a2b3c4d0e",
"priceId": "0193b7c2-3c31-7a44-9b1e-0f1a2b3c4d0f",
"status": "past_due",
"currentPeriodStart": "2026-10-12T14:31:12.000Z",
"currentPeriodEnd": "2026-11-12T14:31:12.000Z",
"cancelAtPeriodEnd": false
},
"customer": {
"id": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"email": "steve@exemplo.com.br",
"name": "Steve Silva"
}
}
}subscription.cancelled
O cliente ou a loja cancelou a assinatura.
- Quando o cancelamento vale no fim do ciclo,
cancelAtPeriodEndvemtruee os acessos seguem atécurrentPeriodEnd.
{
"id": "0193b7c3-100f-7abc-8def-10000000000f",
"type": "subscription.cancelled",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"subscription": {
"id": "0193b7c2-9f80-71aa-8274-6f7a8b9c0d0d",
"customerId": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"productId": "0193b7c2-3c30-7a44-9b1e-0f1a2b3c4d0e",
"priceId": "0193b7c2-3c31-7a44-9b1e-0f1a2b3c4d0f",
"status": "cancelled",
"currentPeriodStart": "2026-10-12T14:31:12.000Z",
"currentPeriodEnd": "2026-11-12T14:31:12.000Z",
"cancelAtPeriodEnd": true
},
"customer": {
"id": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"email": "steve@exemplo.com.br",
"name": "Steve Silva"
}
}
}subscription.ended
A assinatura foi encerrada e os acessos dela foram removidos.
- Chega junto com
entitlement.revoked(motivosubscription_ended) para cada acesso da assinatura.
{
"id": "0193b7c3-1010-7abc-8def-100000000010",
"type": "subscription.ended",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"subscription": {
"id": "0193b7c2-9f80-71aa-8274-6f7a8b9c0d0d",
"customerId": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"productId": "0193b7c2-3c30-7a44-9b1e-0f1a2b3c4d0e",
"priceId": "0193b7c2-3c31-7a44-9b1e-0f1a2b3c4d0f",
"status": "expired",
"currentPeriodStart": "2026-10-12T14:31:12.000Z",
"currentPeriodEnd": "2026-11-12T14:31:12.000Z",
"cancelAtPeriodEnd": false
},
"customer": {
"id": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"email": "steve@exemplo.com.br",
"name": "Steve Silva"
}
}
}Clientes
customer.created
Um cliente novo foi cadastrado na loja, pelo checkout, pelo painel ou pela API.
- Atualizar um cliente que já existe (mesmo e-mail na loja) não gera evento.
{
"id": "0193b7c3-1011-7abc-8def-100000000011",
"type": "customer.created",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"customer": {
"id": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"email": "steve@exemplo.com.br",
"name": "Steve Silva",
"createdAt": "2026-10-12T14:29:58.000Z"
}
}
}customer.deleted
Os dados pessoais do cliente foram apagados a pedido dele, pela área do cliente ou pela equipe da loja no painel (LGPD).
- O evento traz só o
iddo cliente e a data da exclusão. Apague a cópia dos dados desse cliente no seu sistema. - Pedidos e pagamentos continuam existindo na MinePag, sem nome, e-mail nem respostas do checkout. As assinaturas do cliente são canceladas e os acessos liberados são revogados (com os eventos
subscription.*eentitlement.revokedde sempre).
{
"id": "0193b7c3-1011-7abc-8def-100000000012",
"type": "customer.deleted",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T15:02:40.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"customer": {
"id": "0193b7c2-2a00-7b33-8c0d-9e0f1a2b3c06",
"deletedAt": "2026-10-12T15:02:40.000Z"
}
}
}Evento de teste
O botão Enviar evento de teste, na página do endpoint, envia um evento webhook.test assinado como um evento real. Ele não fica no histórico, não é reenviado e não faz parte do catálogo, então não aparece na lista de eventos para escolher.
{
"id": "test_6f1c2d3e-4b5a-4c7d-8e9f-0a1b2c3d4e5f",
"type": "webhook.test",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-12T14:31:13.000Z",
"projectId": "0193b7c2-4a1e-7c55-9d2f-1a2b3c4d5e01",
"data": {
"message": "Evento de teste enviado pelo painel da MinePag. Ele não representa nenhuma venda."
}
}Trate tipos desconhecidos respondendo 2xx e ignorando o evento: assim seu endpoint continua funcionando quando a MinePag lançar eventos novos.