Pruning
Cómo y cuándo Mono retira las plantillas que ya cumplieron, y qué pasa con sus tokens de pago.
Las plantillas no viven para siempre. Una plantilla que ya nadie paga sigue reteniendo tokens de pago vivos (llaves Bre-B y códigos QR registrados en la red), y eso cuesta dinero y agrega ruido. El pruning es el barrido diario que retira las que ya cumplieron y devuelve sus tokens.
No llamas a nada para que ocurra: Mono lo corre para cada programa con Recaudos habilitado. Lo que tú controlas es cuándo se dispara (la expiración de la plantilla y los periodos de gracia de tu programa) y qué haces cuando pasa (el webhook payin_template_discarded).
Qué hace podable a una plantilla
Cuatro reglas, y la que se dispare queda registrada en prune_reason:
| Regla | Una plantilla se poda cuando… | Periodo de gracia por defecto |
|---|---|---|
expired | Su expires_at ya pasó. | 1 día después de expirar |
inactivity_without_attempts | Nunca recibió un pago y lleva en ready desde que se creó. | 30 días |
inactivity_with_attempts | Ha recibido pagos, pero el último ya es demasiado viejo. | 90 días |
deleted | La eliminaste: el delete dispara el mismo desmonte, de inmediato. | Ninguno |
Los periodos de gracia son valores por defecto, configurables por programa: pídele a Mono alargar o acortar cualquiera de los tres al habilitar Recaudos, o después.
El desmonte corre en dos fases
El pruning no solo cambia un estado: primero hay que devolverle los tokens al proveedor, y solo después se registra el resultado.
- Se dan de baja los tokens. Mono le pide al proveedor de cada método descartar los tokens de pago de la plantilla. Desde ese momento la llave Bre-B y su QR dejan de funcionar: ningún pago nuevo puede llegarle a la plantilla.
- Se cierra la plantilla. Una plantilla en
readyominimum_paidtransiciona adiscardedy emitepayin_template_discarded. Una plantillapaidconserva su estadopaid(ya está consumida) y solo registra los campos de pruning.
Mientras corre el desmonte, tres campos lo rastrean:
| Campo | Qué te dice |
|---|---|
prune_state | pruning mientras se devuelven los tokens, pruned una vez devueltos. |
prune_reason | Cuál de las cuatro reglas se disparó. |
pruned_at | Cuándo terminó el desmonte. |
Un prune que se atasca (una confirmación del proveedor que nunca llega) lo retoma el barrido del día siguiente, así que los tokens nunca quedan vivos por accidente.
Las intenciones de pago también se limpian
Las intenciones de pago tienen su propio reloj: cada una la cierra su propio job programado cuando se acaba su ventana, y sus tokens se desmontan al llegar a un estado final (successful, failed o expired). El barrido diario también mira las intenciones de pago, pero solo como red de seguridad, para atrapar aquellas cuyo job propio nunca corrió.
Qué hacer al respecto
- Trata
payin_template_discardedcomo definitivo. Deja de mostrar la llave o el QR de esa plantilla: ya no le van a llegar pagos. - Define
expires_ata conciencia. Es la única regla de prune que controlas por plantilla; las otras dos dependen de los periodos de gracia de tu programa. - No uses la inactividad para cerrar una campaña. Si un recaudo terminó, elimina la plantilla: obtienes el desmonte de inmediato en vez de esperar el periodo de gracia.
Siguientes pasos
- Plantillas: la entidad que esta página retira.
- Tokens de pago: lo que se le devuelve al proveedor.
- Webhooks: los eventos de la plantilla, incluido
payin_template_discarded.