> ## Documentation Index
> Fetch the complete documentation index at: https://docs.moneydev.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Referência de eventos

> O envelope comum dos webhooks da MoneyDev e o corpo de cada tipo de evento: payment.succeeded, payment.failed e payment.chargedback.

Todo webhook chega como `POST` com `Content-Type: application/json` e este envelope:

```json theme={null}
{
  "id": "e2a1c9d4-5b6f-4a7b-8c9d-0e1f2a3b4c5d",
  "type": "payment.succeeded",
  "created_at": "2026-09-08T13:15:00.000Z",
  "data": {}
}
```

<ResponseField name="id" type="string">
  Identificador único do evento (UUID). Use-o para descartar entregas duplicadas.
</ResponseField>

<ResponseField name="type" type="string">
  O tipo do evento — um dos listados abaixo.
</ResponseField>

<ResponseField name="created_at" type="string">
  Data/hora em que o evento foi gerado, em ISO 8601 (UTC).
</ResponseField>

<ResponseField name="data" type="object">
  Os dados do evento. É um objeto próprio do webhook — **não** é o objeto de recurso completo que a API REST devolve. Os campos estão descritos abaixo.
</ResponseField>

<Note>
  Em `data`, `amount_minor` é uma **string** (ex. `"49900"`), diferente das respostas da API REST, onde valores monetários são inteiros.
</Note>

## `data` — campos

Os três eventos de pagamento carregam o mesmo conjunto de campos.

<ResponseField name="payment_id" type="string">
  ID do pagamento.
</ResponseField>

<ResponseField name="checkout_session_id" type="string">
  ID do checkout que originou o pagamento.
</ResponseField>

<ResponseField name="customer_id" type="string | null">
  Cliente vinculado ao checkout, ou `null` se não havia um.
</ResponseField>

<ResponseField name="amount_minor" type="string">
  Valor do pagamento na unidade menor da moeda (centavos), como string.
</ResponseField>

<ResponseField name="currency" type="string">
  Moeda ISO 4217, ex. `BRL`.
</ResponseField>

<ResponseField name="payment_method" type="string">
  `pix` ou `card`.
</ResponseField>

<ResponseField name="failure_code" type="string">
  Presente apenas em `payment.failed`. Motivo da recusa, conforme reportado pelo processador (ex. `failed`, `with_error`).
</ResponseField>

## payment.succeeded

O pagamento foi confirmado. Libere o pedido.

```json theme={null}
{
  "id": "e2a1c9d4-5b6f-4a7b-8c9d-0e1f2a3b4c5d",
  "type": "payment.succeeded",
  "created_at": "2026-09-08T13:15:00.000Z",
  "data": {
    "payment_id": "pay_1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "checkout_session_id": "checkout_7f8a9b0c-1d2e-4f3a-8b4c-5d6e7f8a9b0c",
    "customer_id": "cus_9b2c4f1a-3d5e-4a7b-8c9d-1e2f3a4b5c6d",
    "amount_minor": "49900",
    "currency": "BRL",
    "payment_method": "pix"
  }
}
```

## payment.failed

O pagamento foi recusado. O checkout continua `open` — o comprador ainda pode gerar uma nova cobrança na mesma sessão.

```json theme={null}
{
  "id": "b7c8d9e0-1f2a-4b3c-8d4e-5f6a7b8c9d0e",
  "type": "payment.failed",
  "created_at": "2026-09-08T13:16:00.000Z",
  "data": {
    "payment_id": "pay_1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "checkout_session_id": "checkout_7f8a9b0c-1d2e-4f3a-8b4c-5d6e7f8a9b0c",
    "customer_id": "cus_9b2c4f1a-3d5e-4a7b-8c9d-1e2f3a4b5c6d",
    "amount_minor": "49900",
    "currency": "BRL",
    "payment_method": "card",
    "failure_code": "with_error"
  }
}
```

## payment.chargedback

Um chargeback foi registrado para um pagamento já confirmado. Reverta a liberação do pedido.

```json theme={null}
{
  "id": "c0d1e2f3-4a5b-4c6d-8e7f-0a1b2c3d4e5f",
  "type": "payment.chargedback",
  "created_at": "2026-09-20T09:00:00.000Z",
  "data": {
    "payment_id": "pay_1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "checkout_session_id": "checkout_7f8a9b0c-1d2e-4f3a-8b4c-5d6e7f8a9b0c",
    "customer_id": "cus_9b2c4f1a-3d5e-4a7b-8c9d-1e2f3a4b5c6d",
    "amount_minor": "49900",
    "currency": "BRL",
    "payment_method": "pix"
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.