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

# Card chargeback

> The payment provider reported a chargeback on a charge that was already processed.

Fires when the payment provider reports a **chargeback** on an already processed order: the cardholder disputed the charge or their bank reversed it.

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

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

## The payload

| Field              | Type           | Present  | Description                                                                                   |
| ------------------ | -------------- | -------- | --------------------------------------------------------------------------------------------- |
| `type`             | String         | Always   | Always `"CARD_PAYMENT_CHARGEBACK"`.                                                           |
| `operationId`      | String         | Always   | Identifier of the affected order.                                                             |
| `chargebackReason` | String \| null | Variable | Chargeback reason, from the closed catalog below. `null` when the provider reports no reason. |
| `chargebackDate`   | String         | Always   | Chargeback date, in ISO 8601.                                                                 |
| `amount`           | Number         | Always   | Chargeback amount.                                                                            |
| `currency`         | String         | Always   | Chargeback currency, for example `"MXN"`.                                                     |
| `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.                               |

<Note>
  This payload carries **no `status`**, because a chargeback does not describe the state of a payment but a later fact about an already processed charge. It carries no `bank` either: that belongs to the bank debit events.
</Note>

## Chargeback reasons

`chargebackReason` is a **closed catalog**, unlike the [bank debit chargeback](/en/webhooks/bank-debit-chargeback), where it is free text. You can branch your logic on these values with confidence.

The possible values are `FRAUD`, `DUPLICATE`, `NOT_AS_DESCRIBED`, `NOT_RECEIVED` and `UNRECOGNIZED`. The reason is reported by the payment provider.

<Tip>
  The reason always arrives **uppercase**, in its canonical form, no matter how the provider wrote it. A reason outside the catalog is rejected in validation and the notification is not delivered, so you will never receive an unexpected value in this field. What you can receive is `null`.
</Tip>

## Examples

<CodeGroup>
  ```json Fraud chargeback theme={null}
  {
    "type": "CARD_PAYMENT_CHARGEBACK",
    "operationId": "ORD-88888",
    "chargebackReason": "FRAUD",
    "chargebackDate": "2026-07-09T14:30:00Z",
    "amount": 25000,
    "currency": "MXN",
    "companyCode": "MX-S-12345",
    "companyName": "ACME",
    "hash": "encrypted-base64-string"
  }
  ```

  ```json No reason and no public key theme={null}
  {
    "type": "CARD_PAYMENT_CHARGEBACK",
    "operationId": "ORD-88888",
    "chargebackReason": null,
    "chargebackDate": "2026-07-09T14:30:00Z",
    "amount": 25000,
    "currency": "MXN",
    "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>
