> ## Documentation Index
> Fetch the complete documentation index at: https://devs.tapipay.la/llms.txt
> Use this file to discover all available pages before exploring further.

# Contracargo de débito bancario

> El banco revirtió un débito que ya estaba confirmado.

Se dispara cuando el banco **revierte un débito bancario que ya se había confirmado**. El dinero se había cobrado y volvió a la cuenta de tu usuario.

<Warning>
  Este evento llega sobre un cobro que **ya diste por bueno**. Si marcaste la deuda como pagada cuando se confirmó el débito, aquí tienes que revertir ese estado en tu sistema.
</Warning>

|                           |                                         |
| ------------------------- | --------------------------------------- |
| **`type`**                | `AUTO_DEBIT_CHARGEBACK`                 |
| **`status`**              | No aplica: este evento no trae `status` |
| **Llave de idempotencia** | `operationId`                           |

## El payload

| Campo              | Tipo           | Presente | Descripción                                                                                     |
| ------------------ | -------------- | -------- | ----------------------------------------------------------------------------------------------- |
| `type`             | String         | Siempre  | Siempre `"AUTO_DEBIT_CHARGEBACK"`.                                                              |
| `operationId`      | String         | Siempre  | Identificador único del débito bancario revertido.                                              |
| `originalStatus`   | String         | Siempre  | Estado del débito antes del contracargo. Normalmente `"CONFIRMED"`.                             |
| `chargebackReason` | String \| null | Variable | Motivo del contracargo, en **texto libre** del banco. `null` cuando el banco no informa motivo. |
| `chargebackDate`   | String         | Siempre  | Fecha del contracargo, en ISO 8601.                                                             |
| `amount`           | Number         | Siempre  | Monto revertido.                                                                                |
| `bank`             | String         | Siempre  | Nombre del banco.                                                                               |
| `accountLast4`     | String \| null | Variable | Últimos 4 dígitos de la cuenta o CLABE. `null` cuando el banco no lo informa.                   |
| `companyCode`      | String \| null | Siempre  | Código de la empresa. La clave siempre viene; el valor puede ser `null`.                        |
| `companyName`      | String \| null | Siempre  | Nombre de la empresa. Mismo criterio que `companyCode`.                                         |
| `hash`             | String \| null | Siempre  | Hash de verificación. `null` si no tienes llave pública configurada.                            |

<Warning>
  **`chargebackReason` es texto libre**, tal como lo informó el banco. No se valida contra un catálogo ni se normaliza, así que su redacción puede variar. No lo uses como llave de tu lógica: muéstralo o regístralo, pero no hagas `switch` sobre su contenido.
</Warning>

<Note>
  `originalStatus` también es texto libre del productor. El valor habitual es `"CONFIRMED"`.
</Note>

El [contracargo de tarjeta](/es/webhooks/contracargo-de-tarjeta) funciona distinto en este punto: ahí el motivo sí es un catálogo cerrado.

## Ejemplos

<CodeGroup>
  ```json Con motivo del banco theme={null}
  {
    "type": "AUTO_DEBIT_CHARGEBACK",
    "operationId": "d3b1f2a0-1234-4a5b-8c9d-0e1f2a3b4c5d",
    "originalStatus": "CONFIRMED",
    "chargebackReason": "Cargo desconocido por el titular",
    "chargebackDate": "2026-07-10T09:00:00Z",
    "amount": 150000,
    "bank": "Santander",
    "accountLast4": "4321",
    "companyCode": "MX-S-12345",
    "companyName": "ACME",
    "hash": "encrypted-base64-string"
  }
  ```

  ```json Sin motivo y sin llave pública theme={null}
  {
    "type": "AUTO_DEBIT_CHARGEBACK",
    "operationId": "d3b1f2a0-1234-4a5b-8c9d-0e1f2a3b4c5d",
    "originalStatus": "CONFIRMED",
    "chargebackReason": null,
    "chargebackDate": "2026-07-10T09:00:00Z",
    "amount": 150000,
    "bank": "Santander",
    "accountLast4": null,
    "companyCode": "MX-S-12345",
    "companyName": "ACME",
    "hash": null
  }
  ```
</CodeGroup>

<Card title="Campos comunes, hash e idempotencia" icon="bookmark" href="/es/webhooks">
  Lo que comparten todos los webhooks de esta familia.
</Card>
