## Overview

This article covers what happens **after** the charge is sent: how to return money (**refund**), how
the **webhook** keeps statuses in sync without you doing anything, and which **reports** show the
financial health of the operation.

The **webhook** is the channel the gateway uses to tell the platform about every change (paid,
overdue, refunded, canceled). That's why it is the **source of truth**: the platform updates the
charge status from the webhook, not from the checkout "success" screen.

## Prerequisites

- **Payments** module enabled and a **connected** gateway with the webhook configured.
- Permission to issue refunds.
- For the reports, charges/subscriptions recorded in the period.

## Step by step

**Refund a charge**

1. Open the charge you want to refund (already paid).
2. Choose **refund**.
3. Select **full** (returns the entire amount) or **partial** (enter the amount to return).
4. Confirm. The platform requests the refund from the gateway.
5. Watch the status change to **refunded** (or **partially refunded**) when the gateway confirms.

**Check the webhook**

1. In the gateway connection settings, review the **webhook URL** and the verification secret.
2. Make sure the URL is registered in the gateway panel.
3. Run a test and see the status update automatically.

**Read the reports**

1. Open the Payments reports.
2. Filter by period.
3. Analyze the indicators (revenue, average ticket, MRR, churn) and the breakdowns by status, gateway
   and currency.

## Settings & options

- **Full vs. partial refund**: both supported by the current gateways.
- **Webhook**: authenticated by each gateway (token in the header on Asaas; signature on Mercado
  Pago); repeated notifications are handled safely (no duplicated effects).
- **Report indicators**:

  | Indicator | What it shows |
  |---|---|
  | Revenue | Total received in the period |
  | Average ticket | Average amount per paid charge |
  | Discounts granted | Sum of the discounts applied |
  | By status | Distribution across paid, pending, overdue, etc. |
  | By gateway | How much came in via Asaas / Mercado Pago |
  | By currency | Breakdowns when there is more than one currency |
  | MRR | Monthly recurring revenue from active subscriptions |
  | Churn | Subscriptions canceled in the period |

## Use cases

- Return an amount to a customer who gave up (full refund).
- Reverse part of a charge (partial refund).
- Track recurring revenue growth via **MRR**.
- Spot subscriber loss via **churn**.

## Tips, limits & best practices

- Always trust the **webhook** for status; the checkout screen may render before confirmation.
- The refund is processed by the gateway — the time for the money to reach the customer follows the
  provider/payment-method rules.
- Track **MRR** and **churn** together for the real picture of recurrence.
- Keep the webhook URL reachable and the verification secret correct; without it, statuses won't
  update.

## Troubleshooting

- **Status never changes to paid**: the webhook isn't arriving or was rejected (wrong signature/token)
  — reconfigure the webhook on the connection.
- **Refund won't complete**: confirm the charge was paid and that the gateway supports the requested
  refund type.
- **Empty report**: check the period filter and whether there are charges in the range.
- **MRR looks wrong**: confirm the subscription cycles; MRR normalizes each one to the monthly
  equivalent.

## See also

- [Payments overview](/hc/ajuda/articles/payments-overview-en)
- [Connect a gateway: Asaas and Mercado Pago](/hc/ajuda/articles/payments-conectar-gateway-en)
- [Create a charge and send it in the conversation](/hc/ajuda/articles/payments-criar-cobranca-enviar-na-conversa-en)
- [Subscriptions and recurring plans](/hc/ajuda/articles/payments-assinaturas-planos-en)
- [Discounts and value adjustment](/hc/ajuda/articles/payments-descontos-en)