Skip to main content
Esse evento é disparado assim que o gateway de pagamento (Asaas, Stripe, etc.) confirma um pagamento de paywall. É o momento canônico para sincronizar liberação de acesso em sistemas externos (área de membros, plataforma de cursos legada, ERP), já que internamente o Cativa também usa esse mesmo evento para conceder badge/grupo/curso ao usuário.
O nome interno do evento (usado nos cadastros de webhook do Console) é paywall_payment_completed.

Assinar este evento

Aponte um listener para a sua URL informando EventName: "paywall_payment_completed". Auth, secret e verificação em Cadastrando e verificando webhooks.

Quando dispara

  • Gateway de pagamento (Asaas, Stripe) envia callback de confirmação para o Cativa
  • Pagamento PIX é compensado
  • Cobrança de boleto é compensada
  • Cobrança de cartão de crédito é capturada com sucesso
  • Pagamento manual é marcado como confirmado no admin

Quando NÃO dispara

  • Pagamento criado mas ainda pendente (PIX gerado e não pago, boleto não vencido, etc.)
  • Pagamento falho ou cancelado pelo gateway
  • Pagamento estornado / refundado depois de já ter sido confirmado
  • Pagamento sem UserId resolvido (ex: PIX onde o pagador ainda não foi associado a um usuário do tenant), entrega é pulada
  • Paywall ou pagamento não encontrados no enriquecimento do payload (entrega é pulada)

Payload

O payload é serializado em PascalCase e enviado no body do POST com Content-Type: application/json. O payload tem três objetos aninhados, User, Paywall e Payment:

Campos do payload

Raiz

User

Paywall

Paywall.ActionType segue o enum:

Payment

Os nomes em português (ValorPago, ValorOriginal, Desconto, TipoPagamento, IdTransacao) são herdados da v1 da plataforma e mantidos para compatibilidade com integrações Make/Zapier existentes. Não vão ser renomeados.

Headers do request

A explicação completa de como verificar X-Cativa-Signature, lidar com retries e garantir idempotência (com exemplos em Node, Python, Go e C#) está em Cadastrando e verificando webhooks.

Casos de uso

  • Liberar acesso em plataforma externa, se você ainda hospeda parte do conteúdo fora do Cativa (área de membros legada, Hotmart, Memberkit), use Payment.PaymentId + User.Id para liberar acesso lá assim que o pagamento for confirmado.
  • Conciliação financeira, registrar Payment.IdTransacao + Payment.Gateway + Payment.ValorPago no seu ERP/contabilidade para fechar o caixa por gateway.
  • Disparar email transacional, enviar recibo, NF-e ou boas-vindas de “compra confirmada” usando User.Email, Paywall.Name, Payment.ValorPago e Payment.Installments.
Esse evento dispara uma vez por pagamento confirmado, ele não dispara em renovação automática de assinatura (cobrança recorrente ainda não está em produção). Não trate este evento como gatilho de renovação.

Reagindo ao evento

Depois de verificar a assinatura, libere o acesso na sua plataforma externa. O Payment.PaymentId é único por pagamento confirmado, então serve de chave de idempotência. O Paywall.ActionType diz o que a compra concede (ver a tabela do enum acima):

Eventos relacionados

user_received_badge

Disparado quando o paywall concede badge, útil para casar a permissão recebida com o pagamento.

user_joined_group

Disparado quando o paywall adiciona o comprador a um grupo (ActionType 3 ou 5).

Cadastrando webhooks

Como cadastrar listeners, verificar HMAC e lidar com retries.

Webhooks (visão geral)

Por que webhooks, garantias de entrega e formato dos payloads.