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

# Estados del ciclo de vida

> Ciclo de vida completo de una transacción QR: PENDING → PAID / REJECTED / EXPIRED / CANCELLED / ERROR.

## Estados del ciclo de vida

Toda transacción QR transita por los siguientes estados canónicos:

```
                    ┌─────────┐
                    │ PENDING │  ◄── estado inicial al crear
                    └────┬────┘
           ┌─────────────┼─────────────┐
           ▼             ▼             ▼
        ┌──────┐   ┌──────────┐   ┌─────────┐
        │ PAID │   │ REJECTED │   │ EXPIRED │
        └──────┘   └──────────┘   └─────────┘

   CANCELLED  ──  El comercio canceló antes de que se pague
   ERROR      ──  Fallo irrecuperable en el procesamiento
```

| Estado      | Descripción                                                            |
| ----------- | ---------------------------------------------------------------------- |
| `PENDING`   | Generado correctamente, esperando pago del pagador.                    |
| `PAID`      | Al menos una orden de pago fue procesada exitosamente.                 |
| `REJECTED`  | Todas las órdenes fueron rechazadas por la red de pagos.               |
| `EXPIRED`   | Venció el `expiresAt` sin que se procese ningún pago.                  |
| `CANCELLED` | Cancelado por el comercio antes del pago (funcionalidad próxima).      |
| `ERROR`     | Fallo irrecuperable durante la generación — el QR no existe en la red. |

**Lógica de agregación de estado** cuando existen múltiples órdenes asociadas al mismo QR:

* Si al menos una orden está `PAID` → estado del QR = `PAID`.
* Si todas las órdenes están `REJECTED` → estado del QR = `REJECTED`.
* En cualquier otro caso → `PENDING`.
