Cobros recurrentes

Incluye operaciones sensibles

Qué cubre#

Cuatro herramientas de lectura sobre los planes de cobro recurrente y sus suscriptores, y una sensible que pausa, reactiva o elimina un suscriptor. Esa última afecta cobros futuros: pedí confirmación humana antes de ejecutarla.

Herramientas#

Listar planes de cobro recurrente

Sólo lectura

tilopay_recurring_list_plans

Lista los planes de cobro recurrente configurados en Tilopay.

Operación del API: POST /api/v1/getPlansRepeat — ver la página de la operación

Parámetros

Sin parámetros.

Devuelve

{ result }

Respuesta cruda del API de Tilopay bajo la llave `result`.

Detalle de un plan recurrente

Sólo lectura

tilopay_recurring_get_plan

Obtiene el detalle de un plan de cobro recurrente por su ID.

Operación del API: POST /api/v1/getPlanRepeat — ver la página de la operación

Parámetros

ParámetroTipoObligatorioDescripción
idstringsíID del plan
include_qrboolean—Incluir el QR en base64 del plan (por defecto false; úsalo solo si el comercio pide el QR)

Devuelve

{ result }

Respuesta cruda del API de Tilopay bajo la llave `result`.

Detalle de un suscriptor

Sólo lectura

tilopay_recurring_get_subscriber

Obtiene el detalle de un suscriptor de un plan recurrente por su ID.

Operación del API: POST /api/v1/getSuscriptorRepeat — ver la página de la operación

Parámetros

ParámetroTipoObligatorioDescripción
idstringsíID del suscriptor

Devuelve

{ result }

Respuesta cruda del API de Tilopay bajo la llave `result`.

Buscar suscriptor por nombre o correo

Sólo lectura

tilopay_recurring_find_subscriber

Busca un suscriptor por nombre o correo en todos los planes recurrentes de una sola vez. Úsala antes de pausar, reactivar o editar a alguien cuando no tienes su ID.

Parámetros

ParámetroTipoObligatorioDescripción
querystringsíNombre o correo del suscriptor

Devuelve

{ result }

result = suscriptores que coinciden, cada uno con su plan_id y plan.

Pagos de un suscriptor

Sólo lectura

tilopay_recurring_subscriber_payments

Lista los pagos realizados por un suscriptor recurrente.

Operación del API: POST /api/v1/getSuscriptorPayments — ver la página de la operación

Parámetros

ParámetroTipoObligatorioDescripción
idstringsíID del suscriptor

Devuelve

{ result }

Respuesta cruda del API de Tilopay bajo la llave `result`.

Cobros recurrentes fallidos

Sólo lectura

tilopay_recurring_failed_payments

Lista los últimos cobros recurrentes que fallaron (plan, suscriptor, monto, fecha y motivo en lenguaje simple). Una sola llamada basta.

Operación del API: POST /api/v1/getSuscriptorPayments — ver la página de la operación

Parámetros

ParámetroTipoObligatorioDescripción
limitinteger—Máximo de cobros (por defecto 10)
startDatestring—Desde, "YYYY-MM-DD HH:mm:ss". Fechas en UTC (formato YYYY-MM-DD HH:mm:ss). Costa Rica es UTC-6: el día local 2026-10-20 va de 2026-10-20 06:00:00 a 2026-10-21 05:59:59. La distribución por hora/día del resultado viene en hora local del comercio.
endDatestring—Hasta, "YYYY-MM-DD HH:mm:ss". Fechas en UTC (formato YYYY-MM-DD HH:mm:ss). Costa Rica es UTC-6: el día local 2026-10-20 va de 2026-10-20 06:00:00 a 2026-10-21 05:59:59. La distribución por hora/día del resultado viene en hora local del comercio.

Devuelve

{ total, source, failures[] }

failures = cobros recurrentes rechazados, con plan, suscriptor, monto, moneda y motivo del rechazo; total = cuántos se encontraron; source = la ruta del API de la que se obtuvieron. Combina la consulta de planes, suscriptores y sus pagos.

Pausar, reactivar o eliminar un suscriptor

Sensible

tilopay_recurring_manage_subscriber

Pausa, reactiva o elimina un suscriptor de un plan recurrente en Tilopay. Operación sensible: afecta cobros futuros y requiere segundo factor. Llámela primero sin `confirmation_code`: se envía un código de 6 dígitos al correo del comercio y la respuesta trae `requires_confirmation`. Repita la misma llamada agregando `confirmation_code`.

Exige confirmación: Confirmaciones que exige Tilopay

Operación del API: POST /api/v1/pauseSuscriptorRepeat, /reactiveSuscriptorRepeat o /deleteSuscriptorRepeat — ver la página de la operación

Parámetros

