> ## 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.

# Bank debit chargeback

> The bank reversed a debit that was already confirmed.

Fires when the bank **reverses a bank debit that had already been confirmed**. The money had been charged and went back to your user's account.

<Warning>
  This event arrives about a charge you **already treated as good**. If you marked the debt as paid when the debit was confirmed, you have to reverse that state in your system here.
</Warning>

|                     |                                                |
| ------------------- | ---------------------------------------------- |
| **`type`**          | `AUTO_DEBIT_CHARGEBACK`                        |
| **`status`**        | Not applicable: this event carries no `status` |
| **Idempotency key** | `operationId`                                  |

## The payload

| Field              | Type           | Present  | Description                                                                                |
| ------------------ | -------------- | -------- | ------------------------------------------------------------------------------------------ |
| `type`             | String         | Always   | Always `"AUTO_DEBIT_CHARGEBACK"`.                                                          |
| `operationId`      | String         | Always   | Unique identifier of the reversed bank debit.                                              |
| `originalStatus`   | String         | Always   | State of the debit before the chargeback. Usually `"CONFIRMED"`.                           |
| `chargebackReason` | String \| null | Variable | Chargeback reason, as **free text** from the bank. `null` when the bank reports no reason. |
| `chargebackDate`   | String         | Always   | Chargeback date, in ISO 8601.                                                              |
| `amount`           | Number         | Always   | Reversed amount.                                                                           |
| `bank`             | String         | Always   | Bank name.                                                                                 |
| `accountLast4`     | String \| null | Variable | Last 4 digits of the account or CLABE. `null` when the bank does not report it.            |
| `companyCode`      | String \| null | Always   | Company code. The key is always there; the value can be `null`.                            |
| `companyName`      | String \| null | Always   | Company name. Same rule as `companyCode`.                                                  |
| `hash`             | String \| null | Always   | Verification hash. `null` if you have no public key configured.                            |

<Warning>
  **`chargebackReason` is free text**, exactly as the bank reported it. It is not validated against a catalog and it is not normalized, so its wording can vary. Do not use it as a key in your logic: display it or log it, but do not `switch` on its content.
</Warning>

<Note>
  `originalStatus` is free text from the producer too. The usual value is `"CONFIRMED"`.
</Note>

The [card chargeback](/en/webhooks/card-chargeback) works differently on this point: there the reason is a closed catalog.

## Examples

<CodeGroup>
  ```json With a bank reason theme={null}
  {
    "type": "AUTO_DEBIT_CHARGEBACK",
    "operationId": "d3b1f2a0-1234-4a5b-8c9d-0e1f2a3b4c5d",
    "originalStatus": "CONFIRMED",
    "chargebackReason": "Charge not recognized by the account holder",
    "chargebackDate": "2026-07-10T09:00:00Z",
    "amount": 150000,
    "bank": "Santander",
    "accountLast4": "4321",
    "companyCode": "MX-S-12345",
    "companyName": "ACME",
    "hash": "encrypted-base64-string"
  }
  ```

  ```json No reason and no public key 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="Common fields, hash and idempotency" icon="bookmark" href="/en/webhooks">
  What every webhook in this family shares.
</Card>
