Terminal Sessions
Terminal Sessions te permite enviar cobros a una terminal POS de Recurrente directamente desde tu sistema (ERP, POS propio, o cualquier integración). Tu sistema envía un comando con el monto, y la terminal automáticamente muestra la pantalla de cobro para que el cliente pague con tarjeta.
Casos de uso
- Integración ERP/POS: Tu sistema de facturación o punto de venta genera el cobro, y la terminal de Recurrente lo procesa.
- Cobros remotos: Envía cobros a terminales en diferentes ubicaciones desde un sistema centralizado.
- Automatización: Elimina la necesidad de ingresar montos manualmente en la terminal.
Requisitos previos
- Una cuenta de Recurrente con llaves de API
- Al menos una terminal POS vinculada a tu cuenta
- El ID de tu terminal (lo encuentras en POS en tu dashboard — haz clic en una terminal para ver su ID)
Configurar la terminal en modo espera
Para que la terminal reciba comandos de tu sistema, debe estar en la pantalla de espera. Esta pantalla muestra “Listo para cobrar” y espera automáticamente por nuevos comandos.
- En tu dashboard, ve a POS
- Haz clic en la terminal que quieres configurar
- En la página de detalle, haz clic en Modo espera (en la esquina superior derecha)
- La terminal mostrará la pantalla de espera
Cuando tu sistema envíe un comando, la terminal automáticamente muestra la pantalla de cobro. Después de cada pago (exitoso o fallido), la terminal regresa al modo espera para recibir el siguiente comando.
En modo espera, el operador de la terminal no puede ingresar montos manualmente. Todos los cobros se controlan desde tu sistema vía API.
Flujo de integración
1. Crear un comando de terminal
Envía un POST a /api/terminal_session_commands con el monto y la terminal destino.
Respuesta
201 Created— se creó un nuevo comando200 OK— ya existe un comando activo con el mismoexternal_id(se retorna el existente)
Si recibes 200 y el status es dispatched, significa que el comando ya fue levantado por la terminal. Usa un nuevo external_id para crear un comando nuevo.
Parámetros
Envía amount_in_cents o amount, no ambos. Si envías amount, se convierte automáticamente a centavos.
2. Recibir el resultado del pago
Registra un webhook endpoint para recibir notificaciones cuando el pago se complete.
Escucha el evento payment_intent.succeeded:
Usa el campo metadata.external_id para relacionar el pago con la orden en tu sistema.
Estados del comando
Idempotencia
El external_id es unico por cuenta. Si envias el mismo external_id dos veces:
- Si el comando anterior esta activo (pending o dispatched), se retorna el comando existente.
- Si el comando anterior fue superseded o failed, se retorna el comando existente sin crear uno nuevo.
Esto te permite reintentar requests de forma segura sin crear cobros duplicados.
Superseding (reemplazo de comandos)
Si envias un nuevo comando a la misma terminal con un external_id diferente, todos los comandos pendientes anteriores para esa terminal se marcan como superseded. La terminal solo procesa el comando mas reciente.
Esto es util cuando:
- El cliente cambia el monto de la orden
- Necesitas cancelar un cobro y enviar uno nuevo
- Tu sistema reintenta con un nuevo ID de orden