ParámetroTipoObligatorioDescripción
idSubscriberstringsíID del suscriptor
actionstring (pause | reactivate | delete)síAcción a realizar
confirmation_codestring—Código de 6 dígitos recibido por correo para autorizar la operación

Devuelve

{ result }

Respuesta cruda del endpoint correspondiente a la acción: pause, reactivate o delete.

Crear plan de suscripción

Escritura

tilopay_recurring_create_plan

Crea un plan de cobro recurrente (suscripción) en Tilopay con su título, moneda, frecuencia y modalidades (nombre y monto). Devuelve el ID del plan creado; luego usa tilopay_recurring_subscription_url para obtener el enlace con el que los clientes se suscriben.

Operación del API: POST /api/v1/createPlanRepeat — ver la página de la operación

Parámetros

ParámetroTipoObligatorioDescripción
titlestringsíTítulo del plan
modalityarray<object>síModalidades del plan (mínimo 1): arreglo de { title: string, amount: number > 0 }. El monto recurrente es el de la primera modalidad. Ejemplo: [{"title": "Mensual", "amount": 10}]
frequencystring (diario | semanal | mensual | anual | quincenal | bimestral | trimestral | cuatrimestral | semestral)síFrecuencia de cobro
descriptionstring—Descripción del plan
currencystring—Moneda ISO 4217, ej. USD o CRC. Si se omite se usa la del país del comercio.
first_amountnumber—Monto del pago inicial (0 si no hay)
trial_daysinteger—Días de prueba gratis (0 si no hay prueba)
attemptsinteger—Reintentos ante un cobro fallido (1 por defecto)
end_atstring—Fecha de fin del plan en formato DD-MM-YYYY (opcional)
thanks_urlstring—URL de agradecimiento tras suscribirse (opcional)
webhook_subscribestring—Webhook al suscribirse un cliente (opcional)
webhook_paymentstring—Webhook al cobrarse un pago (opcional)
webhook_rejectedstring—Webhook al rechazarse un cobro (opcional)
webhook_unsubscribestring—Webhook al cancelarse una suscripción (opcional)
webhook_reactivestring—Webhook al reactivarse una suscripción (opcional)

Devuelve

{ result, currency, frequency }

result = respuesta del API con el plan creado; currency y frequency = la moneda y la frecuencia con la que quedó el plan.

Editar plan de suscripción

Escritura

tilopay_recurring_edit_plan

Modifica un plan existente; no es edición parcial. title y frequency son obligatorios. Los campos omitidos se envían con sus valores por defecto: descripción vacía, first_amount 0, sin prueba gratis, attempts 1, webhooks y URL de agradecimiento vacíos; status omitido se envía como 1 (activo). El agente debe leer el plan con tilopay_recurring_get_plan y reenviar todos los campos. modality es opcional; si se omite se conserva el precio.

Operación del API: POST /api/v1/editPlanRepeat — ver la página de la operación

Parámetros

ParámetroTipoObligatorioDescripción
idstringsíID del plan
titlestringsíTítulo del plan
frequencystring (diario | semanal | mensual | anual | quincenal | bimestral | trimestral | cuatrimestral | semestral)síFrecuencia de cobro
modalityarray<object>—Arreglo opcional de {title: string (máximo 60 caracteres), amount: number > 0}; omitido conserva el precio.
currencystring—Moneda ISO 4217
descriptionstring—Descripción del plan; omitida se envía vacía.
first_amountnumber—Pago inicial; omitido se envía 0.
trial_daysinteger—Días de prueba gratis; omitido se envía sin prueba gratis.
attemptsinteger—Reintentos; omitido se envía 1.
statusstring (inactive | active | closed_to_new)—Estado: inactive, active o closed_to_new; omitido se envía 1 (activo).
end_atstring—Fecha de fin del plan en formato DD-MM-YYYY (opcional)
thanks_urlstring—URL de agradecimiento; omitida se envía vacía.
webhook_subscribestring—Webhook al suscribirse; omitido se envía vacío.
webhook_paymentstring—Webhook al cobrarse un pago; omitido se envía vacío.
webhook_rejectedstring—Webhook al rechazarse un cobro; omitido se envía vacío.
webhook_unsubscribestring—Webhook al cancelarse; omitido se envía vacío.
webhook_reactivestring—Webhook al reactivarse; omitido se envía vacío.

Devuelve

{ result }

result = respuesta del API al editar el plan; los campos omitidos se envían con sus valores por defecto, excepto modality, que conserva el precio.

Eliminar plan de suscripción

Sensible

tilopay_recurring_delete_plan

Elimina un plan de cobro recurrente en Tilopay. Afecta los cobros futuros del plan: confirma con el comercio antes de ejecutarla.

