{"openapi":"3.1.0","info":{"title":"PagPolar — Webhooks","version":"1.0.0","description":"Notificações **HTTP POST** que a PagPolar envia para a URL do webhook quando algo acontece com uma venda ou uma assinatura.\n\n## Quem recebe\n- O webhook criado com a credencial de API recebe os eventos de todas as vendas e assinaturas da conta: as criadas pela API, as do checkout da PagPolar e as vendas manuais.\n- Use `data.source.channel` para saber a origem da venda e `data.source.api_credential_id` para saber qual credencial a criou.\n\n## Como a entrega funciona\n- Corpo em JSON com o header `Content-Type: application/json`.\n- Header `Authorization: Bearer <webhook_authorization>` quando o webhook tem token. O webhook da credencial sempre tem.\n- Tempo limite de 10 segundos por tentativa.\n- Qualquer status 2xx conta como recebido.\n- Erro de rede, tempo esgotado ou status fora de 2xx geram nova tentativa cerca de 30 segundos depois, até o limite de tentativas do webhook. O webhook da credencial nasce com 5 tentativas; o valor pode ser mudado de 1 a 10.\n- O webhook é desativado automaticamente, inclusive o da credencial, quando um envio esgota as tentativas ou quando o erro é definitivo: status `404` ou `410`, domínio inexistente, URL inválida ou certificado SSL inválido. Nesses erros definitivos não há nova tentativa. O motivo fica no webhook, começando por `Webhook desativado automaticamente.`, e é apagado ao reativar.\n- Webhook desativado, automaticamente ou ao revogar a credencial, descarta os envios pendentes e não recebe os eventos seguintes.\n- Cada tentativa monta o payload de novo: `id` e `creation_date` mudam, e `data` traz o estado da venda ou da assinatura naquele momento.\n\n## Repetição e ordem\n- O mesmo evento pode chegar mais de uma vez. Não use o `id` do envelope para descartar repetidos: combine `event` com o `id` da venda ou da assinatura.\n- A ordem de chegada não é garantida.\n\n## Valores em dinheiro\nOs valores guardados com casas decimais fixas (`total_amount`, `effective_value`, taxas, valores dos itens, preço da oferta, frete e `subscription.total_amount`) chega como texto com casas decimais fixas (ex.: `\"197.0000\"`). Converta para número antes de fazer contas.\n\n`net_amount` e os valores do cupom chegam como número."},"tags":[{"name":"Eventos de venda","description":"Avisam mudanças em uma venda: criação, pagamento, vencimento, cancelamento, reembolso e chargeback."},{"name":"Eventos de assinatura","description":"Avisam mudanças em uma assinatura: criação, confirmação no gateway, renovação, atraso, expiração e cancelamento."}],"paths":{},"webhooks":{"TRANSACTION_CREATED":{"post":{"tags":["Eventos de venda"],"summary":"Venda criada","description":"**Evento:** `TRANSACTION_CREATED`\n\nUma venda foi registrada.\n\n**Quando dispara:** logo depois da criação da venda, no checkout da PagPolar ou pela API, em `POST /v1/payments/pix`, `POST /v1/payments/boleto`, `POST /v1/payments/credit-card` e `POST /v1/plans/offer/{id}/subscribe`.\n\n**O que fazer:** registre a venda pelo `transaction.id` e ligue ao seu pedido. Não libere o que foi vendido: espere `TRANSACTION_PAID`.\n\n**Atenção:** confira `transaction.status`. No cartão, a venda recusada pelo gateway na criação chega como `FAILED` e não recebe outro evento. O payload é montado na hora do envio, então a venda pode chegar com um status posterior, como `PAID`. Use `source.channel` para saber se a venda veio do checkout ou da API.\n\n### Exemplo de payload\n\n```json\n{\n  \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"event\": \"TRANSACTION_CREATED\",\n  \"creation_date\": \"2026-01-29T14:00:05.000Z\",\n  \"version\": \"1.0.0\",\n  \"data\": {\n    \"transaction\": {\n      \"id\": \"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d\",\n      \"identifier\": \"PPO0087103960\",\n      \"status\": \"PROCESSING\",\n      \"type\": \"BILLING\",\n      \"payment_method\": \"PIX\",\n      \"total_amount\": \"450.0000\",\n      \"net_amount\": 450,\n      \"effective_value\": \"426.5500\",\n      \"base_tax\": \"23.4500\",\n      \"installment_tax\": \"0.0000\",\n      \"base_fixed_tax\": \"0.9900\",\n      \"base_percentage_tax\": \"22.4600\",\n      \"installments\": 1,\n      \"cycle\": 1,\n      \"paid_at\": null,\n      \"created_at\": \"2026-01-29T14:00:00.000Z\"\n    },\n    \"items\": [\n      {\n        \"id\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n        \"quantity\": 1,\n        \"amount\": \"450.0000\",\n        \"original_amount\": \"500.0000\",\n        \"discount_value\": \"50.0000\",\n        \"product\": {\n          \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n          \"name\": \"Curso Completo de Marketing Digital\",\n          \"type\": \"DIGITAL\"\n        },\n        \"price\": {\n          \"id\": \"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed\",\n          \"title\": \"Plano Anual\",\n          \"price\": \"500.0000\",\n          \"identifier\": \"PPP1234567890\"\n        }\n      }\n    ],\n    \"product\": {\n      \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n      \"name\": \"Curso Completo de Marketing Digital\",\n      \"type\": \"DIGITAL\"\n    },\n    \"buyer\": {\n      \"name\": \"João Silva\",\n      \"email\": \"joao.silva@email.com\",\n      \"document\": \"12345678900\",\n      \"phone\": \"11999999999\"\n    },\n    \"address\": {\n      \"street\": \"Rua das Flores\",\n      \"number\": \"123\",\n      \"complement\": \"Apto 4B\",\n      \"neighborhood\": \"Centro\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"postal_code\": \"01000-000\"\n    },\n    \"payment_details\": {\n      \"origin\": \"DIRECT\",\n      \"qr_code\": \"00020126580014br.gov.bcb.pix0136a1b2c3d4-e5f6-4a7b-8c9d\",\n      \"billet_barcode\": null,\n      \"billet_link\": null,\n      \"last_credit_card_digits\": null,\n      \"shipping_value\": \"0.00\"\n    },\n    \"coupon\": null,\n    \"subscription\": null,\n    \"affiliate\": null,\n    \"source\": {\n      \"channel\": \"API\",\n      \"api_credential_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n    },\n    \"order_bumps\": [\n      {\n        \"transaction\": {\n          \"id\": \"d4e5f6a7-b8c9-4123-8def-456789012345\",\n          \"identifier\": \"PPO0087103961\",\n          \"status\": \"PAID\",\n          \"type\": \"BILLING\",\n          \"payment_method\": \"CREDIT_CARD\",\n          \"total_amount\": \"47.0000\",\n          \"net_amount\": 47,\n          \"effective_value\": \"43.5000\",\n          \"base_tax\": \"3.5000\",\n          \"installment_tax\": \"0.0000\",\n          \"base_fixed_tax\": \"0.9900\",\n          \"base_percentage_tax\": \"2.5100\",\n          \"installments\": 1,\n          \"cycle\": 1,\n          \"paid_at\": \"2026-01-29T14:35:00.000Z\",\n          \"created_at\": \"2026-01-29T14:00:00.000Z\"\n        },\n        \"items\": [\n          {\n            \"id\": \"a12bc34d-56ef-4890-abcd-ef1234567890\",\n            \"quantity\": 1,\n            \"amount\": \"47.0000\",\n            \"original_amount\": \"47.0000\",\n            \"discount_value\": \"0.0000\",\n            \"product\": {\n              \"id\": \"7c3aeb2d-5b8e-4bad-9cdd-3a1d8c4eab7e\",\n              \"name\": \"E-book Estratégias Avançadas\",\n              \"type\": \"DIGITAL\"\n            },\n            \"price\": {\n              \"id\": \"3d1f8ace-dd0f-4d4f-bd7f-cd0f1ddf6def\",\n              \"title\": \"Oferta Especial\",\n              \"price\": \"47.0000\",\n              \"identifier\": \"PPP1234567891\"\n            }\n          }\n        ],\n        \"product\": {\n          \"id\": \"7c3aeb2d-5b8e-4bad-9cdd-3a1d8c4eab7e\",\n          \"name\": \"E-book Estratégias Avançadas\",\n          \"type\": \"DIGITAL\"\n        }\n      }\n    ]\n  }\n}\n```","parameters":[{"name":"Authorization","in":"header","required":false,"description":"`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.","schema":{"type":"string"}},{"name":"X-PagPolar-Test","in":"header","required":false,"description":"`true` só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.","schema":{"type":"string","enum":["true"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","creation_date","version","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro `id`: não use este campo para evitar processamento duplicado."},"event":{"type":"string","const":"TRANSACTION_CREATED","description":"Nome do evento."},"creation_date":{"type":"string","format":"date-time","description":"Data e hora (UTC) em que esta tentativa foi montada."},"version":{"type":"string","const":"1.0.0","description":"Versão do formato do payload."},"test":{"type":"boolean","const":true,"description":"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`."},"data":{"$ref":"#/components/schemas/TransactionEventData","description":"Dados do evento. Chega vazio (`{}`) se a venda ou a assinatura não for encontrada no momento do envio."}}},"example":{"id":"550e8400-e29b-41d4-a716-446655440000","event":"TRANSACTION_CREATED","creation_date":"2026-01-29T14:00:05.000Z","version":"1.0.0","data":{"transaction":{"id":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","identifier":"PPO0087103960","status":"PROCESSING","type":"BILLING","payment_method":"PIX","total_amount":"450.0000","net_amount":450,"effective_value":"426.5500","base_tax":"23.4500","installment_tax":"0.0000","base_fixed_tax":"0.9900","base_percentage_tax":"22.4600","installments":1,"cycle":1,"paid_at":null,"created_at":"2026-01-29T14:00:00.000Z"},"items":[{"id":"f47ac10b-58cc-4372-a567-0e02b2c3d479","quantity":1,"amount":"450.0000","original_amount":"500.0000","discount_value":"50.0000","product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"price":{"id":"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed","title":"Plano Anual","price":"500.0000","identifier":"PPP1234567890"}}],"product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"buyer":{"name":"João Silva","email":"joao.silva@email.com","document":"12345678900","phone":"11999999999"},"address":{"street":"Rua das Flores","number":"123","complement":"Apto 4B","neighborhood":"Centro","city":"São Paulo","state":"SP","postal_code":"01000-000"},"payment_details":{"origin":"DIRECT","qr_code":"00020126580014br.gov.bcb.pix0136a1b2c3d4-e5f6-4a7b-8c9d","billet_barcode":null,"billet_link":null,"last_credit_card_digits":null,"shipping_value":"0.00"},"coupon":null,"subscription":null,"affiliate":null,"source":{"channel":"API","api_credential_id":"7c9e6679-7425-40de-944b-e07fc1f90ae7"},"order_bumps":[{"transaction":{"id":"d4e5f6a7-b8c9-4123-8def-456789012345","identifier":"PPO0087103961","status":"PAID","type":"BILLING","payment_method":"CREDIT_CARD","total_amount":"47.0000","net_amount":47,"effective_value":"43.5000","base_tax":"3.5000","installment_tax":"0.0000","base_fixed_tax":"0.9900","base_percentage_tax":"2.5100","installments":1,"cycle":1,"paid_at":"2026-01-29T14:35:00.000Z","created_at":"2026-01-29T14:00:00.000Z"},"items":[{"id":"a12bc34d-56ef-4890-abcd-ef1234567890","quantity":1,"amount":"47.0000","original_amount":"47.0000","discount_value":"0.0000","product":{"id":"7c3aeb2d-5b8e-4bad-9cdd-3a1d8c4eab7e","name":"E-book Estratégias Avançadas","type":"DIGITAL"},"price":{"id":"3d1f8ace-dd0f-4d4f-bd7f-cd0f1ddf6def","title":"Oferta Especial","price":"47.0000","identifier":"PPP1234567891"}}],"product":{"id":"7c3aeb2d-5b8e-4bad-9cdd-3a1d8c4eab7e","name":"E-book Estratégias Avançadas","type":"DIGITAL"}}]}}}}},"responses":{"200":{"description":"Qualquer status 2xx confirma o recebimento. Responda rápido (limite de 10 segundos) e processe o evento depois."}}}},"TRANSACTION_PENDING":{"post":{"tags":["Eventos de venda"],"summary":"Cobrança de renovação gerada","description":"**Evento:** `TRANSACTION_PENDING`\n\nA cobrança de renovação de uma assinatura em PIX ou boleto foi gerada e espera pagamento.\n\n**Quando dispara:** quando a PagPolar gera a nova cobrança do ciclo para o cliente. Assinaturas em PIX ou boleto nascem no checkout da PagPolar; pela API, a assinatura é sempre no cartão.\n\n**O que fazer:** mostre ao cliente o PIX (`payment_details.qr_code`) ou o boleto (`payment_details.billet_link` e `payment_details.billet_barcode`) do novo ciclo. Quando ele pagar, chega `TRANSACTION_PAID`.\n\n**Atenção:** é uma venda nova, com outro `transaction.id`. `transaction.cycle` indica o ciclo cobrado e `subscription` vem preenchida. Se a cobrança anterior não foi paga, ela chega antes como `TRANSACTION_EXPIRED`.\n\n### Exemplo de payload\n\n```json\n{\n  \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"event\": \"TRANSACTION_PENDING\",\n  \"creation_date\": \"2026-02-28T10:00:05.000Z\",\n  \"version\": \"1.0.0\",\n  \"data\": {\n    \"transaction\": {\n      \"id\": \"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d\",\n      \"identifier\": \"PPO0087103960\",\n      \"status\": \"DRAFT\",\n      \"type\": \"BILLING\",\n      \"payment_method\": \"BOLETO\",\n      \"total_amount\": \"555.2400\",\n      \"net_amount\": 450,\n      \"effective_value\": \"426.5500\",\n      \"base_tax\": \"23.4500\",\n      \"installment_tax\": \"0.0000\",\n      \"base_fixed_tax\": \"0.9900\",\n      \"base_percentage_tax\": \"22.4600\",\n      \"installments\": 1,\n      \"cycle\": 2,\n      \"paid_at\": null,\n      \"created_at\": \"2026-01-29T14:00:00.000Z\"\n    },\n    \"items\": [\n      {\n        \"id\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n        \"quantity\": 1,\n        \"amount\": \"450.0000\",\n        \"original_amount\": \"500.0000\",\n        \"discount_value\": \"50.0000\",\n        \"product\": {\n          \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n          \"name\": \"Curso Completo de Marketing Digital\",\n          \"type\": \"DIGITAL\"\n        },\n        \"price\": {\n          \"id\": \"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed\",\n          \"title\": \"Plano Anual\",\n          \"price\": \"500.0000\",\n          \"identifier\": \"PPP1234567890\"\n        }\n      }\n    ],\n    \"product\": {\n      \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n      \"name\": \"Curso Completo de Marketing Digital\",\n      \"type\": \"DIGITAL\"\n    },\n    \"buyer\": {\n      \"name\": \"João Silva\",\n      \"email\": \"joao.silva@email.com\",\n      \"document\": \"12345678900\",\n      \"phone\": \"11999999999\"\n    },\n    \"address\": null,\n    \"payment_details\": {\n      \"origin\": \"DIRECT\",\n      \"qr_code\": null,\n      \"billet_barcode\": \"23793381286000000000300000000409184340000004990\",\n      \"billet_link\": \"https://boletos.exemplo.com.br/a1b2c3d4.pdf\",\n      \"last_credit_card_digits\": null,\n      \"shipping_value\": \"0.00\"\n    },\n    \"coupon\": null,\n    \"subscription\": {\n      \"id\": \"c3d4e5f6-a7b8-4012-8def-123456789012\",\n      \"status\": \"PENDING_RENEWAL\",\n      \"start_at\": \"2026-01-28T10:00:00.000Z\",\n      \"next_billing_at\": \"2026-03-28T10:00:00.000Z\"\n    },\n    \"affiliate\": null,\n    \"source\": {\n      \"channel\": \"API\",\n      \"api_credential_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n    }\n  }\n}\n```","parameters":[{"name":"Authorization","in":"header","required":false,"description":"`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.","schema":{"type":"string"}},{"name":"X-PagPolar-Test","in":"header","required":false,"description":"`true` só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.","schema":{"type":"string","enum":["true"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","creation_date","version","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro `id`: não use este campo para evitar processamento duplicado."},"event":{"type":"string","const":"TRANSACTION_PENDING","description":"Nome do evento."},"creation_date":{"type":"string","format":"date-time","description":"Data e hora (UTC) em que esta tentativa foi montada."},"version":{"type":"string","const":"1.0.0","description":"Versão do formato do payload."},"test":{"type":"boolean","const":true,"description":"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`."},"data":{"$ref":"#/components/schemas/TransactionEventData","description":"Dados do evento. Chega vazio (`{}`) se a venda ou a assinatura não for encontrada no momento do envio."}}},"example":{"id":"550e8400-e29b-41d4-a716-446655440000","event":"TRANSACTION_PENDING","creation_date":"2026-02-28T10:00:05.000Z","version":"1.0.0","data":{"transaction":{"id":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","identifier":"PPO0087103960","status":"DRAFT","type":"BILLING","payment_method":"BOLETO","total_amount":"555.2400","net_amount":450,"effective_value":"426.5500","base_tax":"23.4500","installment_tax":"0.0000","base_fixed_tax":"0.9900","base_percentage_tax":"22.4600","installments":1,"cycle":2,"paid_at":null,"created_at":"2026-01-29T14:00:00.000Z"},"items":[{"id":"f47ac10b-58cc-4372-a567-0e02b2c3d479","quantity":1,"amount":"450.0000","original_amount":"500.0000","discount_value":"50.0000","product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"price":{"id":"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed","title":"Plano Anual","price":"500.0000","identifier":"PPP1234567890"}}],"product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"buyer":{"name":"João Silva","email":"joao.silva@email.com","document":"12345678900","phone":"11999999999"},"address":null,"payment_details":{"origin":"DIRECT","qr_code":null,"billet_barcode":"23793381286000000000300000000409184340000004990","billet_link":"https://boletos.exemplo.com.br/a1b2c3d4.pdf","last_credit_card_digits":null,"shipping_value":"0.00"},"coupon":null,"subscription":{"id":"c3d4e5f6-a7b8-4012-8def-123456789012","status":"PENDING_RENEWAL","start_at":"2026-01-28T10:00:00.000Z","next_billing_at":"2026-03-28T10:00:00.000Z"},"affiliate":null,"source":{"channel":"API","api_credential_id":"7c9e6679-7425-40de-944b-e07fc1f90ae7"}}}}}},"responses":{"200":{"description":"Qualquer status 2xx confirma o recebimento. Responda rápido (limite de 10 segundos) e processe o evento depois."}}}},"TRANSACTION_PAID":{"post":{"tags":["Eventos de venda"],"summary":"Venda paga","description":"**Evento:** `TRANSACTION_PAID`\n\nO pagamento da venda foi confirmado.\n\n**Quando dispara:** quando o gateway confirma o pagamento do PIX, do boleto ou do cartão. Também vale para a cobrança de renovação de assinaturas em PIX ou boleto.\n\n**O que fazer:** libere o que foi vendido e marque o pedido como pago.\n\n**Atenção:** o mesmo evento pode chegar mais de uma vez para a mesma venda, por novas tentativas de entrega ou por mais de um aviso do gateway. Antes de liberar, confira se o pedido já está pago no seu sistema.\n\n### Exemplo de payload\n\n```json\n{\n  \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"event\": \"TRANSACTION_PAID\",\n  \"creation_date\": \"2026-01-29T14:35:05.000Z\",\n  \"version\": \"1.0.0\",\n  \"data\": {\n    \"transaction\": {\n      \"id\": \"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d\",\n      \"identifier\": \"PPO0087103960\",\n      \"status\": \"PAID\",\n      \"type\": \"BILLING\",\n      \"payment_method\": \"CREDIT_CARD\",\n      \"total_amount\": \"555.2400\",\n      \"net_amount\": 450,\n      \"effective_value\": \"426.5500\",\n      \"base_tax\": \"23.4500\",\n      \"installment_tax\": \"105.2400\",\n      \"base_fixed_tax\": \"0.9900\",\n      \"base_percentage_tax\": \"22.4600\",\n      \"installments\": 12,\n      \"cycle\": 1,\n      \"paid_at\": \"2026-01-29T14:35:00.000Z\",\n      \"created_at\": \"2026-01-29T14:00:00.000Z\"\n    },\n    \"items\": [\n      {\n        \"id\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n        \"quantity\": 1,\n        \"amount\": \"450.0000\",\n        \"original_amount\": \"500.0000\",\n        \"discount_value\": \"50.0000\",\n        \"product\": {\n          \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n          \"name\": \"Curso Completo de Marketing Digital\",\n          \"type\": \"DIGITAL\"\n        },\n        \"price\": {\n          \"id\": \"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed\",\n          \"title\": \"Plano Anual\",\n          \"price\": \"500.0000\",\n          \"identifier\": \"PPP1234567890\"\n        }\n      }\n    ],\n    \"product\": {\n      \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n      \"name\": \"Curso Completo de Marketing Digital\",\n      \"type\": \"DIGITAL\"\n    },\n    \"buyer\": {\n      \"name\": \"João Silva\",\n      \"email\": \"joao.silva@email.com\",\n      \"document\": \"12345678900\",\n      \"phone\": \"11999999999\"\n    },\n    \"address\": {\n      \"street\": \"Rua das Flores\",\n      \"number\": \"123\",\n      \"complement\": \"Apto 4B\",\n      \"neighborhood\": \"Centro\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"postal_code\": \"01000-000\"\n    },\n    \"payment_details\": {\n      \"origin\": \"DIRECT\",\n      \"qr_code\": null,\n      \"billet_barcode\": null,\n      \"billet_link\": null,\n      \"last_credit_card_digits\": \"4242\",\n      \"shipping_value\": \"0.00\"\n    },\n    \"coupon\": {\n      \"id\": \"5f2c8b1a-9d3e-4a7b-8c6d-1e2f3a4b5c6d\",\n      \"code\": \"PROMO10\",\n      \"name\": \"Promoção de Janeiro\",\n      \"fixed_value\": null,\n      \"percentage_value\": 10\n    },\n    \"subscription\": null,\n    \"affiliate\": {\n      \"identifier\": \"PAO1234567890\",\n      \"name\": \"Parceiro Digital\",\n      \"commission_type\": \"COMMISSION\",\n      \"commission_value\": 90,\n      \"product_quantity\": null\n    },\n    \"source\": {\n      \"channel\": \"API\",\n      \"api_credential_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n    }\n  }\n}\n```","parameters":[{"name":"Authorization","in":"header","required":false,"description":"`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.","schema":{"type":"string"}},{"name":"X-PagPolar-Test","in":"header","required":false,"description":"`true` só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.","schema":{"type":"string","enum":["true"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","creation_date","version","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro `id`: não use este campo para evitar processamento duplicado."},"event":{"type":"string","const":"TRANSACTION_PAID","description":"Nome do evento."},"creation_date":{"type":"string","format":"date-time","description":"Data e hora (UTC) em que esta tentativa foi montada."},"version":{"type":"string","const":"1.0.0","description":"Versão do formato do payload."},"test":{"type":"boolean","const":true,"description":"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`."},"data":{"$ref":"#/components/schemas/TransactionEventData","description":"Dados do evento. Chega vazio (`{}`) se a venda ou a assinatura não for encontrada no momento do envio."}}},"example":{"id":"550e8400-e29b-41d4-a716-446655440000","event":"TRANSACTION_PAID","creation_date":"2026-01-29T14:35:05.000Z","version":"1.0.0","data":{"transaction":{"id":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","identifier":"PPO0087103960","status":"PAID","type":"BILLING","payment_method":"CREDIT_CARD","total_amount":"555.2400","net_amount":450,"effective_value":"426.5500","base_tax":"23.4500","installment_tax":"105.2400","base_fixed_tax":"0.9900","base_percentage_tax":"22.4600","installments":12,"cycle":1,"paid_at":"2026-01-29T14:35:00.000Z","created_at":"2026-01-29T14:00:00.000Z"},"items":[{"id":"f47ac10b-58cc-4372-a567-0e02b2c3d479","quantity":1,"amount":"450.0000","original_amount":"500.0000","discount_value":"50.0000","product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"price":{"id":"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed","title":"Plano Anual","price":"500.0000","identifier":"PPP1234567890"}}],"product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"buyer":{"name":"João Silva","email":"joao.silva@email.com","document":"12345678900","phone":"11999999999"},"address":{"street":"Rua das Flores","number":"123","complement":"Apto 4B","neighborhood":"Centro","city":"São Paulo","state":"SP","postal_code":"01000-000"},"payment_details":{"origin":"DIRECT","qr_code":null,"billet_barcode":null,"billet_link":null,"last_credit_card_digits":"4242","shipping_value":"0.00"},"coupon":{"id":"5f2c8b1a-9d3e-4a7b-8c6d-1e2f3a4b5c6d","code":"PROMO10","name":"Promoção de Janeiro","fixed_value":null,"percentage_value":10},"subscription":null,"affiliate":{"identifier":"PAO1234567890","name":"Parceiro Digital","commission_type":"COMMISSION","commission_value":90,"product_quantity":null},"source":{"channel":"API","api_credential_id":"7c9e6679-7425-40de-944b-e07fc1f90ae7"}}}}}},"responses":{"200":{"description":"Qualquer status 2xx confirma o recebimento. Responda rápido (limite de 10 segundos) e processe o evento depois."}}}},"TRANSACTION_EXPIRED":{"post":{"tags":["Eventos de venda"],"summary":"Venda expirada","description":"**Evento:** `TRANSACTION_EXPIRED`\n\nUm PIX ou boleto venceu sem pagamento.\n\n**Quando dispara:** na verificação de vencimentos, que roda a cada 3 horas. O PIX vence quando o QR Code expira; o boleto, 5 dias depois de criado. Também dispara quando a PagPolar gera a cobrança de um novo ciclo de assinatura e a cobrança anterior não foi paga.\n\n**O que fazer:** marque o pedido como não pago e não libere o que foi vendido. Para vender de novo, crie uma nova cobrança.\n\n**Atenção:** o evento pode chegar algumas horas depois do vencimento. Order bumps e upsells da venda vencem junto, sem evento próprio. Quando a venda é de uma assinatura, `subscription` vem preenchida.\n\n### Exemplo de payload\n\n```json\n{\n  \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"event\": \"TRANSACTION_EXPIRED\",\n  \"creation_date\": \"2026-02-01T03:00:05.000Z\",\n  \"version\": \"1.0.0\",\n  \"data\": {\n    \"transaction\": {\n      \"id\": \"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d\",\n      \"identifier\": \"PPO0087103960\",\n      \"status\": \"EXPIRED\",\n      \"type\": \"BILLING\",\n      \"payment_method\": \"PIX\",\n      \"total_amount\": \"450.0000\",\n      \"net_amount\": 450,\n      \"effective_value\": \"426.5500\",\n      \"base_tax\": \"23.4500\",\n      \"installment_tax\": \"0.0000\",\n      \"base_fixed_tax\": \"0.9900\",\n      \"base_percentage_tax\": \"22.4600\",\n      \"installments\": 1,\n      \"cycle\": 1,\n      \"paid_at\": null,\n      \"created_at\": \"2026-01-29T14:00:00.000Z\"\n    },\n    \"items\": [\n      {\n        \"id\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n        \"quantity\": 1,\n        \"amount\": \"450.0000\",\n        \"original_amount\": \"500.0000\",\n        \"discount_value\": \"50.0000\",\n        \"product\": {\n          \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n          \"name\": \"Curso Completo de Marketing Digital\",\n          \"type\": \"DIGITAL\"\n        },\n        \"price\": {\n          \"id\": \"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed\",\n          \"title\": \"Plano Anual\",\n          \"price\": \"500.0000\",\n          \"identifier\": \"PPP1234567890\"\n        }\n      }\n    ],\n    \"product\": {\n      \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n      \"name\": \"Curso Completo de Marketing Digital\",\n      \"type\": \"DIGITAL\"\n    },\n    \"buyer\": {\n      \"name\": \"João Silva\",\n      \"email\": \"joao.silva@email.com\",\n      \"document\": \"12345678900\",\n      \"phone\": \"11999999999\"\n    },\n    \"address\": {\n      \"street\": \"Rua das Flores\",\n      \"number\": \"123\",\n      \"complement\": \"Apto 4B\",\n      \"neighborhood\": \"Centro\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"postal_code\": \"01000-000\"\n    },\n    \"payment_details\": {\n      \"origin\": \"DIRECT\",\n      \"qr_code\": \"00020126580014br.gov.bcb.pix0136a1b2c3d4-e5f6-4a7b-8c9d\",\n      \"billet_barcode\": null,\n      \"billet_link\": null,\n      \"last_credit_card_digits\": null,\n      \"shipping_value\": \"0.00\"\n    },\n    \"coupon\": null,\n    \"subscription\": null,\n    \"affiliate\": null,\n    \"source\": {\n      \"channel\": \"API\",\n      \"api_credential_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n    }\n  }\n}\n```","parameters":[{"name":"Authorization","in":"header","required":false,"description":"`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.","schema":{"type":"string"}},{"name":"X-PagPolar-Test","in":"header","required":false,"description":"`true` só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.","schema":{"type":"string","enum":["true"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","creation_date","version","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro `id`: não use este campo para evitar processamento duplicado."},"event":{"type":"string","const":"TRANSACTION_EXPIRED","description":"Nome do evento."},"creation_date":{"type":"string","format":"date-time","description":"Data e hora (UTC) em que esta tentativa foi montada."},"version":{"type":"string","const":"1.0.0","description":"Versão do formato do payload."},"test":{"type":"boolean","const":true,"description":"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`."},"data":{"$ref":"#/components/schemas/TransactionEventData","description":"Dados do evento. Chega vazio (`{}`) se a venda ou a assinatura não for encontrada no momento do envio."}}},"example":{"id":"550e8400-e29b-41d4-a716-446655440000","event":"TRANSACTION_EXPIRED","creation_date":"2026-02-01T03:00:05.000Z","version":"1.0.0","data":{"transaction":{"id":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","identifier":"PPO0087103960","status":"EXPIRED","type":"BILLING","payment_method":"PIX","total_amount":"450.0000","net_amount":450,"effective_value":"426.5500","base_tax":"23.4500","installment_tax":"0.0000","base_fixed_tax":"0.9900","base_percentage_tax":"22.4600","installments":1,"cycle":1,"paid_at":null,"created_at":"2026-01-29T14:00:00.000Z"},"items":[{"id":"f47ac10b-58cc-4372-a567-0e02b2c3d479","quantity":1,"amount":"450.0000","original_amount":"500.0000","discount_value":"50.0000","product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"price":{"id":"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed","title":"Plano Anual","price":"500.0000","identifier":"PPP1234567890"}}],"product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"buyer":{"name":"João Silva","email":"joao.silva@email.com","document":"12345678900","phone":"11999999999"},"address":{"street":"Rua das Flores","number":"123","complement":"Apto 4B","neighborhood":"Centro","city":"São Paulo","state":"SP","postal_code":"01000-000"},"payment_details":{"origin":"DIRECT","qr_code":"00020126580014br.gov.bcb.pix0136a1b2c3d4-e5f6-4a7b-8c9d","billet_barcode":null,"billet_link":null,"last_credit_card_digits":null,"shipping_value":"0.00"},"coupon":null,"subscription":null,"affiliate":null,"source":{"channel":"API","api_credential_id":"7c9e6679-7425-40de-944b-e07fc1f90ae7"}}}}}},"responses":{"200":{"description":"Qualquer status 2xx confirma o recebimento. Responda rápido (limite de 10 segundos) e processe o evento depois."}}}},"TRANSACTION_CANCELED":{"post":{"tags":["Eventos de venda"],"summary":"Venda cancelada","description":"**Evento:** `TRANSACTION_CANCELED`\n\nA venda foi cancelada sem ter sido paga.\n\n**Quando dispara:** quando o cancelamento de uma venda ainda não paga é pedido à PagPolar, ou quando o gateway estorna uma venda que não contava como paga. No cancelamento pedido à PagPolar, os order bumps e upsells cancelados junto recebem o próprio evento.\n\n**O que fazer:** cancele o pedido no seu sistema e não libere o que foi vendido.\n\n**Atenção:** venda paga não é cancelada por este caminho. O estorno de uma venda paga chega como `TRANSACTION_REFUNDED`.\n\n### Exemplo de payload\n\n```json\n{\n  \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"event\": \"TRANSACTION_CANCELED\",\n  \"creation_date\": \"2026-01-30T09:00:05.000Z\",\n  \"version\": \"1.0.0\",\n  \"data\": {\n    \"transaction\": {\n      \"id\": \"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d\",\n      \"identifier\": \"PPO0087103960\",\n      \"status\": \"CANCELED\",\n      \"type\": \"BILLING\",\n      \"payment_method\": \"CREDIT_CARD\",\n      \"total_amount\": \"555.2400\",\n      \"net_amount\": 450,\n      \"effective_value\": \"426.5500\",\n      \"base_tax\": \"23.4500\",\n      \"installment_tax\": \"105.2400\",\n      \"base_fixed_tax\": \"0.9900\",\n      \"base_percentage_tax\": \"22.4600\",\n      \"installments\": 12,\n      \"cycle\": 1,\n      \"paid_at\": null,\n      \"created_at\": \"2026-01-29T14:00:00.000Z\"\n    },\n    \"items\": [\n      {\n        \"id\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n        \"quantity\": 1,\n        \"amount\": \"450.0000\",\n        \"original_amount\": \"500.0000\",\n        \"discount_value\": \"50.0000\",\n        \"product\": {\n          \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n          \"name\": \"Curso Completo de Marketing Digital\",\n          \"type\": \"DIGITAL\"\n        },\n        \"price\": {\n          \"id\": \"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed\",\n          \"title\": \"Plano Anual\",\n          \"price\": \"500.0000\",\n          \"identifier\": \"PPP1234567890\"\n        }\n      }\n    ],\n    \"product\": {\n      \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n      \"name\": \"Curso Completo de Marketing Digital\",\n      \"type\": \"DIGITAL\"\n    },\n    \"buyer\": {\n      \"name\": \"João Silva\",\n      \"email\": \"joao.silva@email.com\",\n      \"document\": \"12345678900\",\n      \"phone\": \"11999999999\"\n    },\n    \"address\": {\n      \"street\": \"Rua das Flores\",\n      \"number\": \"123\",\n      \"complement\": \"Apto 4B\",\n      \"neighborhood\": \"Centro\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"postal_code\": \"01000-000\"\n    },\n    \"payment_details\": {\n      \"origin\": \"DIRECT\",\n      \"qr_code\": null,\n      \"billet_barcode\": null,\n      \"billet_link\": null,\n      \"last_credit_card_digits\": \"4242\",\n      \"shipping_value\": \"0.00\"\n    },\n    \"coupon\": null,\n    \"subscription\": null,\n    \"affiliate\": null,\n    \"source\": {\n      \"channel\": \"API\",\n      \"api_credential_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n    }\n  }\n}\n```","parameters":[{"name":"Authorization","in":"header","required":false,"description":"`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.","schema":{"type":"string"}},{"name":"X-PagPolar-Test","in":"header","required":false,"description":"`true` só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.","schema":{"type":"string","enum":["true"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","creation_date","version","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro `id`: não use este campo para evitar processamento duplicado."},"event":{"type":"string","const":"TRANSACTION_CANCELED","description":"Nome do evento."},"creation_date":{"type":"string","format":"date-time","description":"Data e hora (UTC) em que esta tentativa foi montada."},"version":{"type":"string","const":"1.0.0","description":"Versão do formato do payload."},"test":{"type":"boolean","const":true,"description":"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`."},"data":{"$ref":"#/components/schemas/TransactionEventData","description":"Dados do evento. Chega vazio (`{}`) se a venda ou a assinatura não for encontrada no momento do envio."}}},"example":{"id":"550e8400-e29b-41d4-a716-446655440000","event":"TRANSACTION_CANCELED","creation_date":"2026-01-30T09:00:05.000Z","version":"1.0.0","data":{"transaction":{"id":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","identifier":"PPO0087103960","status":"CANCELED","type":"BILLING","payment_method":"CREDIT_CARD","total_amount":"555.2400","net_amount":450,"effective_value":"426.5500","base_tax":"23.4500","installment_tax":"105.2400","base_fixed_tax":"0.9900","base_percentage_tax":"22.4600","installments":12,"cycle":1,"paid_at":null,"created_at":"2026-01-29T14:00:00.000Z"},"items":[{"id":"f47ac10b-58cc-4372-a567-0e02b2c3d479","quantity":1,"amount":"450.0000","original_amount":"500.0000","discount_value":"50.0000","product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"price":{"id":"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed","title":"Plano Anual","price":"500.0000","identifier":"PPP1234567890"}}],"product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"buyer":{"name":"João Silva","email":"joao.silva@email.com","document":"12345678900","phone":"11999999999"},"address":{"street":"Rua das Flores","number":"123","complement":"Apto 4B","neighborhood":"Centro","city":"São Paulo","state":"SP","postal_code":"01000-000"},"payment_details":{"origin":"DIRECT","qr_code":null,"billet_barcode":null,"billet_link":null,"last_credit_card_digits":"4242","shipping_value":"0.00"},"coupon":null,"subscription":null,"affiliate":null,"source":{"channel":"API","api_credential_id":"7c9e6679-7425-40de-944b-e07fc1f90ae7"}}}}}},"responses":{"200":{"description":"Qualquer status 2xx confirma o recebimento. Responda rápido (limite de 10 segundos) e processe o evento depois."}}}},"TRANSACTION_ASK_REFUNDING":{"post":{"tags":["Eventos de venda"],"summary":"Reembolso solicitado","description":"**Evento:** `TRANSACTION_ASK_REFUNDING`\n\nO cliente pediu reembolso. O dinheiro **ainda não** voltou para ele.\n\n**Quando dispara:** quando o cliente abre um pedido de reembolso, da venda inteira ou de parte dos itens. Pedido aberto pelo próprio vendedor ou pelo suporte não dispara este evento.\n\n**O que fazer:** registre o pedido e acompanhe em `GET /v1/refunds`. Mantenha o acesso até chegar `TRANSACTION_REFUNDED`.\n\n**Atenção:** pedido da venda inteira deixa a venda em `ASK_REFUND`; pedido de parte dos itens, em `ASK_PARTIAL_REFUND`. No pedido da venda inteira de uma assinatura, a PagPolar também pede o cancelamento da assinatura. `transaction.refund_at` chega `null`.\n\n### Exemplo de payload\n\n```json\n{\n  \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"event\": \"TRANSACTION_ASK_REFUNDING\",\n  \"creation_date\": \"2026-02-03T11:30:05.000Z\",\n  \"version\": \"1.0.0\",\n  \"data\": {\n    \"transaction\": {\n      \"id\": \"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d\",\n      \"identifier\": \"PPO0087103960\",\n      \"status\": \"ASK_REFUND\",\n      \"type\": \"BILLING\",\n      \"payment_method\": \"CREDIT_CARD\",\n      \"total_amount\": \"555.2400\",\n      \"net_amount\": 450,\n      \"effective_value\": \"426.5500\",\n      \"base_tax\": \"23.4500\",\n      \"installment_tax\": \"105.2400\",\n      \"base_fixed_tax\": \"0.9900\",\n      \"base_percentage_tax\": \"22.4600\",\n      \"installments\": 12,\n      \"cycle\": 1,\n      \"paid_at\": \"2026-01-29T14:35:00.000Z\",\n      \"created_at\": \"2026-01-29T14:00:00.000Z\",\n      \"refund_reason\": \"Produto não atendeu às expectativas\",\n      \"refund_at\": null\n    },\n    \"items\": [\n      {\n        \"id\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n        \"quantity\": 1,\n        \"amount\": \"450.0000\",\n        \"original_amount\": \"500.0000\",\n        \"discount_value\": \"50.0000\",\n        \"product\": {\n          \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n          \"name\": \"Curso Completo de Marketing Digital\",\n          \"type\": \"DIGITAL\"\n        },\n        \"price\": {\n          \"id\": \"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed\",\n          \"title\": \"Plano Anual\",\n          \"price\": \"500.0000\",\n          \"identifier\": \"PPP1234567890\"\n        }\n      }\n    ],\n    \"product\": {\n      \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n      \"name\": \"Curso Completo de Marketing Digital\",\n      \"type\": \"DIGITAL\"\n    },\n    \"buyer\": {\n      \"name\": \"João Silva\",\n      \"email\": \"joao.silva@email.com\",\n      \"document\": \"12345678900\",\n      \"phone\": \"11999999999\"\n    },\n    \"address\": {\n      \"street\": \"Rua das Flores\",\n      \"number\": \"123\",\n      \"complement\": \"Apto 4B\",\n      \"neighborhood\": \"Centro\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"postal_code\": \"01000-000\"\n    },\n    \"payment_details\": {\n      \"origin\": \"DIRECT\",\n      \"qr_code\": null,\n      \"billet_barcode\": null,\n      \"billet_link\": null,\n      \"last_credit_card_digits\": \"4242\",\n      \"shipping_value\": \"0.00\"\n    },\n    \"coupon\": null,\n    \"subscription\": null,\n    \"affiliate\": null,\n    \"source\": {\n      \"channel\": \"API\",\n      \"api_credential_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n    }\n  }\n}\n```","parameters":[{"name":"Authorization","in":"header","required":false,"description":"`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.","schema":{"type":"string"}},{"name":"X-PagPolar-Test","in":"header","required":false,"description":"`true` só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.","schema":{"type":"string","enum":["true"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","creation_date","version","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro `id`: não use este campo para evitar processamento duplicado."},"event":{"type":"string","const":"TRANSACTION_ASK_REFUNDING","description":"Nome do evento."},"creation_date":{"type":"string","format":"date-time","description":"Data e hora (UTC) em que esta tentativa foi montada."},"version":{"type":"string","const":"1.0.0","description":"Versão do formato do payload."},"test":{"type":"boolean","const":true,"description":"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`."},"data":{"$ref":"#/components/schemas/RefundEventData","description":"Dados do evento. Chega vazio (`{}`) se a venda ou a assinatura não for encontrada no momento do envio."}}},"example":{"id":"550e8400-e29b-41d4-a716-446655440000","event":"TRANSACTION_ASK_REFUNDING","creation_date":"2026-02-03T11:30:05.000Z","version":"1.0.0","data":{"transaction":{"id":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","identifier":"PPO0087103960","status":"ASK_REFUND","type":"BILLING","payment_method":"CREDIT_CARD","total_amount":"555.2400","net_amount":450,"effective_value":"426.5500","base_tax":"23.4500","installment_tax":"105.2400","base_fixed_tax":"0.9900","base_percentage_tax":"22.4600","installments":12,"cycle":1,"paid_at":"2026-01-29T14:35:00.000Z","created_at":"2026-01-29T14:00:00.000Z","refund_reason":"Produto não atendeu às expectativas","refund_at":null},"items":[{"id":"f47ac10b-58cc-4372-a567-0e02b2c3d479","quantity":1,"amount":"450.0000","original_amount":"500.0000","discount_value":"50.0000","product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"price":{"id":"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed","title":"Plano Anual","price":"500.0000","identifier":"PPP1234567890"}}],"product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"buyer":{"name":"João Silva","email":"joao.silva@email.com","document":"12345678900","phone":"11999999999"},"address":{"street":"Rua das Flores","number":"123","complement":"Apto 4B","neighborhood":"Centro","city":"São Paulo","state":"SP","postal_code":"01000-000"},"payment_details":{"origin":"DIRECT","qr_code":null,"billet_barcode":null,"billet_link":null,"last_credit_card_digits":"4242","shipping_value":"0.00"},"coupon":null,"subscription":null,"affiliate":null,"source":{"channel":"API","api_credential_id":"7c9e6679-7425-40de-944b-e07fc1f90ae7"}}}}}},"responses":{"200":{"description":"Qualquer status 2xx confirma o recebimento. Responda rápido (limite de 10 segundos) e processe o evento depois."}}}},"TRANSACTION_REFUNDED":{"post":{"tags":["Eventos de venda"],"summary":"Venda reembolsada","description":"**Evento:** `TRANSACTION_REFUNDED`\n\nO estorno foi concluído e o dinheiro voltou para o cliente.\n\n**Quando dispara:** quando o gateway confirma o estorno de uma venda paga, com ou sem pedido de reembolso antes.\n\n**O que fazer:** revogue o acesso ao que foi vendido e marque o pedido como reembolsado.\n\n**Atenção:** no reembolso de parte dos itens, o evento só chega quando o último item da venda é estornado; antes disso a venda volta para `PAID` e nenhum evento é enviado. O estorno de uma venda que não contava como paga chega como `TRANSACTION_CANCELED`.\n\n### Exemplo de payload\n\n```json\n{\n  \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"event\": \"TRANSACTION_REFUNDED\",\n  \"creation_date\": \"2026-02-05T16:00:05.000Z\",\n  \"version\": \"1.0.0\",\n  \"data\": {\n    \"transaction\": {\n      \"id\": \"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d\",\n      \"identifier\": \"PPO0087103960\",\n      \"status\": \"REFUNDED\",\n      \"type\": \"BILLING\",\n      \"payment_method\": \"CREDIT_CARD\",\n      \"total_amount\": \"555.2400\",\n      \"net_amount\": 450,\n      \"effective_value\": \"426.5500\",\n      \"base_tax\": \"23.4500\",\n      \"installment_tax\": \"105.2400\",\n      \"base_fixed_tax\": \"0.9900\",\n      \"base_percentage_tax\": \"22.4600\",\n      \"installments\": 12,\n      \"cycle\": 1,\n      \"paid_at\": \"2026-01-29T14:35:00.000Z\",\n      \"created_at\": \"2026-01-29T14:00:00.000Z\",\n      \"refund_reason\": \"Produto não atendeu às expectativas\",\n      \"refund_at\": \"2026-02-05T16:00:00.000Z\"\n    },\n    \"items\": [\n      {\n        \"id\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n        \"quantity\": 1,\n        \"amount\": \"450.0000\",\n        \"original_amount\": \"500.0000\",\n        \"discount_value\": \"50.0000\",\n        \"product\": {\n          \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n          \"name\": \"Curso Completo de Marketing Digital\",\n          \"type\": \"DIGITAL\"\n        },\n        \"price\": {\n          \"id\": \"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed\",\n          \"title\": \"Plano Anual\",\n          \"price\": \"500.0000\",\n          \"identifier\": \"PPP1234567890\"\n        }\n      }\n    ],\n    \"product\": {\n      \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n      \"name\": \"Curso Completo de Marketing Digital\",\n      \"type\": \"DIGITAL\"\n    },\n    \"buyer\": {\n      \"name\": \"João Silva\",\n      \"email\": \"joao.silva@email.com\",\n      \"document\": \"12345678900\",\n      \"phone\": \"11999999999\"\n    },\n    \"address\": {\n      \"street\": \"Rua das Flores\",\n      \"number\": \"123\",\n      \"complement\": \"Apto 4B\",\n      \"neighborhood\": \"Centro\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"postal_code\": \"01000-000\"\n    },\n    \"payment_details\": {\n      \"origin\": \"DIRECT\",\n      \"qr_code\": null,\n      \"billet_barcode\": null,\n      \"billet_link\": null,\n      \"last_credit_card_digits\": \"4242\",\n      \"shipping_value\": \"0.00\"\n    },\n    \"coupon\": null,\n    \"subscription\": null,\n    \"affiliate\": null,\n    \"source\": {\n      \"channel\": \"API\",\n      \"api_credential_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n    }\n  }\n}\n```","parameters":[{"name":"Authorization","in":"header","required":false,"description":"`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.","schema":{"type":"string"}},{"name":"X-PagPolar-Test","in":"header","required":false,"description":"`true` só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.","schema":{"type":"string","enum":["true"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","creation_date","version","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro `id`: não use este campo para evitar processamento duplicado."},"event":{"type":"string","const":"TRANSACTION_REFUNDED","description":"Nome do evento."},"creation_date":{"type":"string","format":"date-time","description":"Data e hora (UTC) em que esta tentativa foi montada."},"version":{"type":"string","const":"1.0.0","description":"Versão do formato do payload."},"test":{"type":"boolean","const":true,"description":"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`."},"data":{"$ref":"#/components/schemas/RefundEventData","description":"Dados do evento. Chega vazio (`{}`) se a venda ou a assinatura não for encontrada no momento do envio."}}},"example":{"id":"550e8400-e29b-41d4-a716-446655440000","event":"TRANSACTION_REFUNDED","creation_date":"2026-02-05T16:00:05.000Z","version":"1.0.0","data":{"transaction":{"id":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","identifier":"PPO0087103960","status":"REFUNDED","type":"BILLING","payment_method":"CREDIT_CARD","total_amount":"555.2400","net_amount":450,"effective_value":"426.5500","base_tax":"23.4500","installment_tax":"105.2400","base_fixed_tax":"0.9900","base_percentage_tax":"22.4600","installments":12,"cycle":1,"paid_at":"2026-01-29T14:35:00.000Z","created_at":"2026-01-29T14:00:00.000Z","refund_reason":"Produto não atendeu às expectativas","refund_at":"2026-02-05T16:00:00.000Z"},"items":[{"id":"f47ac10b-58cc-4372-a567-0e02b2c3d479","quantity":1,"amount":"450.0000","original_amount":"500.0000","discount_value":"50.0000","product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"price":{"id":"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed","title":"Plano Anual","price":"500.0000","identifier":"PPP1234567890"}}],"product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"buyer":{"name":"João Silva","email":"joao.silva@email.com","document":"12345678900","phone":"11999999999"},"address":{"street":"Rua das Flores","number":"123","complement":"Apto 4B","neighborhood":"Centro","city":"São Paulo","state":"SP","postal_code":"01000-000"},"payment_details":{"origin":"DIRECT","qr_code":null,"billet_barcode":null,"billet_link":null,"last_credit_card_digits":"4242","shipping_value":"0.00"},"coupon":null,"subscription":null,"affiliate":null,"source":{"channel":"API","api_credential_id":"7c9e6679-7425-40de-944b-e07fc1f90ae7"}}}}}},"responses":{"200":{"description":"Qualquer status 2xx confirma o recebimento. Responda rápido (limite de 10 segundos) e processe o evento depois."}}}},"TRANSACTION_CHARGEBACK_APPROVED":{"post":{"tags":["Eventos de venda"],"summary":"Chargeback aprovado","description":"**Evento:** `TRANSACTION_CHARGEBACK_APPROVED`\n\nO banco do cliente aprovou uma contestação da compra (chargeback) e o valor foi revertido.\n\n**Quando dispara:** quando o gateway avisa a PagPolar que o chargeback foi aprovado.\n\n**O que fazer:** revogue o acesso ao que foi vendido e marque o pedido como contestado.\n\n**Atenção:** se a venda já estava `REFUNDED` ou `CANCELED`, o evento chega com esse status, sem mudar para `CHARGEBACK_APPROVED`. Diferente de `TRANSACTION_REFUNDED`, a transação traz `chargeback_approved_at` e não traz `refund_reason` nem `refund_at`.\n\n### Exemplo de payload\n\n```json\n{\n  \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"event\": \"TRANSACTION_CHARGEBACK_APPROVED\",\n  \"creation_date\": \"2026-02-10T09:15:05.000Z\",\n  \"version\": \"1.0.0\",\n  \"data\": {\n    \"transaction\": {\n      \"id\": \"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d\",\n      \"identifier\": \"PPO0087103960\",\n      \"status\": \"CHARGEBACK_APPROVED\",\n      \"type\": \"BILLING\",\n      \"payment_method\": \"CREDIT_CARD\",\n      \"total_amount\": \"555.2400\",\n      \"net_amount\": 450,\n      \"effective_value\": \"426.5500\",\n      \"base_tax\": \"23.4500\",\n      \"installment_tax\": \"105.2400\",\n      \"base_fixed_tax\": \"0.9900\",\n      \"base_percentage_tax\": \"22.4600\",\n      \"installments\": 12,\n      \"cycle\": 1,\n      \"paid_at\": \"2026-01-29T14:35:00.000Z\",\n      \"created_at\": \"2026-01-29T14:00:00.000Z\",\n      \"chargeback_approved_at\": \"2026-02-10T09:15:00.000Z\"\n    },\n    \"items\": [\n      {\n        \"id\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n        \"quantity\": 1,\n        \"amount\": \"450.0000\",\n        \"original_amount\": \"500.0000\",\n        \"discount_value\": \"50.0000\",\n        \"product\": {\n          \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n          \"name\": \"Curso Completo de Marketing Digital\",\n          \"type\": \"DIGITAL\"\n        },\n        \"price\": {\n          \"id\": \"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed\",\n          \"title\": \"Plano Anual\",\n          \"price\": \"500.0000\",\n          \"identifier\": \"PPP1234567890\"\n        }\n      }\n    ],\n    \"product\": {\n      \"id\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\",\n      \"name\": \"Curso Completo de Marketing Digital\",\n      \"type\": \"DIGITAL\"\n    },\n    \"buyer\": {\n      \"name\": \"João Silva\",\n      \"email\": \"joao.silva@email.com\",\n      \"document\": \"12345678900\",\n      \"phone\": \"11999999999\"\n    },\n    \"address\": {\n      \"street\": \"Rua das Flores\",\n      \"number\": \"123\",\n      \"complement\": \"Apto 4B\",\n      \"neighborhood\": \"Centro\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"postal_code\": \"01000-000\"\n    },\n    \"payment_details\": {\n      \"origin\": \"DIRECT\",\n      \"qr_code\": null,\n      \"billet_barcode\": null,\n      \"billet_link\": null,\n      \"last_credit_card_digits\": \"4242\",\n      \"shipping_value\": \"0.00\"\n    },\n    \"coupon\": null,\n    \"subscription\": null,\n    \"affiliate\": null,\n    \"source\": {\n      \"channel\": \"API\",\n      \"api_credential_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n    }\n  }\n}\n```","parameters":[{"name":"Authorization","in":"header","required":false,"description":"`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.","schema":{"type":"string"}},{"name":"X-PagPolar-Test","in":"header","required":false,"description":"`true` só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.","schema":{"type":"string","enum":["true"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","creation_date","version","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro `id`: não use este campo para evitar processamento duplicado."},"event":{"type":"string","const":"TRANSACTION_CHARGEBACK_APPROVED","description":"Nome do evento."},"creation_date":{"type":"string","format":"date-time","description":"Data e hora (UTC) em que esta tentativa foi montada."},"version":{"type":"string","const":"1.0.0","description":"Versão do formato do payload."},"test":{"type":"boolean","const":true,"description":"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`."},"data":{"$ref":"#/components/schemas/ChargebackEventData","description":"Dados do evento. Chega vazio (`{}`) se a venda ou a assinatura não for encontrada no momento do envio."}}},"example":{"id":"550e8400-e29b-41d4-a716-446655440000","event":"TRANSACTION_CHARGEBACK_APPROVED","creation_date":"2026-02-10T09:15:05.000Z","version":"1.0.0","data":{"transaction":{"id":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","identifier":"PPO0087103960","status":"CHARGEBACK_APPROVED","type":"BILLING","payment_method":"CREDIT_CARD","total_amount":"555.2400","net_amount":450,"effective_value":"426.5500","base_tax":"23.4500","installment_tax":"105.2400","base_fixed_tax":"0.9900","base_percentage_tax":"22.4600","installments":12,"cycle":1,"paid_at":"2026-01-29T14:35:00.000Z","created_at":"2026-01-29T14:00:00.000Z","chargeback_approved_at":"2026-02-10T09:15:00.000Z"},"items":[{"id":"f47ac10b-58cc-4372-a567-0e02b2c3d479","quantity":1,"amount":"450.0000","original_amount":"500.0000","discount_value":"50.0000","product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"price":{"id":"1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed","title":"Plano Anual","price":"500.0000","identifier":"PPP1234567890"}}],"product":{"id":"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d","name":"Curso Completo de Marketing Digital","type":"DIGITAL"},"buyer":{"name":"João Silva","email":"joao.silva@email.com","document":"12345678900","phone":"11999999999"},"address":{"street":"Rua das Flores","number":"123","complement":"Apto 4B","neighborhood":"Centro","city":"São Paulo","state":"SP","postal_code":"01000-000"},"payment_details":{"origin":"DIRECT","qr_code":null,"billet_barcode":null,"billet_link":null,"last_credit_card_digits":"4242","shipping_value":"0.00"},"coupon":null,"subscription":null,"affiliate":null,"source":{"channel":"API","api_credential_id":"7c9e6679-7425-40de-944b-e07fc1f90ae7"}}}}}},"responses":{"200":{"description":"Qualquer status 2xx confirma o recebimento. Responda rápido (limite de 10 segundos) e processe o evento depois."}}}},"SUBSCRIPTION_CREATED":{"post":{"tags":["Eventos de assinatura"],"summary":"Assinatura criada","description":"**Evento:** `SUBSCRIPTION_CREATED`\n\nUma assinatura nova foi registrada.\n\n**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.\n\n**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`.\n\n**Atenção:** no cartão, a assinatura nasce `DRAFT`; em PIX ou boleto, nasce `PENDING_PAYMENT`.\n\n### Exemplo de payload\n\n```json\n{\n  \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"event\": \"SUBSCRIPTION_CREATED\",\n  \"creation_date\": \"2026-01-28T10:00:05.000Z\",\n  \"version\": \"1.0.0\",\n  \"data\": {\n    \"subscription\": {\n      \"id\": \"c3d4e5f6-a7b8-4012-8def-123456789012\",\n      \"external_id\": null,\n      \"status\": \"DRAFT\",\n      \"start_at\": \"2026-01-28T10:00:00.000Z\",\n      \"end_at\": null,\n      \"next_billing_at\": \"2026-02-28T10:00:00.000Z\",\n      \"payment_method\": \"CREDIT_CARD\",\n      \"total_amount\": \"49.9000\",\n      \"created_at\": \"2026-01-28T10:00:00.000Z\"\n    },\n    \"product\": {\n      \"id\": \"8a2cdb3c-4a6d-4bad-8add-1a0c6b2cab5c\",\n      \"name\": \"Assinatura Premium Mensal\",\n      \"type\": \"SUBSCRIPTION\"\n    },\n    \"buyer\": {\n      \"name\": \"João Silva\",\n      \"email\": \"joao.silva@email.com\",\n      \"document\": \"12345678900\",\n      \"phone\": \"11999999999\"\n    },\n    \"source\": {\n      \"channel\": \"API\",\n      \"api_credential_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n    }\n  }\n}\n```","parameters":[{"name":"Authorization","in":"header","required":false,"description":"`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.","schema":{"type":"string"}},{"name":"X-PagPolar-Test","in":"header","required":false,"description":"`true` só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.","schema":{"type":"string","enum":["true"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","creation_date","version","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro `id`: não use este campo para evitar processamento duplicado."},"event":{"type":"string","const":"SUBSCRIPTION_CREATED","description":"Nome do evento."},"creation_date":{"type":"string","format":"date-time","description":"Data e hora (UTC) em que esta tentativa foi montada."},"version":{"type":"string","const":"1.0.0","description":"Versão do formato do payload."},"test":{"type":"boolean","const":true,"description":"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`."},"data":{"$ref":"#/components/schemas/SubscriptionEventData","description":"Dados do evento. Chega vazio (`{}`) se a venda ou a assinatura não for encontrada no momento do envio."}}},"example":{"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"}}}}}},"responses":{"200":{"description":"Qualquer status 2xx confirma o recebimento. Responda rápido (limite de 10 segundos) e processe o evento depois."}}}},"SUBSCRIPTION_CONFIRMED":{"post":{"tags":["Eventos de assinatura"],"summary":"Assinatura confirmada","description":"**Evento:** `SUBSCRIPTION_CONFIRMED`\n\nO gateway aceitou a assinatura no cartão de crédito.\n\n**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).\n\n**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`.\n\n**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.\n\n### Exemplo de payload\n\n```json\n{\n  \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"event\": \"SUBSCRIPTION_CONFIRMED\",\n  \"creation_date\": \"2026-01-28T10:00:20.000Z\",\n  \"version\": \"1.0.0\",\n  \"data\": {\n    \"subscription\": {\n      \"id\": \"c3d4e5f6-a7b8-4012-8def-123456789012\",\n      \"external_id\": \"sub_abc123\",\n      \"status\": \"DRAFT\",\n      \"start_at\": \"2026-01-28T10:00:00.000Z\",\n      \"end_at\": null,\n      \"next_billing_at\": \"2026-02-28T10:00:00.000Z\",\n      \"payment_method\": \"CREDIT_CARD\",\n      \"total_amount\": \"49.9000\",\n      \"created_at\": \"2026-01-28T10:00:00.000Z\"\n    },\n    \"product\": {\n      \"id\": \"8a2cdb3c-4a6d-4bad-8add-1a0c6b2cab5c\",\n      \"name\": \"Assinatura Premium Mensal\",\n      \"type\": \"SUBSCRIPTION\"\n    },\n    \"buyer\": {\n      \"name\": \"João Silva\",\n      \"email\": \"joao.silva@email.com\",\n      \"document\": \"12345678900\",\n      \"phone\": \"11999999999\"\n    },\n    \"source\": {\n      \"channel\": \"API\",\n      \"api_credential_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n    }\n  }\n}\n```","parameters":[{"name":"Authorization","in":"header","required":false,"description":"`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.","schema":{"type":"string"}},{"name":"X-PagPolar-Test","in":"header","required":false,"description":"`true` só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.","schema":{"type":"string","enum":["true"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","creation_date","version","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro `id`: não use este campo para evitar processamento duplicado."},"event":{"type":"string","const":"SUBSCRIPTION_CONFIRMED","description":"Nome do evento."},"creation_date":{"type":"string","format":"date-time","description":"Data e hora (UTC) em que esta tentativa foi montada."},"version":{"type":"string","const":"1.0.0","description":"Versão do formato do payload."},"test":{"type":"boolean","const":true,"description":"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`."},"data":{"$ref":"#/components/schemas/SubscriptionEventData","description":"Dados do evento. Chega vazio (`{}`) se a venda ou a assinatura não for encontrada no momento do envio."}}},"example":{"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"}}}}}},"responses":{"200":{"description":"Qualquer status 2xx confirma o recebimento. Responda rápido (limite de 10 segundos) e processe o evento depois."}}}},"SUBSCRIPTION_FAILED":{"post":{"tags":["Eventos de assinatura"],"summary":"Assinatura recusada","description":"**Evento:** `SUBSCRIPTION_FAILED`\n\nA criação da assinatura no cartão de crédito falhou no gateway.\n\n**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`.\n\n**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.\n\n**Atenção:** `status` vira `FAILED` e `external_id` chega `null`. As vendas da assinatura também ficam `FAILED`, sem evento de venda próprio.\n\n### Exemplo de payload\n\n```json\n{\n  \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"event\": \"SUBSCRIPTION_FAILED\",\n  \"creation_date\": \"2026-01-28T10:00:20.000Z\",\n  \"version\": \"1.0.0\",\n  \"data\": {\n    \"subscription\": {\n      \"id\": \"c3d4e5f6-a7b8-4012-8def-123456789012\",\n      \"external_id\": null,\n      \"status\": \"FAILED\",\n      \"start_at\": \"2026-01-28T10:00:00.000Z\",\n      \"end_at\": null,\n      \"next_billing_at\": \"2026-02-28T10:00:00.000Z\",\n      \"payment_method\": \"CREDIT_CARD\",\n      \"total_amount\": \"49.9000\",\n      \"created_at\": \"2026-01-28T10:00:00.000Z\"\n    },\n    \"product\": {\n      \"id\": \"8a2cdb3c-4a6d-4bad-8add-1a0c6b2cab5c\",\n      \"name\": \"Assinatura Premium Mensal\",\n      \"type\": \"SUBSCRIPTION\"\n    },\n    \"buyer\": {\n      \"name\": \"João Silva\",\n      \"email\": \"joao.silva@email.com\",\n      \"document\": \"12345678900\",\n      \"phone\": \"11999999999\"\n    },\n    \"source\": {\n      \"channel\": \"API\",\n      \"api_credential_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n    }\n  }\n}\n```","parameters":[{"name":"Authorization","in":"header","required":false,"description":"`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.","schema":{"type":"string"}},{"name":"X-PagPolar-Test","in":"header","required":false,"description":"`true` só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.","schema":{"type":"string","enum":["true"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","creation_date","version","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro `id`: não use este campo para evitar processamento duplicado."},"event":{"type":"string","const":"SUBSCRIPTION_FAILED","description":"Nome do evento."},"creation_date":{"type":"string","format":"date-time","description":"Data e hora (UTC) em que esta tentativa foi montada."},"version":{"type":"string","const":"1.0.0","description":"Versão do formato do payload."},"test":{"type":"boolean","const":true,"description":"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`."},"data":{"$ref":"#/components/schemas/SubscriptionEventData","description":"Dados do evento. Chega vazio (`{}`) se a venda ou a assinatura não for encontrada no momento do envio."}}},"example":{"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"}}}}}},"responses":{"200":{"description":"Qualquer status 2xx confirma o recebimento. Responda rápido (limite de 10 segundos) e processe o evento depois."}}}},"SUBSCRIPTION_RENEWED":{"post":{"tags":["Eventos de assinatura"],"summary":"Assinatura renovada","description":"**Evento:** `SUBSCRIPTION_RENEWED`\n\nUm ciclo da assinatura no cartão, a partir do segundo, foi pago.\n\n**Quando dispara:** quando o gateway avisa a PagPolar que a cobrança de um ciclo a partir do segundo foi paga.\n\n**O que fazer:** mantenha o acesso e atualize a próxima data de cobrança com `subscription.next_billing_at`.\n\n**Atenção:** chega uma vez a cada ciclo pago, sempre com o mesmo `subscription.id`: não use só esse campo para descartar repetidos. Assinaturas em PIX ou boleto não geram este evento; a renovação delas chega como `TRANSACTION_PAID`.\n\n### Exemplo de payload\n\n```json\n{\n  \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"event\": \"SUBSCRIPTION_RENEWED\",\n  \"creation_date\": \"2026-02-28T10:05:05.000Z\",\n  \"version\": \"1.0.0\",\n  \"data\": {\n    \"subscription\": {\n      \"id\": \"c3d4e5f6-a7b8-4012-8def-123456789012\",\n      \"external_id\": \"sub_abc123\",\n      \"status\": \"ACTIVE\",\n      \"start_at\": \"2026-01-28T10:00:00.000Z\",\n      \"end_at\": null,\n      \"next_billing_at\": \"2026-03-28T10:00:00.000Z\",\n      \"payment_method\": \"CREDIT_CARD\",\n      \"total_amount\": \"49.9000\",\n      \"created_at\": \"2026-01-28T10:00:00.000Z\"\n    },\n    \"product\": {\n      \"id\": \"8a2cdb3c-4a6d-4bad-8add-1a0c6b2cab5c\",\n      \"name\": \"Assinatura Premium Mensal\",\n      \"type\": \"SUBSCRIPTION\"\n    },\n    \"buyer\": {\n      \"name\": \"João Silva\",\n      \"email\": \"joao.silva@email.com\",\n      \"document\": \"12345678900\",\n      \"phone\": \"11999999999\"\n    },\n    \"source\": {\n      \"channel\": \"API\",\n      \"api_credential_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n    }\n  }\n}\n```","parameters":[{"name":"Authorization","in":"header","required":false,"description":"`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.","schema":{"type":"string"}},{"name":"X-PagPolar-Test","in":"header","required":false,"description":"`true` só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.","schema":{"type":"string","enum":["true"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","creation_date","version","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro `id`: não use este campo para evitar processamento duplicado."},"event":{"type":"string","const":"SUBSCRIPTION_RENEWED","description":"Nome do evento."},"creation_date":{"type":"string","format":"date-time","description":"Data e hora (UTC) em que esta tentativa foi montada."},"version":{"type":"string","const":"1.0.0","description":"Versão do formato do payload."},"test":{"type":"boolean","const":true,"description":"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`."},"data":{"$ref":"#/components/schemas/SubscriptionEventData","description":"Dados do evento. Chega vazio (`{}`) se a venda ou a assinatura não for encontrada no momento do envio."}}},"example":{"id":"550e8400-e29b-41d4-a716-446655440000","event":"SUBSCRIPTION_RENEWED","creation_date":"2026-02-28T10:05:05.000Z","version":"1.0.0","data":{"subscription":{"id":"c3d4e5f6-a7b8-4012-8def-123456789012","external_id":"sub_abc123","status":"ACTIVE","start_at":"2026-01-28T10:00:00.000Z","end_at":null,"next_billing_at":"2026-03-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"}}}}}},"responses":{"200":{"description":"Qualquer status 2xx confirma o recebimento. Responda rápido (limite de 10 segundos) e processe o evento depois."}}}},"SUBSCRIPTION_DELAYED":{"post":{"tags":["Eventos de assinatura"],"summary":"Assinatura em atraso","description":"**Evento:** `SUBSCRIPTION_DELAYED`\n\nA renovação de uma assinatura em PIX ou boleto está atrasada, mas ainda dentro do prazo de carência.\n\n**Quando dispara:** na verificação diária de assinaturas, quando a data de renovação já passou, a renovação não foi paga e o prazo de carência ainda não acabou. Pode chegar uma vez por dia enquanto a assinatura seguir nessa situação.\n\n**O que fazer:** lembre o cliente de pagar.\n\n**Atenção:** a assinatura está `PENDING_RENEWAL`. Se o prazo acabar sem pagamento, chega `SUBSCRIPTION_EXPIRED`. Assinaturas no cartão não geram este evento.\n\n### Exemplo de payload\n\n```json\n{\n  \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"event\": \"SUBSCRIPTION_DELAYED\",\n  \"creation_date\": \"2026-03-01T08:00:05.000Z\",\n  \"version\": \"1.0.0\",\n  \"data\": {\n    \"subscription\": {\n      \"id\": \"c3d4e5f6-a7b8-4012-8def-123456789012\",\n      \"external_id\": null,\n      \"status\": \"PENDING_RENEWAL\",\n      \"start_at\": \"2026-01-28T10:00:00.000Z\",\n      \"end_at\": null,\n      \"next_billing_at\": \"2026-02-28T10:00:00.000Z\",\n      \"payment_method\": \"BOLETO\",\n      \"total_amount\": \"49.9000\",\n      \"created_at\": \"2026-01-28T10:00:00.000Z\"\n    },\n    \"product\": {\n      \"id\": \"8a2cdb3c-4a6d-4bad-8add-1a0c6b2cab5c\",\n      \"name\": \"Assinatura Premium Mensal\",\n      \"type\": \"SUBSCRIPTION\"\n    },\n    \"buyer\": {\n      \"name\": \"João Silva\",\n      \"email\": \"joao.silva@email.com\",\n      \"document\": \"12345678900\",\n      \"phone\": \"11999999999\"\n    },\n    \"source\": {\n      \"channel\": \"API\",\n      \"api_credential_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n    }\n  }\n}\n```","parameters":[{"name":"Authorization","in":"header","required":false,"description":"`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.","schema":{"type":"string"}},{"name":"X-PagPolar-Test","in":"header","required":false,"description":"`true` só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.","schema":{"type":"string","enum":["true"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","creation_date","version","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro `id`: não use este campo para evitar processamento duplicado."},"event":{"type":"string","const":"SUBSCRIPTION_DELAYED","description":"Nome do evento."},"creation_date":{"type":"string","format":"date-time","description":"Data e hora (UTC) em que esta tentativa foi montada."},"version":{"type":"string","const":"1.0.0","description":"Versão do formato do payload."},"test":{"type":"boolean","const":true,"description":"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`."},"data":{"$ref":"#/components/schemas/SubscriptionEventData","description":"Dados do evento. Chega vazio (`{}`) se a venda ou a assinatura não for encontrada no momento do envio."}}},"example":{"id":"550e8400-e29b-41d4-a716-446655440000","event":"SUBSCRIPTION_DELAYED","creation_date":"2026-03-01T08:00:05.000Z","version":"1.0.0","data":{"subscription":{"id":"c3d4e5f6-a7b8-4012-8def-123456789012","external_id":null,"status":"PENDING_RENEWAL","start_at":"2026-01-28T10:00:00.000Z","end_at":null,"next_billing_at":"2026-02-28T10:00:00.000Z","payment_method":"BOLETO","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"}}}}}},"responses":{"200":{"description":"Qualquer status 2xx confirma o recebimento. Responda rápido (limite de 10 segundos) e processe o evento depois."}}}},"SUBSCRIPTION_EXPIRED":{"post":{"tags":["Eventos de assinatura"],"summary":"Assinatura expirada","description":"**Evento:** `SUBSCRIPTION_EXPIRED`\n\nA assinatura em PIX ou boleto passou do prazo de carência sem pagar a renovação.\n\n**Quando dispara:** na verificação diária de assinaturas, depois que o prazo de carência da renovação acaba sem pagamento.\n\n**O que fazer:** revogue o acesso do cliente.\n\n**Atenção:** o `status` vira `EXPIRED`. Assinaturas no cartão não geram este evento.\n\n### Exemplo de payload\n\n```json\n{\n  \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"event\": \"SUBSCRIPTION_EXPIRED\",\n  \"creation_date\": \"2026-03-06T08:00:05.000Z\",\n  \"version\": \"1.0.0\",\n  \"data\": {\n    \"subscription\": {\n      \"id\": \"c3d4e5f6-a7b8-4012-8def-123456789012\",\n      \"external_id\": null,\n      \"status\": \"EXPIRED\",\n      \"start_at\": \"2026-01-28T10:00:00.000Z\",\n      \"end_at\": null,\n      \"next_billing_at\": \"2026-02-28T10:00:00.000Z\",\n      \"payment_method\": \"BOLETO\",\n      \"total_amount\": \"49.9000\",\n      \"created_at\": \"2026-01-28T10:00:00.000Z\"\n    },\n    \"product\": {\n      \"id\": \"8a2cdb3c-4a6d-4bad-8add-1a0c6b2cab5c\",\n      \"name\": \"Assinatura Premium Mensal\",\n      \"type\": \"SUBSCRIPTION\"\n    },\n    \"buyer\": {\n      \"name\": \"João Silva\",\n      \"email\": \"joao.silva@email.com\",\n      \"document\": \"12345678900\",\n      \"phone\": \"11999999999\"\n    },\n    \"source\": {\n      \"channel\": \"API\",\n      \"api_credential_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n    }\n  }\n}\n```","parameters":[{"name":"Authorization","in":"header","required":false,"description":"`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.","schema":{"type":"string"}},{"name":"X-PagPolar-Test","in":"header","required":false,"description":"`true` só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.","schema":{"type":"string","enum":["true"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","creation_date","version","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro `id`: não use este campo para evitar processamento duplicado."},"event":{"type":"string","const":"SUBSCRIPTION_EXPIRED","description":"Nome do evento."},"creation_date":{"type":"string","format":"date-time","description":"Data e hora (UTC) em que esta tentativa foi montada."},"version":{"type":"string","const":"1.0.0","description":"Versão do formato do payload."},"test":{"type":"boolean","const":true,"description":"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`."},"data":{"$ref":"#/components/schemas/SubscriptionEventData","description":"Dados do evento. Chega vazio (`{}`) se a venda ou a assinatura não for encontrada no momento do envio."}}},"example":{"id":"550e8400-e29b-41d4-a716-446655440000","event":"SUBSCRIPTION_EXPIRED","creation_date":"2026-03-06T08:00:05.000Z","version":"1.0.0","data":{"subscription":{"id":"c3d4e5f6-a7b8-4012-8def-123456789012","external_id":null,"status":"EXPIRED","start_at":"2026-01-28T10:00:00.000Z","end_at":null,"next_billing_at":"2026-02-28T10:00:00.000Z","payment_method":"BOLETO","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"}}}}}},"responses":{"200":{"description":"Qualquer status 2xx confirma o recebimento. Responda rápido (limite de 10 segundos) e processe o evento depois."}}}},"SUBSCRIPTION_CANCELED":{"post":{"tags":["Eventos de assinatura"],"summary":"Assinatura cancelada","description":"**Evento:** `SUBSCRIPTION_CANCELED`\n\nO cancelamento da assinatura foi efetivado.\n\n**Quando dispara:** em PIX ou boleto, na hora do pedido de cancelamento. No cartão, quando o gateway informa o cancelamento ou a recusa: o pedido feito em `DELETE /v1/subscriptions/{id}` deixa a assinatura em `CANCELING`, sem evento, até essa confirmação. O pedido de reembolso total de uma venda de assinatura, o estorno concluído e o chargeback aprovado também pedem o cancelamento.\n\n**O que fazer:** encerre a assinatura no seu sistema e revogue o acesso. Se precisar da data, confira `end_at` em `GET /v1/subscriptions/{id}`.\n\n**Atenção:** no cartão, `end_at` é gravado logo depois do envio deste evento, então o payload pode chegar com `end_at` `null`. Em PIX ou boleto, `end_at` recebe a data do cancelamento.\n\n### Exemplo de payload\n\n```json\n{\n  \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"event\": \"SUBSCRIPTION_CANCELED\",\n  \"creation_date\": \"2026-03-15T08:00:05.000Z\",\n  \"version\": \"1.0.0\",\n  \"data\": {\n    \"subscription\": {\n      \"id\": \"c3d4e5f6-a7b8-4012-8def-123456789012\",\n      \"external_id\": \"sub_abc123\",\n      \"status\": \"CANCELED\",\n      \"start_at\": \"2026-01-28T10:00:00.000Z\",\n      \"end_at\": \"2026-03-15T08:00:00.000Z\",\n      \"next_billing_at\": \"2026-02-28T10:00:00.000Z\",\n      \"payment_method\": \"CREDIT_CARD\",\n      \"total_amount\": \"49.9000\",\n      \"created_at\": \"2026-01-28T10:00:00.000Z\"\n    },\n    \"product\": {\n      \"id\": \"8a2cdb3c-4a6d-4bad-8add-1a0c6b2cab5c\",\n      \"name\": \"Assinatura Premium Mensal\",\n      \"type\": \"SUBSCRIPTION\"\n    },\n    \"buyer\": {\n      \"name\": \"João Silva\",\n      \"email\": \"joao.silva@email.com\",\n      \"document\": \"12345678900\",\n      \"phone\": \"11999999999\"\n    },\n    \"source\": {\n      \"channel\": \"API\",\n      \"api_credential_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n    }\n  }\n}\n```","parameters":[{"name":"Authorization","in":"header","required":false,"description":"`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.","schema":{"type":"string"}},{"name":"X-PagPolar-Test","in":"header","required":false,"description":"`true` só nos envios de teste feitos pelo Playground de webhooks do portal. Os eventos reais não trazem este header.","schema":{"type":"string","enum":["true"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","creation_date","version","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Id desta tentativa de entrega. Cada nova tentativa do mesmo evento chega com outro `id`: não use este campo para evitar processamento duplicado."},"event":{"type":"string","const":"SUBSCRIPTION_CANCELED","description":"Nome do evento."},"creation_date":{"type":"string","format":"date-time","description":"Data e hora (UTC) em que esta tentativa foi montada."},"version":{"type":"string","const":"1.0.0","description":"Versão do formato do payload."},"test":{"type":"boolean","const":true,"description":"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`."},"data":{"$ref":"#/components/schemas/SubscriptionEventData","description":"Dados do evento. Chega vazio (`{}`) se a venda ou a assinatura não for encontrada no momento do envio."}}},"example":{"id":"550e8400-e29b-41d4-a716-446655440000","event":"SUBSCRIPTION_CANCELED","creation_date":"2026-03-15T08:00:05.000Z","version":"1.0.0","data":{"subscription":{"id":"c3d4e5f6-a7b8-4012-8def-123456789012","external_id":"sub_abc123","status":"CANCELED","start_at":"2026-01-28T10:00:00.000Z","end_at":"2026-03-15T08:00:00.000Z","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"}}}}}},"responses":{"200":{"description":"Qualquer status 2xx confirma o recebimento. Responda rápido (limite de 10 segundos) e processe o evento depois."}}}}},"components":{"schemas":{"TransactionEventData":{"type":"object","description":"Dados de um evento de venda.","required":["transaction","items","product","buyer","address","payment_details","coupon","subscription","affiliate","source"],"properties":{"transaction":{"$ref":"#/components/schemas/WebhookTransaction"},"items":{"type":"array","description":"Itens da venda. Lista vazia quando não há itens.","items":{"$ref":"#/components/schemas/WebhookItem"}},"product":{"anyOf":[{"$ref":"#/components/schemas/WebhookProduct"},{"type":"null"}],"description":"Produto principal da venda."},"buyer":{"anyOf":[{"$ref":"#/components/schemas/WebhookBuyer"},{"type":"null"}]},"address":{"anyOf":[{"$ref":"#/components/schemas/WebhookAddress"},{"type":"null"}],"description":"`null` quando a venda não tem endereço."},"payment_details":{"anyOf":[{"$ref":"#/components/schemas/WebhookPaymentDetails"},{"type":"null"}]},"coupon":{"anyOf":[{"$ref":"#/components/schemas/WebhookCoupon"},{"type":"null"}],"description":"`null` quando a compra não usou cupom."},"subscription":{"anyOf":[{"$ref":"#/components/schemas/WebhookSubscriptionSummary"},{"type":"null"}],"description":"`null` em vendas avulsas."},"affiliate":{"anyOf":[{"$ref":"#/components/schemas/WebhookAffiliate"},{"type":"null"}],"description":"`null` quando a venda não veio de um afiliado."},"source":{"$ref":"#/components/schemas/WebhookSource"},"order_bumps":{"type":"array","description":"Só aparece quando a venda é a principal (`payment_details.origin` = `DIRECT`) e tem order bumps ou upsells.","items":{"$ref":"#/components/schemas/WebhookRelatedTransaction"}},"reference_transaction":{"$ref":"#/components/schemas/WebhookRelatedTransaction","description":"Só aparece quando a venda é um order bump ou upsell (`payment_details.origin` = `ORDERBUMP` ou `UPSELL`): traz a venda principal."}}},"RefundEventData":{"type":"object","description":"Dados de um evento de reembolso.","required":["transaction","items","product","buyer","address","payment_details","coupon","subscription","affiliate","source"],"properties":{"transaction":{"$ref":"#/components/schemas/WebhookRefundTransaction"},"items":{"type":"array","description":"Itens da venda. Lista vazia quando não há itens.","items":{"$ref":"#/components/schemas/WebhookItem"}},"product":{"anyOf":[{"$ref":"#/components/schemas/WebhookProduct"},{"type":"null"}],"description":"Produto principal da venda."},"buyer":{"anyOf":[{"$ref":"#/components/schemas/WebhookBuyer"},{"type":"null"}]},"address":{"anyOf":[{"$ref":"#/components/schemas/WebhookAddress"},{"type":"null"}],"description":"`null` quando a venda não tem endereço."},"payment_details":{"anyOf":[{"$ref":"#/components/schemas/WebhookPaymentDetails"},{"type":"null"}]},"coupon":{"anyOf":[{"$ref":"#/components/schemas/WebhookCoupon"},{"type":"null"}],"description":"`null` quando a compra não usou cupom."},"subscription":{"anyOf":[{"$ref":"#/components/schemas/WebhookSubscriptionSummary"},{"type":"null"}],"description":"`null` em vendas avulsas."},"affiliate":{"anyOf":[{"$ref":"#/components/schemas/WebhookAffiliate"},{"type":"null"}],"description":"`null` quando a venda não veio de um afiliado."},"source":{"$ref":"#/components/schemas/WebhookSource"},"order_bumps":{"type":"array","description":"Só aparece quando a venda é a principal (`payment_details.origin` = `DIRECT`) e tem order bumps ou upsells.","items":{"$ref":"#/components/schemas/WebhookRelatedTransaction"}},"reference_transaction":{"$ref":"#/components/schemas/WebhookRelatedTransaction","description":"Só aparece quando a venda é um order bump ou upsell (`payment_details.origin` = `ORDERBUMP` ou `UPSELL`): traz a venda principal."}}},"ChargebackEventData":{"type":"object","description":"Dados de um evento de chargeback.","required":["transaction","items","product","buyer","address","payment_details","coupon","subscription","affiliate","source"],"properties":{"transaction":{"$ref":"#/components/schemas/WebhookChargebackTransaction"},"items":{"type":"array","description":"Itens da venda. Lista vazia quando não há itens.","items":{"$ref":"#/components/schemas/WebhookItem"}},"product":{"anyOf":[{"$ref":"#/components/schemas/WebhookProduct"},{"type":"null"}],"description":"Produto principal da venda."},"buyer":{"anyOf":[{"$ref":"#/components/schemas/WebhookBuyer"},{"type":"null"}]},"address":{"anyOf":[{"$ref":"#/components/schemas/WebhookAddress"},{"type":"null"}],"description":"`null` quando a venda não tem endereço."},"payment_details":{"anyOf":[{"$ref":"#/components/schemas/WebhookPaymentDetails"},{"type":"null"}]},"coupon":{"anyOf":[{"$ref":"#/components/schemas/WebhookCoupon"},{"type":"null"}],"description":"`null` quando a compra não usou cupom."},"subscription":{"anyOf":[{"$ref":"#/components/schemas/WebhookSubscriptionSummary"},{"type":"null"}],"description":"`null` em vendas avulsas."},"affiliate":{"anyOf":[{"$ref":"#/components/schemas/WebhookAffiliate"},{"type":"null"}],"description":"`null` quando a venda não veio de um afiliado."},"source":{"$ref":"#/components/schemas/WebhookSource"},"order_bumps":{"type":"array","description":"Só aparece quando a venda é a principal (`payment_details.origin` = `DIRECT`) e tem order bumps ou upsells.","items":{"$ref":"#/components/schemas/WebhookRelatedTransaction"}},"reference_transaction":{"$ref":"#/components/schemas/WebhookRelatedTransaction","description":"Só aparece quando a venda é um order bump ou upsell (`payment_details.origin` = `ORDERBUMP` ou `UPSELL`): traz a venda principal."}}},"SubscriptionEventData":{"type":"object","description":"Dados de um evento de assinatura.","required":["subscription","product","buyer","source"],"properties":{"subscription":{"$ref":"#/components/schemas/WebhookSubscription"},"product":{"anyOf":[{"$ref":"#/components/schemas/WebhookProduct"},{"type":"null"}]},"buyer":{"anyOf":[{"$ref":"#/components/schemas/WebhookBuyer"},{"type":"null"}]},"source":{"$ref":"#/components/schemas/WebhookSource"}}},"WebhookTransaction":{"type":"object","description":"A venda no momento do envio.","required":["id","identifier","status","type","payment_method","total_amount","net_amount","effective_value","base_tax","installment_tax","base_fixed_tax","base_percentage_tax","installments","cycle","paid_at","created_at"],"properties":{"id":{"type":"string","format":"uuid","description":"Id da venda. Use-o para ligar o evento ao pedido no seu sistema e para consultar a venda em `GET /v1/sales/{identifier}`."},"identifier":{"type":"string","description":"Código da venda: prefixo `PPO` seguido de 10 dígitos, como `PPO0087103960`. É o mesmo código das respostas da API e do painel."},"status":{"type":"string","enum":["DRAFT","OPEN","PROCESSING","PAID","CANCELED","ASK_REFUND","ASK_PARTIAL_REFUND","REFUNDED","PARTIALLY_REFUNDED","REFUNDING","ABANDONED","EXPIRED","FAILED","CHARGEBACK_REQUESTED","CHARGEBACK_APPROVED"],"description":"Status da venda no momento em que o evento foi montado."},"type":{"type":"string","enum":["BILLING","TRANSFER","FEE"],"description":"Tipo da transação. `BILLING` é a cobrança feita ao cliente."},"payment_method":{"type":["string","null"],"enum":["CREDIT_CARD","PIX","BOLETO","APPLE_PAY","GOOGLE_PAY",null],"description":"Meio de pagamento."},"total_amount":{"type":"string","description":"Valor total pago pelo cliente, em reais, **com** os juros do parcelamento. Chega como texto com casas decimais fixas (ex.: `\"197.0000\"`). Converta para número antes de fazer contas."},"net_amount":{"type":"number","description":"Valor da venda em reais **sem** os juros do parcelamento (`total_amount - installment_tax`), já com o desconto do cupom. Chega como número. É o valor indicado para conciliação."},"effective_value":{"type":"string","description":"Valor líquido que fica para o vendedor, em reais (`net_amount - base_tax`). Chega como texto com casas decimais fixas (ex.: `\"197.0000\"`). Converta para número antes de fazer contas."},"base_tax":{"type":"string","description":"Taxa da plataforma sobre a venda, em reais (`base_fixed_tax + base_percentage_tax`). Chega como texto com casas decimais fixas (ex.: `\"197.0000\"`). Converta para número antes de fazer contas."},"installment_tax":{"type":"string","description":"Juros do parcelamento embutidos em `total_amount`, em reais. Chega como texto com casas decimais fixas (ex.: `\"197.0000\"`). Converta para número antes de fazer contas."},"base_fixed_tax":{"type":["string","null"],"description":"Parte fixa da taxa da plataforma, em reais. Chega como texto com casas decimais fixas (ex.: `\"197.0000\"`). Converta para número antes de fazer contas."},"base_percentage_tax":{"type":["string","null"],"description":"Parte percentual da taxa da plataforma, já convertida em reais. Chega como texto com casas decimais fixas (ex.: `\"197.0000\"`). Converta para número antes de fazer contas."},"installments":{"type":"integer","description":"Quantidade de parcelas. `1` para pagamento à vista."},"cycle":{"type":"integer","description":"Ciclo da assinatura a que a venda pertence. `1` na primeira cobrança e em vendas avulsas."},"paid_at":{"type":["string","null"],"format":"date-time","description":"Data e hora da confirmação do pagamento. `null` enquanto não foi paga."},"created_at":{"type":"string","format":"date-time","description":"Data e hora em que a venda foi criada."}}},"WebhookRefundTransaction":{"allOf":[{"$ref":"#/components/schemas/WebhookTransaction"},{"type":"object","description":"Dados do reembolso.","required":["refund_reason","refund_at"],"properties":{"refund_reason":{"type":["string","null"],"description":"Motivo informado no pedido de reembolso."},"refund_at":{"type":["string","null"],"format":"date-time","description":"Data e hora em que o reembolso foi efetuado. `null` enquanto o reembolso só foi pedido."}}}]},"WebhookChargebackTransaction":{"allOf":[{"$ref":"#/components/schemas/WebhookTransaction"},{"type":"object","description":"Dados do chargeback.","required":["chargeback_approved_at"],"properties":{"chargeback_approved_at":{"type":["string","null"],"format":"date-time","description":"Data e hora em que o chargeback foi aprovado."}}}]},"WebhookItem":{"type":"object","description":"Item da venda. Itens internos (vinculados a outro item) não são enviados.","required":["id","quantity","amount","original_amount","discount_value","product","price"],"properties":{"id":{"type":"string","format":"uuid","description":"Id do item."},"quantity":{"type":"integer","description":"Quantidade."},"amount":{"type":"string","description":"Valor cobrado pelo item, em reais, já com desconto. Chega como texto com casas decimais fixas (ex.: `\"197.0000\"`). Converta para número antes de fazer contas."},"original_amount":{"type":"string","description":"Valor do item antes do desconto, em reais. Chega como texto com casas decimais fixas (ex.: `\"197.0000\"`). Converta para número antes de fazer contas."},"discount_value":{"type":"string","description":"Desconto aplicado ao item, em reais. Chega como texto com casas decimais fixas (ex.: `\"197.0000\"`). Converta para número antes de fazer contas."},"product":{"anyOf":[{"$ref":"#/components/schemas/WebhookProduct"},{"type":"null"}]},"price":{"anyOf":[{"type":"object","description":"Oferta usada na venda.","required":["id","title","price","identifier"],"properties":{"id":{"type":"string","format":"uuid","description":"Id da oferta."},"title":{"type":["string","null"],"description":"Nome da oferta."},"price":{"type":"string","description":"Preço da oferta, em reais. Chega como texto com casas decimais fixas (ex.: `\"197.0000\"`). Converta para número antes de fazer contas."},"identifier":{"type":["string","null"],"description":"Código da oferta: prefixo `PPP` seguido de 10 dígitos, como `PPP1234567890`. É o mesmo código das respostas da API e do link do checkout; `offer_identifier` aceita com ou sem o prefixo."}}},{"type":"null"}]}}},"WebhookProduct":{"type":"object","description":"Produto vendido.","required":["id","name","type"],"properties":{"id":{"type":"string","format":"uuid","description":"Id do produto."},"name":{"type":"string","description":"Nome do produto."},"type":{"type":"string","enum":["PHYSICAL","DIGITAL","SUBSCRIPTION","PACKAGE"],"description":"Tipo do produto."}}},"WebhookBuyer":{"type":"object","description":"Cliente. **Os dados chegam sem máscara**: trate-os como dados pessoais.","required":["name","email","document","phone"],"properties":{"name":{"type":["string","null"],"description":"Nome."},"email":{"type":["string","null"],"description":"E-mail."},"document":{"type":["string","null"],"description":"CPF ou CNPJ no formato em que foi informado na compra, com ou sem pontuação. Remova tudo que não for número antes de comparar."},"phone":{"type":["string","null"],"description":"Telefone."}}},"WebhookAddress":{"type":"object","description":"Endereço de entrega.","required":["street","number","complement","neighborhood","city","state","postal_code"],"properties":{"street":{"type":["string","null"],"description":"Logradouro."},"number":{"type":["string","null"],"description":"Número."},"complement":{"type":["string","null"],"description":"Complemento."},"neighborhood":{"type":["string","null"],"description":"Bairro."},"city":{"type":["string","null"],"description":"Cidade."},"state":{"type":["string","null"],"description":"UF."},"postal_code":{"type":["string","null"],"description":"CEP."}}},"WebhookPaymentDetails":{"type":"object","description":"Detalhes do pagamento e da origem da transação.","required":["origin","qr_code","billet_barcode","billet_link","last_credit_card_digits","shipping_value"],"properties":{"origin":{"type":["string","null"],"enum":["DIRECT","ORDERBUMP","UPSELL","GIFT","UPSELL_FLOW","AFFILIATE_REWARD",null],"description":"Papel da transação na compra: `DIRECT` é a venda principal; `ORDERBUMP` e `UPSELL` são ofertas adicionais ligadas a ela."},"qr_code":{"type":["string","null"],"description":"Código PIX copia e cola. `null` fora do PIX."},"billet_barcode":{"type":["string","null"],"description":"Linha digitável do boleto. `null` fora do boleto."},"billet_link":{"type":["string","null"],"description":"Link do PDF do boleto. `null` fora do boleto."},"last_credit_card_digits":{"type":["string","null"],"description":"Últimos 4 dígitos do cartão. `null` fora do cartão."},"shipping_value":{"type":["string","null"],"description":"Valor do frete, em reais. Chega como texto com casas decimais fixas (ex.: `\"197.0000\"`). Converta para número antes de fazer contas."}}},"WebhookCoupon":{"type":"object","description":"Cupom usado na compra.","required":["id","code","name","fixed_value","percentage_value"],"properties":{"id":{"type":"string","format":"uuid","description":"Id do cupom."},"code":{"type":"string","description":"Código digitado pelo cliente."},"name":{"type":["string","null"],"description":"Nome da campanha."},"fixed_value":{"type":["number","null"],"description":"Desconto fixo em reais. Chega como número. `null` quando o cupom é percentual."},"percentage_value":{"type":["number","null"],"description":"Desconto percentual. Chega como número. `null` quando o cupom é de valor fixo."}}},"WebhookSubscriptionSummary":{"type":"object","description":"Resumo da assinatura a que a venda pertence.","required":["id","status","start_at","next_billing_at"],"properties":{"id":{"type":"string","format":"uuid","description":"Id da assinatura."},"status":{"type":"string","enum":["DRAFT","PENDING_PAYMENT","ACTIVE","PENDING_RENEWAL","PROCESSING","CANCELING","CANCELED","ASK_REFUND","REFUNDED","ABANDONED","EXPIRED","FAILED"],"description":"Status da assinatura no momento do envio."},"start_at":{"type":["string","null"],"format":"date-time","description":"Início da assinatura."},"next_billing_at":{"type":["string","null"],"format":"date-time","description":"Data da próxima cobrança."}}},"WebhookSubscription":{"type":"object","description":"A assinatura no momento do envio.","required":["id","external_id","status","start_at","end_at","next_billing_at","payment_method","total_amount","created_at"],"properties":{"id":{"type":"string","format":"uuid","description":"Id da assinatura. Use-o em `GET /v1/subscriptions/{id}` e para ligar o evento ao cliente no seu sistema."},"external_id":{"type":["string","null"],"description":"Id da assinatura no gateway. `null` enquanto o gateway não confirmou a assinatura, e em assinaturas PIX ou boleto."},"status":{"type":"string","enum":["DRAFT","PENDING_PAYMENT","ACTIVE","PENDING_RENEWAL","PROCESSING","CANCELING","CANCELED","ASK_REFUND","REFUNDED","ABANDONED","EXPIRED","FAILED"],"description":"Status da assinatura no momento do envio."},"start_at":{"type":["string","null"],"format":"date-time","description":"Início da assinatura."},"end_at":{"type":["string","null"],"format":"date-time","description":"Fim da assinatura. `null` enquanto ela não tem data para acabar."},"next_billing_at":{"type":["string","null"],"format":"date-time","description":"Data da próxima cobrança."},"payment_method":{"type":["string","null"],"enum":["CREDIT_CARD","PIX","BOLETO","APPLE_PAY","GOOGLE_PAY",null],"description":"Meio de pagamento da assinatura."},"total_amount":{"type":"string","description":"Valor de cada ciclo, em reais. Chega como texto com casas decimais fixas (ex.: `\"197.0000\"`). Converta para número antes de fazer contas."},"created_at":{"type":"string","format":"date-time","description":"Data e hora em que a assinatura foi criada."}}},"WebhookSource":{"type":"object","description":"Canal em que a venda nasceu. Order bumps, upsells e renovações herdam o canal da venda original; eventos de assinatura usam o canal da primeira cobrança.","required":["channel","api_credential_id"],"properties":{"channel":{"type":"string","enum":["CHECKOUT","API","MANUAL","AWARD"],"description":"`CHECKOUT`: checkout da PagPolar. `API`: pedido criado pela API. `MANUAL`: venda cortesia gerada pelo vendedor (por exemplo, ingresso emitido manualmente). `AWARD`: prêmio de afiliado."},"api_credential_id":{"type":["string","null"],"format":"uuid","description":"Id da credencial que criou o pedido quando `channel` é `API`. `null` nos demais canais. Use para ignorar vendas que a sua integração não criou."}}},"WebhookAffiliate":{"type":"object","description":"Afiliado que indicou a venda. Order bumps e upsells trazem o afiliado da venda original.","required":["identifier","name","commission_type","commission_value","product_quantity"],"properties":{"identifier":{"type":"string","description":"Código do afiliado, com o prefixo `PAO` seguido de 10 dígitos."},"name":{"type":["string","null"],"description":"Nome da conta do afiliado: o nome fantasia ou, sem ele, a razão social."},"commission_type":{"type":"string","enum":["COMMISSION","PRODUCT"],"description":"`COMMISSION`: comissão em dinheiro. `PRODUCT`: comissão em unidades do produto."},"commission_value":{"type":["number","null"],"description":"Comissão da venda em reais, somando os repasses ao afiliado. `null` quando `commission_type` é `PRODUCT` ou enquanto o repasse ainda não foi gerado (por exemplo, antes do pagamento)."},"product_quantity":{"type":["integer","null"],"description":"Unidades do produto por recompensa quando `commission_type` é `PRODUCT`. `null` na comissão em dinheiro."}}},"WebhookRelatedTransaction":{"type":"object","description":"Transação ligada à venda do evento (order bump, upsell ou venda principal).","required":["transaction","items","product"],"properties":{"transaction":{"$ref":"#/components/schemas/WebhookTransaction"},"items":{"type":"array","items":{"$ref":"#/components/schemas/WebhookItem"}},"product":{"anyOf":[{"$ref":"#/components/schemas/WebhookProduct"},{"type":"null"}]}}}}}}