Skip to main content
POST
Crear suscripción

Autorizaciones

x-api-key
string
header
requerido

API key del API Gateway de Tapi. Requerida en todas las operaciones. Distinta por ambiente (desarrollo, homologación, producción).

x-authorization-token
string
header
requerido

Token TAPI JWT. Requerido en todas las operaciones. Se envía sin prefijo "Bearer". Ej: x-authorization-token: eyJhbGci...

Cuerpo

application/json

Uno de externalClientId o contactData es obligatorio, y son excluyentes. Los campos no declarados se ignoran. Si la programación (intervalUnit, intervalCount, startDate, totalCycles, endDate, billingDay) es inválida, no se crea nada: ni el producto ni el contacto inline. La llave de idempotencia es externalSubscriptionId: repetirla devuelve 409 RESOURCE_CONFLICT. Las deudas generadas usan externalRequestId = <externalSubscriptionId>-cycle-<n>, con n desde 0 (la del primer ciclo es -cycle-0).

externalSubscriptionId
string
requerido

Llave natural de la suscripción. Única por organización. Repetirla devuelve 409 RESOURCE_CONFLICT.

amount
number
requerido

Monto por ciclo en pesos (hasta 2 decimales, mínimo 0.01)

Rango requerido: x >= 0.01Debe ser un múltiplo de 0.01
intervalUnit
enum<string>
requerido

Unidad del intervalo, en minúsculas exactas (day, week, month, year). Es case-sensitive: MONTH devuelve 400.

Opciones disponibles:
day,
week,
month,
year
intervalCount
integer
requerido

Cantidad de unidades por ciclo (entero mayor o igual a 1)

Rango requerido: x >= 1
startDate
string<date>
requerido

Fecha de inicio de la suscripción (YYYY-MM-DD, fecha de calendario válida)

productName
string
requerido

Nombre del producto a asociar (obligatorio). Se resuelve por name o se crea inline si no existe. Identificado por name único por companyCode.

Minimum string length: 1
externalClientId
string

Identificador del deudor (externalClientId o contactData, no ambos).

contactData
object

Datos del deudor inline (alternativa a externalClientId)

currency
enum<string>
predeterminado:MXN

Código de moneda ISO 4217. Whitelist de monedas aceptadas por la API. Default MXN. Si se envía un valor fuera de este whitelist, la API devuelve 400 INVALID_REQUEST.

Opciones disponibles:
MXN,
ARS,
PEN,
COP,
CLP,
USD
totalCycles
integer

Total de ciclos (1 a 520). Mutuamente excluyente con endDate.

Rango requerido: 1 <= x <= 520
endDate
string<date>

Fecha de fin de la suscripción. Debe ser posterior a startDate. Mutuamente excluyente con totalCycles.

billingDay
object

Override del día de cobro. Por default se infiere del startDate. Solo es válido con intervalUnit month o year; billingDay.month solo con year.

description
string

Descripción (opcional). Debe ser string (si no, 400).

allowOverduePayment
boolean
predeterminado:true

Solo acepta true/false literal ("true", 1, etc. devuelven 400).

allowPartialPayments
boolean
predeterminado:true

Habilita pagos parciales en las deudas generadas. Solo acepta true/false literal ("true", 1, etc. devuelven 400).

enforcePaymentOrder
boolean
predeterminado:false

Si true, el deudor debe pagar en orden cronológico. Solo acepta true/false literal ("true", 1, etc. devuelven 400).

autopay
boolean
predeterminado:false

Solo acepta true/false literal ("true", 1, etc. devuelven 400). autopay: true y paymentMethods son excluyentes (400).

paymentMethods
enum<string>[]

Medios de pago habilitados. Excluyente con autopay: true (400).

Opciones disponibles:
CASH,
CARD,
TRANSFER,
WALLET,
BANK_TRANSFER
additionalData
object

Datos adicionales propios del cliente. Debe ser un objeto plano; un escalar (string, número o booleano) devuelve 400 INVALID_REQUEST. No puede usar claves reservadas, que TapiPay escribe internamente: description, paymentMethods, productName, externalProductId, debtExpirationDate, overduePayment, allowPartialPayments, recurringDebt, debtReference. Si aparece alguna, la API responde 400 INVALID_REQUEST con details[].field = additionalData. Se persiste en la deuda (en ligas de pago, en la deuda asociada al link; en suscripciones, en las deudas generadas).

Ejemplo:

Respuesta

Suscripción creada

data
object

description, additionalData y paymentMethods solo vienen si tienen valor. Una suscripción ACTIVE cuya fecha de fin ya pasó se devuelve como ENDED.

Ejemplo:
requestId
string