Exige confirmación: Confirmaciones que exige Tilopay

Operación del API: POST /api/v1/deletePlanRepeat — ver la página de la operación

Parámetros

ParámetroTipoObligatorioDescripción
idstringsíID del plan

Devuelve

{ result }

result = respuesta del API al eliminar el plan. Los suscriptores del plan dejan de cobrarse.

Enlace de suscripción a un plan

Sólo lectura

tilopay_recurring_subscription_url

Devuelve el enlace con el que un cliente se registra en un plan recurrente (o lo renueva si el correo ya está suscrito). Entregue la URL completa, sin recortarla.

Operación del API: POST /api/v1/recurrentUrl — ver la página de la operación

Parámetros

ParámetroTipoObligatorioDescripción
idstringsíID del plan
emailstring—Correo del cliente; si ya está suscrito devuelve el enlace de renovación

Devuelve

{ url, result }

url = enlace de suscripción al plan, para compartir con el cliente; result = respuesta del API tal cual.

Editar suscriptor de un plan

Sensible

tilopay_recurring_edit_subscriber

Cambia status (active, paused o deleted), expire (YYYY-MM-DD), modality (ID de la modalidad), amount (mayor que 0) y planId de un suscriptor; sólo envía los campos presentes. Si planId falta, se busca. La pueden usar el dueño y los empleados. No exige código por correo: para pausar, reactivar o eliminar con segundo factor existe tilopay_recurring_manage_subscriber.

Exige confirmación: Confirmaciones que exige Tilopay

Operación del API: POST /api/v1/editSuscriptorRepeat — ver la página de la operación

Parámetros

ParámetroTipoObligatorioDescripción
idstringsíID del suscriptor
statusstring (active | paused | deleted)—Nuevo estado del suscriptor
expirestring—Fecha de expiración del plan para ese suscriptor en formato YYYY-MM-DD
modalitystring—ID de la modalidad.
amountnumber—Monto mayor que 0.
planIdstring—ID del plan; si falta se busca.

Devuelve

{ result }

result = respuesta del API al editar los campos presentes del suscriptor.

Crear cupón de descuento

Escritura

tilopay_recurring_create_coupon

Crea un cupón de descuento para un plan de suscripción: porcentaje o monto fijo, fecha de vencimiento, correos permitidos y límites de uso.

Operación del API: POST /api/v1/createCoupon — ver la página de la operación

Parámetros

ParámetroTipoObligatorioDescripción
planIdstringsíID del plan recurrente
discount_typestring (percentage | fixed)síTipo de descuento: percentage (porcentaje) o fixed (monto fijo)
discountnumbersíValor del descuento
expirestringsíFecha de vencimiento del cupón en formato YYYY-MM-DD
allow_existing_usersboolean—true si también lo pueden usar clientes ya registrados (false = solo nuevos)
emailsarray<string>—Correos autorizados; si se omite, cualquier correo puede usarlo
usageinteger—Cantidad total de usos
renewsinteger—Renovaciones válidas con el cupón
renews_by_userinteger—Usos por un mismo cliente

Devuelve

{ result }

result = respuesta del API con el cupón de descuento creado para el plan.

Cupones de un plan

Sólo lectura

tilopay_recurring_list_coupons

Lista los cupones de descuento asociados a un plan de suscripción.

Operación del API: POST /api/v1/getRepeatCoupons — ver la página de la operación

Parámetros

ParámetroTipoObligatorioDescripción
planIdstringsíID del plan recurrente

Devuelve

{ result }

result = cupones del plan tal cual los devuelve el API.

Detalle de un cupón

Sólo lectura

tilopay_recurring_get_coupon

Obtiene el detalle de un cupón de descuento por su ID.

Operación del API: POST /api/v1/getCoupon — ver la página de la operación

Parámetros

ParámetroTipoObligatorioDescripción
idstringsíID del cupón

Devuelve

{ result }

result = detalle de un cupón tal cual lo devuelve el API.

Eliminar un cupón

Sensible

tilopay_recurring_delete_coupon

Elimina un cupón de descuento de un plan de suscripción.

Exige confirmación: Confirmaciones que exige Tilopay

Operación del API: POST /api/v1/deleteCoupon — ver la página de la operación

Parámetros

ParámetroTipoObligatorioDescripción
idstringsíID del cupón

Devuelve

{ result }

result = respuesta del API al eliminar el cupón.

Iniciar paso a paso de un plan de suscripción

Escritura

tilopay_recurring_plan_wizard_start

Inicia el paso a paso guiado para crear (mode=create) o editar (mode=edit con plan_id) un plan de suscripción. Devuelve la primera pregunta pendiente: entréguela al comercio tal cual y pase su respuesta a tilopay_recurring_plan_wizard_answer. Úselo en vez de tilopay_recurring_create_plan cuando falte algún dato.

