Planes
Crea planes reutilizables con precio, frecuencia, prueba gratis y precios introductorios. Para un plan de un solo uso, defínelo al crear la suscripción.
Métodos
Plan
Así se ve el objeto que devuelven los métodos de este módulo.
| Campo | Tipo | Descripción |
|---|---|---|
id | string | Identificador, empieza por plan_ |
url | string | Checkout público del plan |
name | string | Nombre visible |
slug | string | Identificador legible, único en el proyecto |
description | string | null | Descripción opcional |
currency | "COP" | "USD" | Moneda de los cobros |
interval | PlanInterval | weekly, quincenal, monthly, quarterly, semiannual o annual |
termCycleCount | number | null | Cobros antes de terminar; null es sin fin |
phases | PlanPhase[] | Fases de precio: type, amount, discountPercent y duration |
metadata | Record<string, string> | Tus datos propios |
source | "manual" | "api" | Origen |
livemode | boolean | true si se creó con una llave live |
createdAt | string | Fecha de creación |
updatedAt | string | Fecha de la última edición |
Crear un plan
landapay.plans.create(params, options?)
Para un precio simple usa amount y, si quieres, trialDays. Para precios por etapas usa phases: cada fase lleva su duration salvo la última, que se repite hasta el final.
Parámetros
| Campo | Tipo | Descripción |
|---|---|---|
nameobligatorio | string | Nombre visible |
intervalobligatorio | PlanInterval | Frecuencia de cobro |
amount | number | Precio por ciclo en centavos |
trialDays | number | Días de prueba gratis; requiere amount |
phases | PlanPhaseParams[] | Alternativa a amount: fases trial o priced con amount o discountPercent |
currency | "COP" | "USD" | COP por defecto |
termCycleCount | number | null | Cobros antes de terminar; sin enviarlo es sin fin |
description | string | null | Descripción opcional |
slug | string | null | Se genera del nombre si no lo envías |
metadata | Record<string, string | number | boolean | null> | Hasta 50 pares llave/valor. Al actualizar se combina con la actual; null en una llave la borra |
options | RequestOptions | Opcional. idempotencyKey, timeout (ms) y maxRetries solo para esta llamada |
Devuelve
Promise<Plan>
// Precio simple con 14 días gratisconst pro = await landapay.plans.create({ name: "Plan Pro", interval: "monthly", amount: 4_990_000, trialDays: 14,}); // Dos meses al 50 % y luego precio completoconst promo = await landapay.plans.create({ name: "Plan Pro promo", interval: "monthly", phases: [ { type: "priced", discountPercent: 50, duration: { unit: "month", count: 2 } }, { type: "priced", amount: 4_990_000 }, ],});Obtener un plan
landapay.plans.retrieve(id, options?)
Parámetros
| Campo | Tipo | Descripción |
|---|---|---|
idobligatorio | string | Id del plan (plan_...) |
options | RequestOptions | Opcional. idempotencyKey, timeout (ms) y maxRetries solo para esta llamada |
Devuelve
Promise<Plan>
const plan = await landapay.plans.retrieve("plan_PLANCODE23456789");Actualizar un plan
landapay.plans.update(id, params, options?)
Acepta los campos de create, todos opcionales. Enviar amount o phases reemplaza todas las fases. Las suscripciones existentes conservan el precio con el que se suscribieron.
Parámetros
| Campo | Tipo | Descripción |
|---|---|---|
idobligatorio | string | Id del plan (plan_...) |
paramsobligatorio | PlanUpdateParams | Campos a cambiar |
options | RequestOptions | Opcional. idempotencyKey, timeout (ms) y maxRetries solo para esta llamada |
Devuelve
Promise<Plan>
await landapay.plans.update("plan_PLANCODE23456789", { amount: 5_990_000,});Eliminar un plan
landapay.plans.delete(id, options?)
Solo se puede eliminar un plan sin suscripciones vigentes.
Parámetros
| Campo | Tipo | Descripción |
|---|---|---|
idobligatorio | string | Id del plan (plan_...) |
options | RequestOptions | Opcional. idempotencyKey, timeout (ms) y maxRetries solo para esta llamada |
Devuelve
Promise<{ id: string; object: "plan"; deleted: true }>
await landapay.plans.delete("plan_PLANCODE23456789");