# Webhooks de Assinatura

{% hint style="warning" %}
É importante ficar atento à diferença entre os webhooks de compra e de renovação de assinaturas. Na compra, o webhook

transaction.approved

se refere ao pedido; já na renovação, ele se refere ao invoice. Por isso, os dados são enviados em campos diferentes.
{% endhint %}

No momento da compra de um produto de assinatura, é criado um pedido (order) e são enviados dois webhooks:

* Transação Aprovada (transaction.approved)
* Liberação de Acesso (release.access)

O primeiro webhook, referente à compra, está associado ao pedido, portanto as informações da compra estarão disponíveis no campo `order`:

{% stepper %}
{% step %}

### Compra (pedido criado)

Payload de exemplo (os dados principais aparecem em `order`):

```json
{"company":{...},"payload":{"object":"transaction","event":"transaction.approved","created_at":"2026-01-02 16:48:57","data":{...},"payment_details":{...},"comissions":[],"order":{"id":7405530048429536000,"customer":{"id":"7394310639977632991","name":"João da Silva","email":"joao@example.com","phone_country":null,"phone":"+55 11999999999","document_type":"cpf","document_number":"00000000000"},"main_product":{...},"order_bump":[...],"utms":[...]},"subscription":null}}
```

{% endstep %}

{% step %}

### Renovação (invoice)

Na renovação da assinatura, será enviado apenas o webhook de Transação Aprovada (transaction.approved), disparado quando o pagamento da renovação for realizado. Nesse caso, o webhook estará associado ao invoice gerado, e as informações da renovação estarão disponíveis no campo `subscription`:

```json
{"company":{...},"payload":{"object":"transaction","event":"transaction.approved","created_at":"2026-01-02 16:48:57","data":{...},"payment_details":{...},"comissions":[],"order":null,"main_product":{...},"order_bump":[...],"utms":[...]},"subscription":{"code":"SB1B4H1HJ","periodicity":"monthly","periodicity_interval":1,"price":12333,"status":"active","started_at":"2025-12-02 20:02:23","next_billing_at":"2026-02-02 20:02:23","suspended_at":null,"canceled_at":null,"created_at":"2025-12-02 20:02:23","subscriber":{"id":"7394310639977632991","name":"João da Silva","email":"joao@example.com","phone_country":null,"phone":"+55 11999999999","document_type":"cpf","document_number":"00000000000"},"product":{"id":7394309835643586000,"title":"Produto de assinatura","price":12333},"invoice":{"code":"SBIN1B4H1M1","attempts":2,"status":"paid","paid_at":"2026-01-03 11:00:13","refunded_at":null,"charged_back_at":null,"billing_date":"2026-01-02 20:02:23","created_at":"2026-01-03 11:00:09"},"transactions":[{"paid_at":"2026-01-03T11:00:13+00:00","payment_method":"credit_card","instalments":1,"currency":"BRL","value":12333,"status":"approved","credit_card":{"instalments":1,"brand":"discover","last_digit":1234}},{"paid_at":"2026-01-03T11:00:13+00:00","payment_method":"credit_card","instalments":1,"currency":"BRL","value":12333,"status":"approved","credit_card":{"instalments":1,"brand":"discover","last_digit":1234}}]}}
```

{% endstep %}
{% endstepper %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://documentation.themembers.dev.br/webhooks/webhooks-do-checkout/webhooks-de-assinatura.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
