Estados y ciclo de vida
Estado documental: Contrato propuesto. Este catálogo define el significado esperado de los estados; cada valor pasa a implementado o verificado únicamente cuando exista en el producto y haya sido probado.
Objetivo
Esta página es la referencia canónica para interpretar los estados de los recursos de YUPY.
Regla: un estado, un evento, un tipo de caso y un motivo son conceptos diferentes.
Estado financiero:
reconciled
Evento:
payment.reconciled
Tipo de caso:
late_payment
Motivo:
payment_detected_after_expiration
Cómo leer un estado
Un mismo recurso puede conservar más de una dimensión de estado.
{
"state": {
"operational": "active",
"financial": "awaiting_payment"
}
}
La dimensión operativa describe si la experiencia comercial continúa disponible. La dimensión financiera describe qué sabe YUPY sobre el pago.
Estados operativos de una orden
| Estado | Significado | Terminal | Acción habitual |
|---|---|---|---|
active |
La operación continúa disponible para el flujo comercial correspondiente. | No | Esperar o continuar la experiencia de cobro. |
expired |
La vigencia operativa terminó. | Sí para esa vigencia | No reactivar automáticamente; revisar un pago posterior cuando corresponda. |
cancelled |
La empresa o el sistema canceló la operación comercial. | Sí | No entregar automáticamente; conservar trazabilidad. |
Un estado operativo terminal no elimina la posibilidad de identificar posteriormente un ingreso.
Estados financieros de una orden
| Estado | Significado | Terminal | Acción habitual | Evento relacionado |
|---|---|---|---|---|
awaiting_payment |
Todavía no existe información suficiente para confirmar el pago. | No | Esperar. | Ninguno obligatorio. |
payment_reported |
El comprador o vendedor informó que pagó o entregó evidencia. | No | Continuar la verificación. | payment.reported |
movement_detected |
YUPY identificó información financiera potencialmente relacionada. | No | Esperar la conciliación. | payment.detected |
reconciliation_pending |
La evaluación continúa y todavía no existe confirmación final. | No | Esperar o aportar información adicional. | Depende del flujo. |
reconciled |
YUPY relacionó la operación con el ingreso correspondiente. | Sí para la confirmación | Continuar el proceso comercial. | payment.reconciled |
amount_difference |
El monto identificado no coincide con el monto esperado. | No | Atender el faltante o exceso. | payment.amount_difference |
ambiguous |
La información permite más de una interpretación razonable. | No | No confirmar arbitrariamente. | payment.ambiguous |
review_required |
La operación requiere revisión de una persona autorizada. | No | Asignar y resolver el caso. | payment.review_required |
late_detected |
El ingreso fue identificado después del vencimiento, cancelación o cierre operativo. | No | La empresa decide la resolución comercial. | payment.late_detected |
payment_reported no significa reconciled.
Clasificación de diferencias
Cuando el estado financiero es amount_difference, la respuesta puede incluir una clasificación:
| Clasificación | Significado | Acción habitual |
|---|---|---|
underpayment |
El monto recibido es menor que el esperado. | Crear o solicitar el pago complementario cuando corresponda. |
overpayment |
El monto recibido es mayor que el esperado. | Crear un caso de devolución o resolver según la política de la empresa. |
La clasificación no sustituye el estado financiero ni la orden original.
Estados de una sesión de Web Checkout
| Estado | Significado | Terminal |
|---|---|---|
active |
El enlace temporal puede utilizarse dentro de su vigencia. | No |
expired |
La vigencia de la sesión terminó. | Sí |
revoked |
La sesión fue invalidada antes de su vencimiento natural. | Sí |
Una orden puede tener más de una sesión de checkout a lo largo de su vida. La expiración de una sesión no elimina la orden.
Estados de evidencia y OCR
| Estado | Significado | Acción habitual |
|---|---|---|
queued |
La evidencia fue recibida y espera procesamiento. | Esperar. |
processing |
El archivo está siendo procesado. | Esperar. |
processed |
El procesamiento terminó. | Consultar el resultado disponible. |
partial |
Solo una parte de la información pudo extraerse. | Revisar o aportar otra evidencia. |
unreadable |
La imagen no puede interpretarse de forma suficiente. | Solicitar otra imagen. |
rejected |
El archivo no cumple las condiciones admitidas. | Corregir y volver a enviar cuando esté permitido. |
failed |
El procesamiento terminó con error. | Reintentar únicamente cuando el contrato lo permita. |
El procesamiento de evidencia no constituye confirmación financiera.
Estados de casos pendientes
| Estado | Significado | Terminal |
|---|---|---|
created |
El caso fue generado. | No |
acknowledged |
Un responsable confirmó que conoce el caso. | No |
assigned |
El caso tiene un responsable. | No |
waiting_for_evidence |
La resolución espera información adicional. | No |
under_review |
Una persona autorizada analiza el caso. | No |
resolved |
Existe una resolución registrada. | Sí para la decisión |
closed |
El seguimiento operativo terminó. | Sí |
Un caso pendiente no sustituye a la orden. Conserva el problema operativo y su resolución.
Estados de devoluciones
| Estado | Significado | Terminal |
|---|---|---|
refund_identified |
YUPY identificó una posible necesidad de devolución. | No |
refund_requested |
La devolución fue solicitada. | No |
refund_under_review |
La empresa analiza la solicitud. | No |
refund_approved |
La empresa aprobó la devolución. | No |
refund_pending_execution |
La empresa todavía debe ejecutar la devolución. | No |
refund_completed |
La empresa registró la ejecución y YUPY aceptó la evidencia correspondiente. | Sí |
refund_rejected |
La empresa rechazó la solicitud. | Sí |
refund_failed |
Un intento de ejecución fue registrado como fallido. | No necesariamente |
refund_cancelled |
El caso fue cancelado de forma auditada. | Sí |
refund_approved no significa refund_completed. YUPY no ejecuta la devolución.
Estados de trabajos de reporte
| Estado | Significado | Terminal |
|---|---|---|
queued |
El trabajo espera procesamiento. | No |
processing |
El reporte se está generando. | No |
ready |
El reporte está disponible durante su vigencia. | Sí para la generación |
failed |
El reporte no pudo generarse. | Sí para ese intento |
cancelled |
El trabajo fue cancelado. | Sí |
Estados de entregas
Las entregas pueden corresponder a instrucciones operativas o intentos de webhook. Cada recurso debe indicar su tipo.
| Estado | Significado |
|---|---|
queued |
La entrega espera procesamiento. |
processing |
La entrega está en curso. |
delivered |
El receptor aceptó la entrega. |
retry_scheduled |
Existe un nuevo intento programado. |
failed |
El intento terminó con error. |
cancelled |
La entrega fue cancelada. |
delivered significa que el receptor aceptó la entrega técnica. No demuestra por sí solo que haya completado su efecto comercial.
Estados de turnos, dispositivos e integraciones
| Recurso | Estado | Significado |
|---|---|---|
| Turno | active |
El turno está abierto. |
| Turno | expiring |
El turno se aproxima a su cierre configurado. |
| Turno | closed |
El turno fue cerrado. |
| Turno | auto_closed |
YUPY cerró el turno según la configuración aplicable. |
| Dispositivo | active |
El dispositivo puede recibir operaciones autorizadas. |
| Dispositivo | inactive |
El dispositivo no puede recibir nuevas operaciones. |
| Integración o credencial | active |
El acceso está habilitado. |
| Integración o credencial | inactive |
El acceso fue desactivado. |
| Credencial | revoked |
La credencial ya no es válida. |
| Token | expired |
La vigencia terminó. |
Transiciones
La API puede rechazar una transición cuando el recurso ya no admite la acción solicitada.
HTTP 409
invalid_state_transition
No todas las transiciones son reversibles. Una corrección debe conservar la decisión anterior y registrar una nueva acción auditada.
Tratamiento de valores desconocidos
El cliente debe:
- no interpretar un valor desconocido como éxito;
- conservar el valor para diagnóstico;
- continuar procesando campos conocidos cuando sea seguro;
- consultar la versión del contrato y el changelog;
- evitar fallos totales por la incorporación compatible de un nuevo estado no terminal.
Criterios de aceptación documental
- Los estados están separados por recurso y dimensión.
- Los eventos no se presentan como estados.
payment_reportedno equivale areconciled.- La expiración operativa no borra un posible resultado financiero posterior.
- Las diferencias conservan su clasificación.
- OCR no confirma financieramente un pago.
- Un caso pendiente no sustituye a la orden.
refund_approvedno equivale arefund_completed.- Una entrega técnica no garantiza el efecto comercial.
- Los valores desconocidos no se tratan como éxito.
Payment Order lifecycle v1
Los estados de recursos específicos que aparecen en esta referencia —verificación financiera, diferencias de monto, sesiones de checkout, entregas, devoluciones y otros— siguen siendo útiles y no deben comprimirse en un único enum. Payment Order v1 agrega una capa de lifecycle propia para determinar cuándo una orden de cobro continúa abierta y cuándo queda cerrada definitivamente.
Estados terminales de la Payment Order
| Estado | Significado | Terminal | Efecto sobre Counter |
|---|---|---|---|
confirmed |
Reconciliation confirmó financieramente el pago y YUPY registró confirmed_at. |
Sí | Se libera el Counter. |
expired |
La Payment Order alcanzó expires_at sin confirmación financiera. |
Sí | Se libera el Counter. |
cancelled |
La Payment Order fue cancelada por una operación autorizada. | Sí | Se libera el Counter. |
Nota: failed no es un estado terminal comercial público de Payment Order. Los fallos técnicos se registran en la infraestructura correspondiente sin crear un cuarto resultado terminal público. |
|||
Todo cierre terminal registra closed_at. Mientras la Payment Order permanezca abierta, su Counter continúa adquirido en exclusividad y no puede ser reutilizado por otra Payment Order.
Estados financieros y lifecycle no son la misma dimensión
Los estados financieros existentes conservan su significado:
awaiting_payment
payment_reported
movement_detected
reconciled
amount_difference
ambiguous
review_required
late_detected
Estas señales describen el conocimiento financiero o la necesidad de revisión. No sustituyen el lifecycle terminal de la Payment Order.
payment_reported significa que comprador o vendedor afirmó haber pagado o entregó evidencia. Una fotografía/captura recibida también es evidencia. Ninguna de esas señales confirma financieramente por sí sola.
payment_reported / evidencia
↓
verificación
↓
Reconciliation
↓
reconciled
↓
Payment Order = confirmed
confirmed_at
closed_at
Counter released
Confirmación financiera
El Payment Order Orchestrator no confirma financieramente de manera independiente. Reconciliation encuentra y normaliza la evidencia suficiente del pago; ese resultado puede producir payment.reconciled y llevar la Payment Order a confirmed.
Expiración de Payment Order y expiración de checkout
Una sesión de checkout sigue siendo un recurso separado. Por ello:
payment_order.expires_at
≠
checkout_session.expires_at
La expiración de una sesión Web no significa necesariamente que la Payment Order haya expirado, y una Payment Order puede tener más de una sesión de checkout a lo largo de su vida según el contrato del canal.
Pagos tardíos
Cuando una Payment Order pasa a expired o cancelled, queda cerrada y libera el Counter. Si posteriormente aparece evidencia financiera relacionada, YUPY puede registrar late_detected y el evento público payment.late_detected.
Ese hallazgo tardío no reabre la Payment Order original, no elimina su closed_at y no vuelve a ocupar el Counter que ya fue liberado. La resolución comercial o contable posterior se trata como un proceso separado.
Eventos internos de cierre
El Event Log interno puede incluir:
PAYMENT_CONFIRMED
ORDER_EXPIRED
ORDER_CANCELLED
ORDER_FAILED
COUNTER_RELEASED
ORDER_CLOSED
El orden exacto de persistencia debe conservar trazabilidad suficiente para demostrar por qué se cerró la Payment Order y cuándo quedó disponible nuevamente el Counter.
Changelog — Payment Order / API Engine
2026-08-09 — Payment Order / API Engine v1.0: se documentó inicialmente el lifecycle de Payment Order. Contrato vigente: los cierres comerciales son confirmed, expired y cancelled; failed queda reservado a fallos técnicos internos cuando corresponda y no es un terminal comercial público. Se mantiene closed_at, la liberación del Counter en cierres terminales y la separación entre lifecycle operativo y estado financiero.
Exposición externa: los resultados terminales públicos del callback payment_order.terminal son pagado | cancelado | timeout.