Assinatura confirmada
Evento: SUBSCRIPTION_CONFIRMED
O gateway aceitou a assinatura no cartão de crédito.
Quando dispara: quando a PagPolar termina de criar a assinatura no gateway. Essa criação acontece depois da resposta de POST /v1/plans/offer/{id}/subscribe (ou da compra no checkout).
O que fazer: guarde subscription.external_id se precisar dele. Não libere o acesso: consulte GET /v1/subscriptions/{id} e libere só quando status for ACTIVE.
Atenção: o status continua DRAFT e só vira ACTIVE quando o gateway informa a cobrança paga. Só existe para assinaturas no cartão. Se a criação no gateway falhar, chega SUBSCRIPTION_FAILED no lugar deste evento.
Exemplo de payload
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"event": "SUBSCRIPTION_CONFIRMED",
"creation_date": "2026-01-28T10:00:20.000Z",
"version": "1.0.0",
"data": {
"subscription": {
"id": "c3d4e5f6-a7b8-4012-8def-123456789012",
"external_id": "sub_abc123",
"status": "DRAFT",
"start_at": "2026-01-28T10:00:00.000Z",
"end_at": null,
"next_billing_at": "2026-02-28T10:00:00.000Z",
"payment_method": "CREDIT_CARD",
"total_amount": "49.9000",
"created_at": "2026-01-28T10:00:00.000Z"
},
"product": {
"id": "8a2cdb3c-4a6d-4bad-8add-1a0c6b2cab5c",
"name": "Assinatura Premium Mensal",
"type": "SUBSCRIPTION"
},
"buyer": {
"name": "João Silva",
"email": "joao.silva@email.com",
"document": "12345678900",
"phone": "11999999999"
},
"source": {
"channel": "API",
"api_credential_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
}
}Header Parameters
Bearer <webhook_authorization>: o token do webhook, exibido uma única vez na criação da credencial. Compare com o valor guardado antes de processar o evento.
true só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.
"true"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro id: não use este campo para evitar processamento duplicado.
uuidNome do evento.
Data e hora (UTC) em que esta tentativa foi montada.
date-timeVersão do formato do payload.
Só aparece nos envios de teste feitos pelo Playground de webhooks do portal, junto com o header X-PagPolar-Test: true. Os eventos reais não trazem este campo: ignore em produção qualquer evento com test: true.
Dados do evento. Chega vazio ({}) se a venda ou a assinatura não for encontrada no momento do envio.
Response Body
Assinatura criada POST
**Evento:** `SUBSCRIPTION_CREATED` Uma assinatura nova foi registrada. **Quando dispara:** logo depois da criação da assinatura, no checkout da PagPolar ou em `POST /v1/plans/offer/{id}/subscribe`. Se ainda não tiver sido enviado para a assinatura, também dispara quando o gateway ativa o primeiro ciclo no cartão. **O que fazer:** registre a assinatura pelo `subscription.id`. Não libere o acesso. No cartão, libere só quando `GET /v1/subscriptions/{id}` trouxer `status` `ACTIVE`. **Atenção:** no cartão, a assinatura nasce `DRAFT`; em PIX ou boleto, nasce `PENDING_PAYMENT`. ### Exemplo de payload ```json { "id": "550e8400-e29b-41d4-a716-446655440000", "event": "SUBSCRIPTION_CREATED", "creation_date": "2026-01-28T10:00:05.000Z", "version": "1.0.0", "data": { "subscription": { "id": "c3d4e5f6-a7b8-4012-8def-123456789012", "external_id": null, "status": "DRAFT", "start_at": "2026-01-28T10:00:00.000Z", "end_at": null, "next_billing_at": "2026-02-28T10:00:00.000Z", "payment_method": "CREDIT_CARD", "total_amount": "49.9000", "created_at": "2026-01-28T10:00:00.000Z" }, "product": { "id": "8a2cdb3c-4a6d-4bad-8add-1a0c6b2cab5c", "name": "Assinatura Premium Mensal", "type": "SUBSCRIPTION" }, "buyer": { "name": "João Silva", "email": "joao.silva@email.com", "document": "12345678900", "phone": "11999999999" }, "source": { "channel": "API", "api_credential_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7" } } } ```
Assinatura recusada POST
**Evento:** `SUBSCRIPTION_FAILED` A criação da assinatura no cartão de crédito falhou no gateway. **Quando dispara:** quando a PagPolar tenta criar a assinatura no gateway e ele recusa ou a criação dá erro. Essa tentativa acontece depois da resposta de `POST /v1/plans/offer/{id}/subscribe`, que já devolveu a assinatura em `DRAFT`. **O que fazer:** não libere o acesso. Avise o cliente e peça outro cartão; para tentar de novo, crie uma nova assinatura. **Atenção:** `status` vira `FAILED` e `external_id` chega `null`. As vendas da assinatura também ficam `FAILED`, sem evento de venda próprio. ### Exemplo de payload ```json { "id": "550e8400-e29b-41d4-a716-446655440000", "event": "SUBSCRIPTION_FAILED", "creation_date": "2026-01-28T10:00:20.000Z", "version": "1.0.0", "data": { "subscription": { "id": "c3d4e5f6-a7b8-4012-8def-123456789012", "external_id": null, "status": "FAILED", "start_at": "2026-01-28T10:00:00.000Z", "end_at": null, "next_billing_at": "2026-02-28T10:00:00.000Z", "payment_method": "CREDIT_CARD", "total_amount": "49.9000", "created_at": "2026-01-28T10:00:00.000Z" }, "product": { "id": "8a2cdb3c-4a6d-4bad-8add-1a0c6b2cab5c", "name": "Assinatura Premium Mensal", "type": "SUBSCRIPTION" }, "buyer": { "name": "João Silva", "email": "joao.silva@email.com", "document": "12345678900", "phone": "11999999999" }, "source": { "channel": "API", "api_credential_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7" } } } ```