GuíasCrear una suscripción

Crear una suscripción

En Rekurra, una suscripción se crea con el checkout hospedado: una página de pago alojada por Rekurra que tokeniza la tarjeta sobre tu cuenta de Wompi y crea el Customer, el PaymentMethod y la Subscription en un solo flujo. No necesitas construir tu propio formulario de pago.

Así es como se crean las suscripciones en Rekurra: creas una checkout session, rediriges a tu cliente y Rekurra hace el resto. Ver el objeto y sus estados en el concepto Checkout.

Antes de empezar necesitas un plan y tu cuenta de Wompi conectada. ¿Prefieres probar en tu cliente de API? Descarga la colección de Postman.

Crea la sesión de checkout

POST /v1/checkout-sessions

CampoTipoRequeridoDescripción
plan_idstringSíPlan que se le cobrará al cliente. Créalo primero (ver Crear un plan).
cyclestringSíCiclo de cobro: monthly o annual.
customerobjectSí*Datos del cliente nuevo: email (requerido) y name (opcional).
customer_idstringSí*ID de un cliente existente, en lugar de customer.
success_urlstringNoURL a la que Rekurra redirige tras el pago. Si la omites, el checkout muestra su propia pantalla de confirmación.
cancel_urlstringNoURL a la que se redirige si el cliente abandona o la sesión expira.
metadataobjectNoPares clave-valor propios que quieras adjuntar a la sesión.

* Envía customer (cliente nuevo) o customer_id (cliente existente), no ambos.

Opción A — Cliente nuevo (customer)

Rekurra crea el cliente sobre la marcha con el objeto customer. Úsalo cuando la persona aún no existe en Rekurra.

curl -X POST https://api.rekurra.dev/v1/checkout-sessions \
  -H "Authorization: Bearer rk_test_XXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{
    "plan_id": "plan_01HZ...",
    "cycle": "monthly",
    "customer": { "email": "cliente@ejemplo.com", "name": "María Pérez" },
    "success_url": "https://tuapp.com/gracias",
    "cancel_url": "https://tuapp.com/checkout",
    "metadata": { "origen": "landing" }
  }'

Opción B — Cliente existente (customer_id)

Si el cliente ya existe en Rekurra (por ejemplo, porque le creaste un Customer antes o ya tuvo otra suscripción), reemplaza el objeto customer por su customer_id. Todo lo demás es idéntico.

curl -X POST https://api.rekurra.dev/v1/checkout-sessions \
  -H "Authorization: Bearer rk_test_XXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{
    "plan_id": "plan_01HZ...",
    "cycle": "monthly",
    "customer_id": "cus_01HZ...",
    "success_url": "https://tuapp.com/gracias",
    "cancel_url": "https://tuapp.com/checkout"
  }'

En ambos casos la respuesta trae el id de la sesión y la url hospedada a la que enviarás al cliente:

201 Created
{
  "id": "cs_01HZXK7QJ5M8Z9X2R3TVQ7A1B2",
  "url": "https://checkout.rekurra.dev/cs_01HZXK7QJ5M8Z9X2R3TVQ7A1B2"
}

Redirige a tu cliente

Envía a tu cliente a la url devuelta (por ejemplo, window.location.href = url). Ahí Wompi tokeniza su tarjeta usando la configuración de tu cuenta.

Recibe el resultado

Si enviaste success_url, Rekurra redirige ahí al completar el pago (o a cancel_url si el cliente abandona o la sesión expira), añadiendo como query params subscription_id, status, amount_in_cents y currency. Por seguridad, los datos personales del cliente (correo, tarjeta) no se añaden a la URL — consúltalos por subscription_id (ver API → Customers o el webhook).

Si omitiste success_url, no hay redirección: el checkout hospedado muestra su propia pantalla de confirmación con el resumen de la transacción (plan, monto, tarjeta, correo, estado).

⚠️

En paralelo, Rekurra dispara el webhook subscription.created (ver Webhooks). Usa el webhook —no solo la redirección ni la pantalla de confirmación— como fuente de verdad del resultado.

Consulta el estado si lo necesitas

GET /v1/checkout-sessions/{id} devuelve el status de la sesión (open · complete · expired) y, una vez completada, el subscription_id.

¿No te llegó el webhook subscription.created? Consulta el resultado con GET /v1/checkout-sessions/{id}/status — una superficie ligera con un límite dedicado de 20 solicitudes por minuto por API key para hacer polling tras el checkout. Ver API → Checkout sessions.

curl https://api.rekurra.dev/v1/checkout-sessions/cs_01HZ... \
  -H "Authorization: Bearer rk_test_XXXXXXXXXXXXXXXXXXXXXXXX"

Siguiente paso

Ver el detalle completo de la API en API → Checkout sessions.