API Technical Docs

Mantente al día con las innovaciones tecnológicas que están transformando el mercado.

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. 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ó.
revoked La sesión fue invalidada antes de su vencimiento natural.

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

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.
refund_rejected La empresa rechazó la solicitud.
refund_failed Un intento de ejecución fue registrado como fallido. No necesariamente
refund_cancelled El caso fue cancelado de forma auditada.

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.

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

  1. Los estados están separados por recurso y dimensión.
  2. Los eventos no se presentan como estados.
  3. payment_reported no equivale a reconciled.
  4. La expiración operativa no borra un posible resultado financiero posterior.
  5. Las diferencias conservan su clasificación.
  6. OCR no confirma financieramente un pago.
  7. Un caso pendiente no sustituye a la orden.
  8. refund_approved no equivale a refund_completed.
  9. Una entrega técnica no garantiza el efecto comercial.
  10. 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. Se libera el Counter.
expired La Payment Order alcanzó expires_at sin confirmación financiera. Se libera el Counter.
cancelled La Payment Order fue cancelada por una operación autorizada. 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.