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

# Domiciliación con tarjeta fallida

> Falló el cobro automático recurrente contra la tarjeta adherida de tu usuario.

Se dispara cuando falla el **cobro automático recurrente** contra la tarjeta que tu usuario tiene adherida. Es el equivalente con tarjeta del [débito bancario fallido](/es/webhooks/debito-fallido).

<Note>
  Es un cobro que inició TapiPay por la domiciliación, no tu usuario. Para el pago que tu usuario inicia desde el portal, el evento es [pago con tarjeta fallido](/es/webhooks/pago-con-tarjeta-fallido).
</Note>

|                           |                       |
| ------------------------- | --------------------- |
| **`type`**                | `CARD_AUTOPAY_FAILED` |
| **`status`**              | Siempre `"FAILED"`    |
| **Llave de idempotencia** | `operationId`         |

## El payload

| Campo                         | Tipo           | Presente    | Descripción                                                              |
| ----------------------------- | -------------- | ----------- | ------------------------------------------------------------------------ |
| `type`                        | String         | Siempre     | Siempre `"CARD_AUTOPAY_FAILED"`.                                         |
| `operationId`                 | String         | Siempre     | Identificador de la operación de domiciliación.                          |
| `status`                      | String         | Siempre     | Siempre `"FAILED"`.                                                      |
| `amount`                      | Number         | Siempre     | Monto que se intentó cobrar.                                             |
| `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`.                  |
| `additionalData`              | Object         | Condicional | Detalle del error del proveedor. **Se omite entero** si queda vacío.     |
| `additionalData.errorCode`    | String         | Condicional | Código de error del proveedor.                                           |
| `additionalData.errorMessage` | String         | Condicional | Mensaje de error del proveedor.                                          |
| `hash`                        | String \| null | Siempre     | Hash de verificación. `null` si no tienes llave pública configurada.     |

### Cuándo llega `additionalData`

<Warning>
  Cuando no hay detalle de error que enviar, la clave `additionalData` **no está en el payload**. No llega vacía ni con `null` adentro. Léela siempre con acceso opcional.
</Warning>

Queda omitida en dos casos:

* `sendErrorInfo` está apagado en tu configuración.
* Está prendido, pero el proveedor no informó ni `errorCode` ni `errorMessage`.

Si el proveedor informó solo uno de los dos, `additionalData` llega con ese único campo.

<Note>
  `sendErrorInfo` se define **solo** en tu configuración, durante el onboarding. No es algo que pueda activarse desde el evento.
</Note>

## Ejemplos

<CodeGroup>
  ```json Con detalle de error theme={null}
  {
    "type": "CARD_AUTOPAY_FAILED",
    "operationId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
    "status": "FAILED",
    "amount": 8000,
    "companyCode": "MX-S-12345",
    "companyName": "ACME",
    "additionalData": {
      "errorCode": "INSUFFICIENT_FUNDS",
      "errorMessage": "La tarjeta no tiene fondos suficientes"
    },
    "hash": "encrypted-base64-string"
  }
  ```

  ```json Sin detalle de error theme={null}
  {
    "type": "CARD_AUTOPAY_FAILED",
    "operationId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
    "status": "FAILED",
    "amount": 8000,
    "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>
