Ciclo de vida de la sesión
Una sesión de cobro nace en tu servidor y termina con un veredicto. Conocer sus estados evita los dos errores más caros de una integración: entregar un pedido que no se cobró y cobrar dos veces el mismo pedido.
Estados
| Estado | Significa | Qué hace tu sistema |
|---|---|---|
CREADA | La sesión existe y el cliente todavía no eligió medio. | Esperar. |
EN_CURSO | Hay un cobro en vuelo: autorización en línea u orden viva en el terminal. | Esperar; no crear otra sesión para el mismo pedido. |
APROBADA | El banco aprobó. Es final. | Entregar el pedido cuando llegue el webhook firmado. |
RECHAZADA | El banco rechazó (codigo = DE 39, por ejemplo 51). Es final. | Si el cliente quiere intentar con otro medio, crear otra sesión. |
EN_DUDA | El banco no confirmó. Final para el cliente, pero FINORA la sigue. | No entregar ni volver a cobrar. Esperar el segundo webhook con APROBADA o RECHAZADA. |
CANCELADA | El cliente o el comercio la retiraron (CANCELADA_POR_CLIENTE, CANCELADA_POR_COMERCIO). | Sin cobro. |
EXPIRADA | Venció el plazo (ttlSegundos) sin veredicto. | Sin cobro. |
RECHAZADA cierra la sesión. Lo único que la devuelve a CREADA es un terminal que no tomó la orden a tiempo (TERMINAL_SIN_RESPUESTA) o que el operador canceló en el terminal (CANCELADA_EN_TERMINAL): entonces el cliente puede elegir otro medio mientras la sesión no venza.
Consultar una sesión desde tu servidor
El webhook es el aviso; la consulta es la verdad. Antes de mostrar «pedido confirmado» o al conciliar, consulta la sesión con tu clave:
curl -s https://pos.finoracore.com/api/v1/checkout/sesiones/CSAgkpH6tSLSO-58tneFeBaw \
-H "X-API-Key: $FINORA_API_KEY"
{
"sesionId": "CSAgkpH6tSLSO-58tneFeBaw",
"estado": "APROBADA",
"monto": 227.00,
"moneda": "VES",
"referencia": "PED-1042",
"merchantCode": "COM00042",
"riel": "PAGO_MOVIL",
"terminalId": null,
"sandbox": true,
"creadaEn": "2026-09-13T15:05:00.000+00:00",
"expiraEn": "2026-09-13T15:20:00.000+00:00",
"cerradaEn": "2026-09-13T15:05:12.000+00:00",
"resultado": {
"sesionId": "CSAgkpH6tSLSO-58tneFeBaw",
"estado": "APROBADA",
"riel": "PAGO_MOVIL",
"codigo": "00",
"mensaje": "Aprobada"
}
}
Con la clave API recibes la vista completa (pagador, intentos, URL de retorno y de webhook). Con el token de sesión, el navegador recibe solo lo necesario para pagar.
Listar sesiones para conciliar
GET /api/v1/checkout/sesiones filtra por fecha y estado. Úsalo al cierre del día para encontrar sesiones EN_DUDA o pedidos sin webhook procesado:
curl -s "https://pos.finoracore.com/api/v1/checkout/sesiones?estado=EN_DUDA&desde=2026-09-13T00:00:00Z&max=100" \
-H "X-API-Key: $FINORA_API_KEY"
| Parámetro | Notas |
|---|---|
desde, hasta | Fecha y hora ISO 8601. |
estado | Uno de los estados de la tabla anterior. |
max | Por defecto 100; máximo 500. |
Cancelar una sesión
Si el cliente abandona el pedido en tu sistema, cancela la sesión para que la página de pago deje de aceptarlo:
curl -s -X POST https://pos.finoracore.com/api/v1/checkout/sesiones/CSAgkpH6tSLSO-58tneFeBaw/cancelar \
-H "X-API-Key: $FINORA_API_KEY"
La respuesta trae el estado resultante. Si ya hay dinero en vuelo responde 409 COBRO_EN_CURSO (la autorización está en curso o el terminal ya aceptó la orden); si la sesión ya terminó, 409 SESION_CERRADA. En ambos casos, consulta la sesión y actúa según su estado.
Plazos
ttlSegundosva de 60 a 3600; por defecto, 900.- Si el plazo vence con un cobro en vuelo, el veredicto lo decide el servidor según lo que ocurrió en el banco o en el terminal (que pudo haber aceptado la orden). No asumas
EXPIRADA: espera el webhook o consulta la sesión.
Lo que sigue
- Webhooks: verificar la firma y deduplicar.
- Sandbox: provocar cada estado con los céntimos del monto.
- Referencia de la API.