Desenvolvedores

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.

CampoTipoDescrição
idtextoIdentificador único do evento. É o mesmo valor do cabeçalho webhook-id e se repete nas novas tentativas. Use para deduplicar.
typetextoNome do evento, como order.paid.
apiVersiontextoVersão do formato dos dados. Hoje é 2026-10-01.
createdAtdata e horaQuando o fato aconteceu (ISO 8601, UTC).
projectIdUUIDLoja que gerou o evento.
dataobjetoDados 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

EventoGrupoQuando é enviado
order.createdPedidosUm pedido foi criado no checkout da vitrine ou pela API, antes do pagamento.
order.paidPedidosO pagamento do pedido foi confirmado no gateway. A MinePag sempre consulta o gateway de novo antes de considerar o pedido pago.
order.refundedPedidosParte ou todo o valor do pedido foi devolvido, pelo painel, pela API ou direto no gateway.
order.cancelledPedidosUm pedido que ainda aguardava pagamento foi cancelado pelo painel ou pela API (POST /orders/{orderId}/cancel) ou expirou sem pagamento.
payment.confirmedPagamentosUma cobrança foi aprovada no gateway.
payment.refundedPagamentosUm valor foi devolvido ao comprador.
payment.chargebackPagamentosO comprador abriu uma contestação no banco ou na operadora do cartão.
entitlement.grantedAcessos liberadosUm benefício foi liberado para o cliente (acesso liberado), depois de um pedido pago ou da renovação de uma assinatura.
entitlement.revokedAcessos liberadosUm acesso liberado foi revogado ou expirou.
delivery.requestedEntregasA MinePag pede a um serviço externo que faça uma entrega.
delivery.completedEntregasUma entrega foi concluída em qualquer canal: Minecraft, Discord, Telegram, serviço externo, e-mail, download ou chave de licença.
delivery.failedEntregasUma tentativa de entrega falhou.
subscription.createdAssinaturasUma assinatura foi criada.
subscription.renewedAssinaturasUm novo ciclo da assinatura foi pago.
subscription.past_dueAssinaturasA renovação não foi paga até o vencimento.
subscription.cancelledAssinaturasO cliente ou a loja cancelou a assinatura.
subscription.endedAssinaturasA assinatura foi encerrada e os acessos dela foram removidos.
customer.createdClientesUm cliente novo foi cadastrado na loja, pelo checkout, pelo painel ou pela API.
customer.deletedClientesOs dados pessoais do cliente foram apagados a pedido dele (LGPD).

Objetos

Pedido (order)

CampoDescrição
id, numberIdentificador e número sequencial do pedido na loja (o que aparece para o cliente).
externalIdReferência externa do pedido, quando existir.
statuspending (aguardando pagamento), paid (pago), completed (concluído), cancelled (cancelado), expired (expirado) ou refunded (reembolsado).
paymentStatuspending, paid, partially_refunded, refunded, failed, cancelled ou chargeback.
subtotal, discountTotal, total, refundedTotalValores em centavos.
paidAtQuando 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)

CampoDescrição
providerGateway: efi, mercadopago, pagseguro (PagBank) ou stripe.
methodpix, boleto ou card.
statuspending, authorized, confirmed, overdue, partially_refunded, refunded, failed, cancelled ou chargeback.
amount, refundedAmountValor cobrado e valor já devolvido, em centavos.

Acesso liberado (entitlement)

CampoDescrição
benefitTypedownload, content_access, discord_role, telegram_access, minecraft_command, license_key, external_webhook, service ou custom.
statuspending (pendente), active (ativo), revoked (revogado) ou expired (expirado).
orderId, orderItemId, subscriptionIdOrigem do acesso. Acessos de assinatura trazem subscriptionId.
startsAt, endsAtInício e fim do acesso. endsAt é null quando não há prazo.
revokedAt, revokeReasonPreenchidos quando o acesso foi revogado ou expirou.

Entrega (delivery)

CampoDescrição
operationIdIdentificador da entrega. É o {id} das rotas /deliveries/{id}.
channelminecraft, discord, telegram, webhook (serviço externo), email, download ou license_key.
kindgrant (concessão), revoke (revogação) ou resend (reenvio).
attemptNúmero da tentativa, a partir de 1.
quantityQuantidade comprada do item.

Assinatura (subscription)

CampoDescrição
statuspending, trialing, active, past_due, paused, suspended, cancelled ou expired.
currentPeriodStart, currentPeriodEndCiclo atual.
cancelAtPeriodEndtrue 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.created e, logo em seguida, order.paid.
  • Use este evento para registrar o pedido no seu sistema. Não libere nada antes de order.paid.
order.created
{
  "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" e paidAt igual a createdAt.
order.paid
{
  "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.

  • fullyRefunded diz se o pedido foi reembolsado por inteiro. No reembolso total, order.status passa a refunded e os acessos marcados para revogar em reembolso são revogados (você recebe entitlement.revoked).
  • refund traz o reembolso mais recente concluído. Pode vir null quando o gateway informou o valor sem detalhar o reembolso.
  • Cada novo valor reembolsado gera um evento novo.
order.refunded
{
  "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.status vem como expired; no cancelado, como cancelled.
order.cancelled
{
  "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.paid para o mesmo pedido. Para saber se o pedido está pago, prefira order.paid.
payment.confirmed
{
  "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.
payment.refunded
{
  "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.revoked para cada um.
payment.chargeback
{
  "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 trazem null.
entitlement.granted
{
  "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.

  • revokeReason diz o motivo da revogação: refund (reembolso), chargeback (contestação), cancellation (cancelamento), subscription_ended (fim da assinatura), subscription_paused (assinatura pausada), expiration (prazo vencido) ou manual (revogado no painel).
  • Quando o acesso chega ao fim do prazo (endsAt), o evento traz status: "expired" e revokeReason: "expiration", com revokedAt em null.
entitlement.revoked
{
  "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-id próprio e delivery.attempt maior. Deduplique pelo delivery.operationId.
  • Responda com 2xx assim que receber e confirme depois pela API: POST /deliveries/{operationId}/complete ou POST /deliveries/{operationId}/fail. Veja Serviços externos.
  • benefit.config é a configuração do benefício como o lojista salvou no produto.
delivery.requested
{
  "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.

  • externalReference e downloadUrl vêm preenchidos quando o serviço externo os informou na confirmação.
delivery.completed
{
  "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: true indica que a MinePag vai tentar de novo sozinha. Com false, 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.message explica o problema em português.
delivery.failed
{
  "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.

subscription.created
{
  "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.

  • currentPeriodStart e currentPeriodEnd já trazem o ciclo novo.
subscription.renewed
{
  "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.
subscription.past_due
{
  "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, cancelAtPeriodEnd vem true e os acessos seguem até currentPeriodEnd.
subscription.cancelled
{
  "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 (motivo subscription_ended) para cada acesso da assinatura.
subscription.ended
{
  "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.
customer.created
{
  "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 id do 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.* e entitlement.revoked de sempre).
customer.deleted
{
  "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.

webhook.test
{
  "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.

Nesta página