# Cancelaciones y devoluciones

Esta guía cubre los procedimientos para detener un proceso técnico en curso en el Pinpad y explica la distinción entre una cancelación técnica y una devolución financiera.

## Cancelación técnica (Y06)

Una cancelación técnica utilizando el comando **Y06** aborta inmediatamente la operación actual que está ejecutando el Pinpad. Se utiliza para interrumpir un proceso **antes** de que una transacción haya sido autorizada.

### Casos de uso comunes

* El operador cancela la transacción en el software del Sistema Host.
* Se produce un tiempo de espera (timeout) en el Sistema Host, lo que requiere un reinicio del estado del terminal.
* El usuario tarda demasiado en actuar y el Sistema Host decide abortar.

### Implementación y comportamiento

Para detener el terminal, el Sistema Host envía el requerimiento `Y06`.

* **Payload del Comando**: Incluye el ID del Comando (`Y06`) y el campo **TOM**.
* **Tiempo de Espera (`TOM`)**: Establece un nuevo tiempo de espera (en segundos). Una vez que este tiempo expira sin recibir un mensaje del Host, se activa una cancelación. Este valor debe enviarse en ASCII (ej., `30 36 30` para 60 segundos).
* **Respuesta del Terminal**:
  * El Pinpad devuelve un **ACK**.
  * Si se recibe mientras el Pinpad está en **REPOSO** (IDLE) o durante una solicitud de cuenta Contactless, también responde con un **EOT**.
  * Si se recibe durante la visualización de un **QR (Y0Q)**, el Pinpad devuelve una respuesta `Y0Q` con el estado `STS = 01`.
* **Feedback Visual**: El terminal muestra **"Operación Cancelada"** durante 3 segundos antes de volver a la pantalla de reposo.

> **Escenarios en los que se ignora el Y06**: Este comando se ignora si el teclado seguro está visible para la introducción del PIN. Además, si se recibe durante la ejecución de `Y19`, `Y02`, `Y03` o `YDL`, el Pinpad no proporcionará ninguna respuesta adicional más allá del **ACK** inicial.

### Cancelación iniciada por el usuario

Si el usuario pulsa el botón físico rojo **Cancelar** del teclado del Pinpad (durante la introducción del PIN o en los flujos generales), el dispositivo aborta el proceso y devuelve una respuesta de Error (**Y0E**) al Sistema Host con el código **"01"** (Cancelado).

## Devoluciones financieras (tipo de transacción 20)

Una devolución financiera (**Devolución/Anulación**) es una reversión financiera que se utiliza **después** de que una transacción haya sido autorizada. El Pinpad actúa como periférico para volver a leer la tarjeta y generar los criptogramas necesarios.

> **Reglas de Devolución en Argentina:**
> * **Tarjeta/Billetera**: Admite Cancelación Total (\$D+0\$), Devolución Total (\$D+N\$) y Devolución Parcial (\$D+N\$).
> * **Tarjeta QR**: Admite Cancelación Total (\$D+0\$), Devolución Total (\$D+N\$) y Devolución Parcial (\$D+N\$).
> * Getnet gestiona el saldo restante para todas las devoluciones parciales.

> **Restricciones de QR PCT**: Las siguientes operaciones **no están admitidas** para las transacciones QR PCT: Cancelación Total (\$D+0\$), Devolución Total/Parcial (\$D+N\$) y Reversiones.

### Implementación

Para iniciar una devolución, utilice el flujo de pago estándar (Y19 → Y15 → Y02) con estos parámetros:

1. **Inicialización Y19**: Establezca el **Tipo de Transacción (TTY)** en **"20"**.
2. **Especificación del Importe**: Proporcione el importe exacto a devolver en el campo **[IMP]**.
3. **Ejecución**: La interfaz de usuario del terminal indica explícitamente que una **Devolución/Anulación** está en curso.
   * **Contactless**: Se completa con la respuesta `Y19`.
   * **Chip/Banda**: Requiere el comando `Y02` para recuperar las pistas cifradas.

A continuación, el Sistema Host procesa el payload ante la Autorizadora para revertir los fondos.

## Informes de error automatizados (Y0E)

Cuando una operación falla o se detiene, el Pinpad envía un informe **Y0E**. Los códigos clave en el campo **[COE]** incluyen:

* **"01"**: Cancelado (el usuario pulsó el botón rojo o el Host envió `Y06`).
* **"07"**: Tiempo de espera (se ha superado el tiempo de espera para la acción del usuario o el comando).

## Próximos pasos

Una vez implementados los procedimientos de cancelación y devolución, puede finalizar su integración revisando:

* [**Pagos por Código QR**](https://docs.globalgetnet.com/es/products/in-store-payments/host-to-host?doc=h2h-process-qr-code-payments\&section=kei2fli2gqggbwgaddtl3xb7): Aprenda cómo implementar el flujo `Y0Q` para carteras digitales.
* [**Comandos de la API**](https://docs.globalgetnet.com/es/products/in-store-payments/host-to-host?doc=h2h-api-commands\&section=g7b851vgbt737kwul1fmgve2): Consulte la estructura técnica completa de los comandos `Y06` y `Y0E`.