Skip to main content
Una suscripción (Subscription) es un cobro recurrente que genera automáticamente una serie de deudas, una por ciclo. Tú defines qué cobrar (monto, frecuencia, deudor y duración) y TapiPay genera las cuotas y resuelve toda la complejidad interna por ti. Cuándo usarla: cobros que se repiten en el tiempo (mensualidades, cuotas de crédito, planes periódicos). Para un cargo único usa una deuda; para cobrar sin deudor conocido, una liga de pago.

Generación de cuotas por adelantado

Al crear la suscripción, TapiPay calcula las fechas de todos los ciclos y genera las deudas por adelantado (no hay un proceso que cree una cuota por mes). La generación de esas deudas ocurre de forma asíncrona: la suscripción se devuelve en estado ACTIVE apenas el cálculo y el encolado terminan correctamente.
Si la generación de las deudas falla, la suscripción se revierte automáticamente para que puedas reintentar con el mismo externalSubscriptionId sin duplicar cobros.

Crear una suscripción

Campos principales

string
requerido
Llave natural de la suscripción. Única por organización. Si la repites, la API responde 409 RESOURCE_CONFLICT.
string | object
requerido
El deudor. Envía uno de los dos (no ambos), igual que en una deuda. En v1 cada suscripción tiene exactamente un deudor.
number
requerido
Monto por ciclo en pesos, con hasta 2 decimales (mínimo 0.01).
string
requerido
Unidad del intervalo: day, week, month o year.
integer
requerido
Cantidad de unidades por ciclo. Por ejemplo, intervalUnit: "month" + intervalCount: 3 es trimestral.
string
requerido
Fecha de inicio en formato YYYY-MM-DD.
integer
Cantidad de ciclos a generar (máximo 520). Excluyente con endDate.
string
Fecha de fin (YYYY-MM-DD), posterior a startDate. Excluyente con totalCycles.
object
Override del día de cobro: { day, month? }. Solo aplica a intervalos month o year. Ver más abajo.
boolean
predeterminado:"false"
Si es true, el deudor debe pagar las cuotas en orden cronológico.
También acepta description, productName, allowOverduePayment, allowPartialPayments, autopay y paymentMethods con el mismo comportamiento que una deuda. Ver Medios de pago.

Frecuencias con intervalUnit + intervalCount

Día de cobro (billingDay)

Por defecto, el día de cobro se infiere del startDate (modelo aniversario): si la suscripción inicia el día 15, todos los cobros caen el 15. El override billingDay desacopla el día de cobro del startDate.
billingDay solo es válido para intervalos month o year. El subcampo month solo aplica a intervalos year.
Fin de mes: si el día configurado supera el último día del mes (por ejemplo, 31 en febrero), el cobro se realiza el último día del mes; el mes siguiente vuelve al día original.

Duración indefinida

Si no envías totalCycles ni endDate, la suscripción queda ACTIVE y se genera solo la deuda del primer ciclo (para no generar cobros sin límite). Define totalCycles o endDate cuando quieras generar todas las cuotas por adelantado.

La respuesta

Los datos de programación viajan anidados en el objeto scheduling.

Ciclo de vida

Cada deuda generada por la suscripción tiene su propio ciclo de vida (PENDING, PAID, etc.). Cancelar la suscripción no cancela automáticamente las deudas ya generadas. Ver Deudas.

Pago en orden (enforcePaymentOrder)

Con enforcePaymentOrder: true, el deudor no puede pagar una cuota si hay cuotas anteriores impagas. Intentarlo devuelve 422 BUSINESS_RULE_VIOLATION. Debe saldarlas en orden cronológico.

Endpoints

Pruébalo en el API Reference

Explora cada endpoint con su playground interactivo.