Parámetros

ParámetroTipoObligatorioDescripción
modestring (create | edit)sícreate para un plan nuevo, edit para modificar uno existente
plan_idstring—ID del plan (obligatorio en mode=edit)
titlestring—Título, si el comercio ya lo dijo
frequencystring (diario | semanal | quincenal | mensual | bimestral | trimestral | cuatrimestral | semestral | anual)—Frecuencia, si el comercio ya la dijo
amountnumber—Monto por ciclo, si el comercio ya lo dijo
currencystring—Moneda ISO si el comercio la indicó con símbolo o nombre ($ o dólares = USD, ₡ o colones = CRC)
descriptionstring—Descripción, si ya la dijo

Devuelve

{ draft }

draft = borrador del plan en proceso, con lo que ya se respondió y el siguiente paso pendiente. No crea nada en Tilopay hasta confirmar.

Responder un paso del plan de suscripción

Escritura

tilopay_recurring_plan_wizard_answer

Guarda la respuesta del comercio al paso actual del plan de suscripción y devuelve la siguiente pregunta o el resumen para confirmar. Entregue el texto devuelto tal cual, sin agregar preguntas propias.

Parámetros

ParámetroTipoObligatorioDescripción
answerstringsíLo que respondió el comercio, tal cual

Devuelve

{ draft }

draft = el borrador actualizado con la respuesta del paso y el siguiente paso pendiente.

Confirmar el plan de suscripción

Escritura

tilopay_recurring_plan_wizard_confirm

Crea o edita el plan de suscripción con los datos del paso a paso, después de que el comercio dijo sí al resumen. Al crear devuelve además el enlace de suscripción: entréguelo completo, sin recortarlo.

Operación del API: POST /api/v1/createPlanRepeat — ver la página de la operación

Parámetros

Sin parámetros.

Devuelve

{ plan_id, subscription_url }

Crea el plan con lo que se armó paso a paso: plan_id = id del plan creado; subscription_url = enlace de suscripción para compartir.

Cancelar el paso a paso del plan

Escritura

tilopay_recurring_plan_wizard_cancel

Descarta el plan de suscripción que estaba en proceso sin crear ni cambiar nada.

Parámetros

Sin parámetros.

Devuelve

Descarta el borrador del plan en proceso. No crea ni cambia nada en Tilopay; devuelve sólo la confirmación en texto.

Enlaces para poner al día varios cobros fallidos

Escritura

tilopay_recurring_settle_batch

Envío en tanda (máximo 20) de enlaces para poner al día cobros recurrentes fallidos. Primero llámala SIN confirmar: devuelve el resumen (cantidad, total, quiénes no tienen teléfono) y una huella. Muestra ese resumen TAL CUAL y pide un sí explícito. Solo si el comercio responde sí, llámala de nuevo con confirm=true y la MISMA huella. Úsala cuando pida «mandales a todos»; para un solo cliente usa tilopay_recurring_settle_link.

Parámetros

ParámetroTipoObligatorioDescripción
confirmboolean—true solo tras el sí explícito al resumen
fingerprintstring—Huella devuelta por el resumen
subscriber_idsarray<string>—Limitar a estos suscriptores; si se omite, todos los pendientes (máx. 20)

Devuelve

{ ok, preview, fingerprint, count } | { ok, created, count }

Vista previa: { ok, preview: true, fingerprint, count }. Ejecución (con confirm: true y la misma huella): { ok, created, count }.

Poner al día un suscriptor

Escritura

tilopay_recurring_mark_settled

Marca al suscriptor como al día en su plan: lo deja activo y corre su fecha de expiración al siguiente ciclo. Úsala cuando el cobro pendiente ya se pagó por otro medio. Si el pago se hizo con el enlace de tilopay_recurring_settle_link, no hace falta: se actualiza solo. Confirma con el comercio antes de ejecutarla.

Operación del API: POST /api/v1/editSuscriptorRepeat — ver la página de la operación

Parámetros

ParámetroTipoObligatorioDescripción
subscriber_idstringsíID del suscriptor
plan_idstring—ID del plan de suscripción
frequencystring (diario | semanal | quincenal | mensual | bimestral | trimestral | cuatrimestral | semestral | anual)—Frecuencia del plan; si se omite se consulta al plan o se asume mensual
expirestring—Nueva fecha de expiración YYYY-MM-DD; si se omite se calcula el siguiente ciclo

Devuelve

{ ok, expire, frequency }

Corre la fecha de vencimiento del suscriptor según la frecuencia del plan, para dejarlo al día después de recuperar un cobro fallido. expire = la nueva fecha de vencimiento.

Última verificación: 2026-10-20

Ver como Markdown crudo