Desarrolladores
Referencia de la API
Suscripciones

Suscripciones

Cobros recurrentes sobre tarjetas tokenizadas. Guía completa: Flujo de suscripciones.


POST /subscriptions/create

Auth: requiere x-wpay-key.

Request

CampoTipoRequeridoDescripción
card_keystringkey de una tarjeta guardada.
plan_namestringNombre del plan (libre).
amountnumberMonto de cada cobro.
currencystringBOB (default) o USD.
frequencystringDAILY · WEEKLY · MONTHLY (default) · YEARLY.
external_subscriber_idstringTu 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/create⚡ Simulador — se ejecuta en tu navegador
Ver cURL equivalente (producción)
curl -X POST "https://api.wizpay.app/subscriptions/create" \
  -H "x-wpay-key: wpk_sandbox_demo" \
  -H "Content-Type: application/json" \
  -d '{ "card_key": "C8F0D2A1B3E4F5A6B7C8D9E0", "plan_name": "Plan Pro", "amount": 99.9, "currency": "BOB", "frequency": "MONTHLY", "external_subscriber_id": "user_42" }'

POST /subscriptions/cancel

Auth: requiere x-wpay-key.

Request

CampoRequeridoDescripción
referenceLa reference de la suscripción (sub_...).

Response 200

{ "msg": "SUBSCRIPTION_CANCELLED", "reference": "sub_a1b2c3d4e5f6a7b8c9d0" }

Si ya estaba cancelada: { "msg": "SUBSCRIPTION_ALREADY_CANCELLED" }.

Pruébalo

POST/subscriptions/cancel⚡ Simulador — se ejecuta en tu navegador
Ver cURL equivalente (producción)
curl -X POST "https://api.wizpay.app/subscriptions/cancel" \
  -H "x-wpay-key: wpk_sandbox_demo" \
  -H "Content-Type: application/json" \
  -d '{ "reference": "sub_PEGA-AQUI-TU-REFERENCE" }'

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

GET/subscriptions/status/sub_PEGA-AQUI-TU-REFERENCE⚡ Simulador — se ejecuta en tu navegador
Ver cURL equivalente (producción)
curl -X GET "https://api.wizpay.app/subscriptions/status/sub_PEGA-AQUI-TU-REFERENCE" \
  -H "x-wpay-key: wpk_sandbox_demo"

POST /subscriptions/list

Auth: requiere x-wpay-key.

Request

CampoDefaultDescripción
page1Página.
limit20Resultados por página.
statusFiltra: ACTIVE · CANCELLED · EXPIRED.

Response 200

{ "data": [ ... ], "total": 1, "page": 1, "limit": 20, "totalPages": 1 }

Pruébalo

POST/subscriptions/list⚡ Simulador — se ejecuta en tu navegador
Ver cURL equivalente (producción)
curl -X POST "https://api.wizpay.app/subscriptions/list" \
  -H "x-wpay-key: wpk_sandbox_demo" \
  -H "Content-Type: application/json" \
  -d '{ "page": 1, "limit": 20, "status": "ACTIVE" }'

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.