Suscripciones
Cobros recurrentes sobre tarjetas tokenizadas. Guía completa: Flujo de suscripciones.
POST /subscriptions/create
Auth: requiere x-wpay-key.
Request
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
card_key | string | ✅ | key de una tarjeta guardada. |
plan_name | string | ✅ | Nombre del plan (libre). |
amount | number | ✅ | Monto de cada cobro. |
currency | string | — | BOB (default) o USD. |
frequency | string | — | DAILY · WEEKLY · MONTHLY (default) · YEARLY. |
external_subscriber_id | string | — | Tu id del suscriptor. |
Response 200
{
"reference": "sub_a1b2c3d4e5f6a7b8c9d0",
"status": "ACTIVE",
"next_charge_at": "2026-08-16 12:00:00",
"id": 17
}Errores
400 card_key, plan_name y amount son requeridos · 404 Tarjeta no encontrada ·
400 La tarjeta no tiene token de cobro
Pruébalo
POST /subscriptions/cancel
Auth: requiere x-wpay-key.
Request
| Campo | Requerido | Descripción |
|---|---|---|
reference | ✅ | La reference de la suscripción (sub_...). |
Response 200
{ "msg": "SUBSCRIPTION_CANCELLED", "reference": "sub_a1b2c3d4e5f6a7b8c9d0" }Si ya estaba cancelada: { "msg": "SUBSCRIPTION_ALREADY_CANCELLED" }.
Pruébalo
GET /subscriptions/status/:reference
Auth: requiere x-wpay-key.
Devuelve la suscripción completa + charges: los últimos 10 intentos de cobro.
{
"id": 17,
"card_key": "C8F0D2A1B3E4F5A6B7C8D9E0",
"external_subscriber_id": "user_42",
"plan_name": "Plan Pro",
"amount": 99.9,
"currency": "BOB",
"frequency": "MONTHLY",
"status": "ACTIVE",
"reference": "sub_a1b2c3d4e5f6a7b8c9d0",
"next_charge_at": "2026-08-16 12:00:00",
"failed_attempts": 0,
"created_at": "2026-07-16 12:00:00",
"updated_at": "2026-07-16 12:00:00",
"charges": []
}Pruébalo
POST /subscriptions/list
Auth: requiere x-wpay-key.
Request
| Campo | Default | Descripción |
|---|---|---|
page | 1 | Página. |
limit | 20 | Resultados por página. |
status | — | Filtra: ACTIVE · CANCELLED · EXPIRED. |
Response 200
{ "data": [ ... ], "total": 1, "page": 1, "limit": 20, "totalPages": 1 }Pruébalo
GET /subscriptions/cancel/:token (público)
Página HTML de cancelación por enlace firmado (HMAC-SHA256 con la key_cancel del sistema,
expira a los 7 días). Pensada para el pie de tus correos: el cliente hace clic y ve la
confirmación de cancelación sin iniciar sesión. Dispara el webhook subscription.cancelled.