Todos os eventos de assinatura seguem o mesmo envelope. Cadastre os eventos desejados em POST /api/v1/user/company/webhooks.
Eventos disponíveis
| Evento | Quando é disparado |
|---|
subscription.created | Assinatura criada |
subscription.trial_started | Assinatura criada com trial |
subscription.activated | Primeiro ciclo pago com sucesso (trial encerrou) |
subscription.paused | Assinatura pausada |
subscription.resumed | Assinatura retomada |
subscription.plan_changed | Plano alterado (imediato ou agendado) |
subscription.payment.success | Ciclo cobrado com sucesso |
subscription.payment.failed | Tentativa de cobrança falhou |
subscription.payment.retry | Retentativa agendada |
subscription.past_due | Todas as retentativas esgotadas |
subscription.canceled | Assinatura cancelada |
Payload base
Todos os eventos incluem estes campos:
{
"event": "subscription.payment.success",
"subscription_id": "01a2b3c4-d5e6-7f8a-9b0c-1d2e3f4a5b6c",
"plan_id": "018f1a2b-3c4d-7e5f-a6b7-c8d9e0f1a2b3",
"customer_id": 42,
"status": "active",
"amount": 2093,
"currency": "BRL",
"interval": "monthly",
"interval_count": 1,
"billing_day": 10,
"next_billing_at": "2026-08-10T00:00:00+00:00",
"current_period": {
"start": "2026-07-10T00:00:00+00:00",
"end": "2026-08-10T00:00:00+00:00"
},
"trial": null,
"created_at": "2026-06-25T12:00:00+00:00"
}
| Evento | Campos adicionais |
|---|
subscription.trial_started | trial_end |
subscription.canceled | at_period_end |
subscription.paused | paused_until |
subscription.plan_changed | new_plan_id, change_type (upgrade|downgrade), immediately, executed |
subscription.payment.success | cycle_id, amount_charged, transaction_id |
subscription.payment.failed | cycle_id, retry_count, next_retry_at, final |
subscription.payment.retry | cycle_id, retry_count, next_retry_at |
subscription.past_due | cycle_id, retry_count, reason |
Implemente todos os eventos de subscription.payment.* e subscription.past_due. São eles que sinalizam quando o acesso do cliente deve ser suspenso ou reativado.