Descripción general del proceso
- Tu servidor crea un plan de suscripción para una tienda.
- Tu servidor crea una suscripción para un comprador y recibe un
acceptanceUrl. - Compartes el
acceptanceUrlcon el comprador. - El comprador abre el enlace, valida su identidad y registra su tarjeta en Confío.
- Confío activa la suscripción y procesa los cobros recurrentes automáticamente.
- Tu plataforma se sincroniza mediante webhooks y usa consultas
GET/Listpara conciliación.
Requisitos previos
- Un token de acceso válido a la API de Confío.
Debes contactarnos para generar el token. Una vez generado, te recomendamos almacenarlo en un lugar seguro y no compartirlo.
- IID de la tienda (
{store}). Puedes obtenerlo conGET /v1/stores. - La funcionalidad de suscripciones habilitada para tu organización.
Si la funcionalidad no está habilitada, los endpoints de creación devuelven
403con el mensajeSubscriptions feature is not active. - Un endpoint de webhooks configurado si necesitas sincronización automática de estados y cobros.
Conceptos clave
Plan de suscripción
Un plan define los términos recurrentes:displayName: nombre visible del plan.amountCentsycurrencyCode: monto regular de cada ciclo.billingCycleFrequency:WEEKLYoMONTHLY.billingCycleInterval: número de períodos entre cobros. Por ejemplo,1mensual o3trimestral si la frecuencia esMONTHLY.trialPeriodDays: días de prueba antes del primer cobro recurrente. Usa0si no hay prueba.
Suscripción
Una suscripción vincula a un comprador con un plan. Al crearla, Confío devuelve una URL de aceptación para que el comprador complete el proceso. Campos importantes:name: identificador estable de la suscripción, por ejemplostores/{store}/subscription-plans/{plan}/subscriptions/{subscription}.status: estado actual de la suscripción.acceptanceUrl: enlace hospedado por Confío para aceptar la suscripción. Solo aparece cuando la suscripción está enPENDING_ACCEPTANCE.firstChargeAmountCents: monto opcional solo para el primer ciclo de cobro.redirectUri: URL opcional a la que Confío puede redirigir al comprador después de aceptar la suscripción.
Estados de una suscripción
El flujo principal tiene dos momentos: primero el comprador acepta la suscripción; después Confío procesa cobros y reintentos.
Mientras la suscripción está
ACTIVE, cada cobro exitoso mantiene la
suscripción activa y avanza al siguiente ciclo de facturación.Paso 1: obtener la tienda
{store} en las siguientes solicitudes.
Paso 2: crear un plan de suscripción
Paso 3: crear una suscripción para el comprador
name de la suscripción y comparte el acceptanceUrl con el comprador.
Sobre firstChargeAmountCents
firstChargeAmountCents es opcional y solo aplica al primer ciclo de cobro:
- Si el plan no tiene trial, el primer cobro ocurre durante la aceptación del comprador.
- Si el plan tiene trial, el primer cobro recurrente ocurre al finalizar el período de prueba.
- Los ciclos posteriores usan el
amountCentsregular del plan.
Paso 4: enviar el enlace de aceptación
Envía elacceptanceUrl al comprador por tu canal preferido. En ese enlace, el comprador:
- Valida su identidad.
- Revisa los términos de la suscripción.
- Registra su tarjeta en Confío.
- Acepta la suscripción.
ACTIVE o TRIALING, según el trialPeriodDays del plan.
Paso 5: sincronizar estados con webhooks
Para mantener tu sistema actualizado, configura webhooks y escucha estos eventos:subscription.subscriptionStatusChanged: cambios de estado de la suscripción, por ejemplo creación, aceptación, mora, suspensión o cancelación.subscription.billingStatusChanged: resultado de cada cobro recurrente, exitoso o fallido.
Authorization, X-Confio-Event y X-Confio-Checksum.
Consultar suscripciones
Consultar una suscripción
Listar suscripciones de una tienda
Consultar varias suscripciones
Si ya conoces las suscripciones, puedes consultar hasta 100 en una sola llamada. Repite el parámetronames por cada suscripción. Cada valor puede ser el name de la suscripción (stores/{store}/subscription-plans/{plan}/subscriptions/{subscription}), tal como lo devuelve la API, o solo su identificador globalmente único.
Para consultar suscripciones de diferentes planes de la misma tienda, usa - como identificador del plan en la ruta. Los name completos conservan el plan real de cada suscripción:
- por un {plan} concreto para limitar toda la solicitud a ese plan.
Ejemplo de respuesta:
- Las suscripciones se devuelven en el mismo orden de los
namesde la solicitud y con la misma representación que la consulta individual (el ejemplo omite campos por brevedad). - La respuesta no es paginada.
- Debes enviar entre 1 y 100
names, sin repetir suscripciones (un identificador y elnamede la misma suscripción cuentan como repetidos). De lo contrario, la API responde400. - Todas las suscripciones deben pertenecer a la tienda de la ruta. Si indicas un plan concreto, también deben pertenecer a ese plan; de lo contrario, la API responde
400. - La operación es atómica: si alguna suscripción no existe o no pertenece al alcance indicado, la solicitud completa falla con
404y no se devuelve ninguna suscripción.
Cancelar una suscripción
CANCELED.
Reintentos de cobro
Cuando un cobro falla, Confío mueve la suscripción aPAST_DUE y reintenta automáticamente.
Los cobros se procesan en ventanas programadas, por lo que la hora exacta puede variar.
Si se agotan los intentos del ciclo, la suscripción puede pasar a
SUSPENDED. Si los fallos continúan durante varios ciclos, Confío puede cancelarla automáticamente.
Errores comunes
400: datos inválidos, por ejemplo teléfono fuera de formato E.164,redirectUrisin HTTPS o monto menor al mínimo permitido.401: falta o es inválido el Bearer token.403: la funcionalidad de suscripciones no está habilitada para la organización.404: tienda, plan o suscripción no encontrada o sin permisos.5xx: error interno o dependencia temporal. Reintenta de forma segura desde tu backend.
Mejores prácticas
- Guarda el
namedel plan y de la suscripción en tu sistema. - Envía el
acceptanceUrlal comprador tan pronto crees la suscripción. - Usa webhooks como fuente principal de sincronización.
- Usa
GET,Listy la consulta por lotes como mecanismos de conciliación. - Diseña tu procesamiento de webhooks para ser idempotente.
- No recolectes datos de tarjeta ni intentes aceptar suscripciones desde tu backend.