1. Pagos calendarizados
Kushki Docs
Español
  • Español
  • English
  • Inicio
  • Inicio rápido
    • Últimas novedades
    • Datos de prueba
    • Preguntas frecuentes
    • Paso a producción
    • Política de cambios importantes del API
    • Códigos de error
  • Glosario de pagos
    • Glosario de pagos
  • Pagos únicos con tarjeta (Online)
    • Network Tokens
    • Marcas de tarjeta soportadas
    • Funcionalidades por modelo de negocio
    • Pagos en un paso
      • Acepta un pago con tarjeta
      • Cargo directo (sin token)
      • ¿Cómo funcionan los pagos con tarjeta?
      • Acepta pagos únicos con OTP
      • Códigos de error autenticación OTP
      • Códigos de error pagos únicos con tarjeta
    • Pagos en dos pasos
      • Recibe pagos con autorización y captura
      • ¿Cómo funcionan los pagos únicos con autorización y captura?
    • Devoluciones
      • Devoluciones, anulaciones y reembolsos
    • Autenticación 3DS
      • Integración 3DS API + librería kushki.js
      • Introducción a 3DS
      • Integración 100% API de 3DS
      • Integración 3DS con librería kushki.js
      • Códigos de error autenticación 3DS
    • Pagos con Apple Pay
      • Configuración de Apple Pay
      • Pruebas en Sandbox Apple Pay
  • Pagos recurrentes con tarjeta (Online)
    • Autentica tus suscripciones con 3DS
    • Suscripciones externas a Kushki
    • Acepta pagos one click con 3DS
    • Funcionalidades por modelo de negocio
    • Códigos de error en cargos recurrentes
    • Pagos calendarizados
      • Maneja tus cargos calendarizados
      • Crea un cargo calendarizado
      • ¿Cómo funcionan los cargos recurrentes con tarjeta?
    • Pagos OneClick
      • Recibe pagos OneClick con autorización y captura
      • Genera pagos one click
      • ¿Cómo funcionan los pagos OneClick con autorización y captura?
  • Pagos con tarjeta presente
    • Acepta pagos con tarjeta presente
    • Datos de prueba
    • Webhooks para tarjeta presente
    • Raw card-present API
      • Introducción a Raw card-present API
      • Script de ejemplo para cifrar información
      • Acepta pagos
      • Intercambio de claves criptográficas
      • Preguntas frecuentes
      • Códigos de error para transacciones con tarjeta presente
    • Kushki One
      • Primeros Pasos
      • Autenticación y Cifrado de Requests
      • Realiza cobros con Kushki One
      • Formato de montos en Kushki ONE
      • Impresión en terminal SmartPOS
      • Catálogo Unificado de Errores — Kushki ONE Connect
      • Servicios asíncronos y webhooks
    • Kushki One App de Pagos
      • Descripción general
      • Devoluciones y PreAuth & Capture
      • Pago Dividido en la terminal
      • Configuración del terminal
      • Procesa un cobro
      • Consulta tus transacciones
    • Transacciones
      • Transacciones
      • Anula un pago
  • Pagos con transferencias
    • Recibe transferencias bancarias
    • Códigos de error para transferencias
    • Consulta el estado de una transacción
    • Bancos y detalles de operación para pagos con transferencia bancaria
  • Pagos en efectivo
    • Acepta un pago en efectivo
    • ¿Cómo funcionan los pagos en efectivo?
    • Puntos de recaudo
    • Códigos de error para transacciones declinadas en efectivo
  • Métodos alternativos de pago (APM)
    • ¿Cómo funcionan los pagos con APM?
    • Acepta pagos con Bre-B
  • Dispersión de dinero
    • Recarga tu saldo para dispersiones
    • Transferencia bancaria
      • Dispersa a cuentas bancarias
      • Dispersa con Bre-B
      • Códigos de error para dispersiones por transferencia
      • ¿Cómo funciona la dispersión por transferencia bancaria?
    • Efectivo
      • Dispersa dinero en efectivo
      • Maneja tus dispersiones
      • ¿Cómo funciona la dispersión por efectivo?
  • Plugins
    • Shopify
      • Shopify
      • Operación del Plugin
    • Vtex
      • Guía de integración VTEX
  • Links de pago
    • Smartlinks
  • Formularios y botones de pago
    • Introducción
    • Kajita
      • Kajitas de pago
      • ¿Cómo funciona?
    • Botón de pago
      • Genera un botón de pago
      • ¿Cómo funciona el botón de pago?
  • Administración de sucursales
    • ¿Cómo realizar el onboarding de subcomercios vía API?
  • Notificaciones
    • Buenas prácticas
    • Consulta tus webhooks
    • Webhooks para pagos únicos
      • Webhook para pagos únicos con tarjeta
      • Webhook para pagos únicos con transferencia bancaria
      • Webhook para pagos únicos con efectivo
    • Webhooks para pagos recurrentes
      • Webhook para pagos recurrentes con tarjeta
    • Webhooks para smartlinks
      • Webhooks con Smartlinks
    • Webhooks para dispersiones
      • Webhook para dispersión de dinero con transferencia
      • Webhook para dispersión de dinero con efectivo
    • Webhooks para botón de pagos
      • Webhooks con Botón de pago
    • Webhooks para devoluciones
      • Webhook para devoluciones
      • Webhook para contracargos
HomeMexico 🇲🇽Ecuador 🇪🇨Chile 🇨🇱Colombia 🇨🇴
Peru 🇵🇪
HomeMexico 🇲🇽Ecuador 🇪🇨Chile 🇨🇱Colombia 🇨🇴
Peru 🇵🇪
Status
Soporte / Support
Español
  • Español
  • English
  1. Pagos calendarizados

Crea un cargo calendarizado

Registra los datos de tarjeta de tus clientes para cobrar con la recurrencia que definas
Web
iOS
Android
Esta funcionalidad se encuentra disponible para los siguientes modelos:
☑ Adquirente

☑ Agregador
Recibir pagos recurrentes con tarjetas de débito y crédito en tu sitio consiste en capturar la información de la tarjeta, generar un token y crear la inscripción en Kushki. Con esto, los cobros se harán automáticamente con la periodicidad que elijas.
Al realizar una suscripción se realizará un cargo a la tarjeta del cliente por un monto pequeño que permite verificar que la tarjeta esté activa y con saldo. Este cobro se reversará automáticamente.
Sin embargo es posible, previa solicitud al equipo de Kushki, omitir estos cobros de validación durante la tokenización de una tarjeta para la ejecución de cargos recurrentes o bajo demanda.
Importante
Ten en cuenta que, debido a nuestras políticas de riesgo, los medios de pago disponibles y el tipo de integración pueden variar al momento en que formalices la afiliación. Te indicaremos cómo proceder en caso de que este proceso aplique para tu comercio.
Un ejemplo de lo que podrías integrar:
El flujo de pago que integrarás luce de la siguiente manera:
Flujo suscripción tarjeta

1. Configura tu front-end#

La responsabilidad del front-end es recoger la información de tarjeta del usuario de una manera segura, tokenizarla a través de los servidores de Kushki, y luego enviarla a tu back-end para crear la inscripción de la tarjeta.
Tienes tres opciones para integrar Kushki en tu página web: Kajita, Kushki.js y Kushki.js Hosted Fields.

Kajita#

Kushki cuenta con formularios de pago listos para recopilar información de tarjeta de forma segura. Podrás usar cualquiera de nuestras versiones:
Cajita: la primera versión del formulario de pagos. No es personalizable.
Kajita: la segunda versión. Te permite personalizar tus formularios de pago desde tu Consola de administración e incluso tener varias versiones de Kajita.

Crea y personaliza tus Kajitas#

Con Kushki puedes crear tus Kajitas desde la Consola de administración. Haz clic aquí para aprender cómo hacerlo.

Configura Kajita#

Incluye el script de kushki-checkout.js en tu página de pago añadiéndolo al <head> de tu archivo HTML. Siempre carga kushki-checkout directamente desde cdn.kushkipagos.com. No incluyas el script en un bundle o paquete ni hostees una copia de él.

Añade Kajita a tu sitio#

Kajita necesita un espacio dentro de tu página. Ingresa el siguiente código en el <body> de tu sitio donde quieras que se despliegue el formulario de pago.
Para Kajita (v.2):
Para Cajita (v.1)
Recuerda configurar la acción del formulario action de acuerdo con el endpoint correspondiente en tu back-end, para obtener el token.
Luego, añade el siguiente tag script.
Para la Kajita (v.2) Podrás obtener dicho script desde tu Consola de administración según lo explicado aquí.
Para la v.1 (Cajita), añade el siguiente script y asegúrate de que el formulario se haya cargado:
Esto creará un formulario predefinido en tu página para aceptar pagos.

Kushki.js#

Usa Kushki.js si necesitas un mayor control sobre el "look & feel" o apariencia de tu formulario de pago.

Configura Kushki.js#

Opción 1 - CDN#
Usa el siguiente tag script al final del <body> en tu página de pagos.
Option 2 - NPM#
Instala el paquete desde npm.
Luego impórtalo en tu código utilizando el siguiente código.
Configura el objeto Kushki#
Añade el siguiente código a tu aplicación

Recoge la información del usuario y envíala a tu back-end#

Primero, añade el formulario a tu página de pagos con los campos requeridos. Puedes diseñarlo de la forma que mejor te parezca.
Por ejemplo:
Luego, cuando el usuario envía el formulario, deberás solicitar el token y enviarlo a tu back-end.
Para mayores detalles, revisa nuestra referencia completa de Kushki.js

Kushki.js Hosted Fields#

Con Hosted Fields, incluido en Kushki.js, podrás recolectar de forma segura la información del pago del cliente a través de campos almacenados en infraestructura de Kushki. Devuelve un token el cual permite continuar con el flujo de pago desde el back-end.

Importa Kushki.js Hosted Fields en tu aplicación#

Opción 1 - CDN#
Importa la biblioteca de Kushki.js Hosted Fields en tu aplicación a través de una etiqueta <script> dentro de la etiqueta <body>. Una vez importada, podrás acceder a los recursos descritos a continuación para crear un flujo de pago con Kushki.
Es necesario importar tanto la biblioteca kushki.min.js (la cuál trae el código necesario para almacenar las credenciales de tu comercio) como la biblioteca card.min.js (módulo el cuál trae las funcionalidades necesarias para el flujo de pagos con tarjeta).
Opción 2 - NPM#
Instala la biblioteca Kushki.js Hosted Fields como un paquete npm dentro de tu aplicación con el siguiente código:
Opción 3 - YARN#
Instala la biblioteca Kushki.js Hosted Fields como un paquete yarn dentro de tu aplicación con el siguiente código:
Crea una instancia de KushkiOptions#
Para hacer uso de la biblioteca Kushki.js Hosted Fields, es necesario primero crear una instancia de tipo KushkiOptions la cuál te permite declarar la clave pública del comercio así como poder seleccionar el ambiente (prueba o producción) mediante el método init().
Nota: Cuando estés listo para aceptar pagos reales, es necesario que reemplaces la clave de prueba con la clave de producción.
Añade el siguiente código a tu aplicación:
Revisa la referencia para más información sobre la instancia KushkiOptions.

Inicializa el formulario en el front-end#

Sigue los pasos a continuación para poder renderizar los campos de lado del servidor en tu sitio y que tu cliente pueda ingresar los datos necesarios para realizar la transacción.
Paso 1. Definir los contenedores para los campos de lado del servidor.#
Antes de llamar al método initCardToken(), es requerido que coloques los elementos necesarios para poder renderizar cada campo de lado del servidor.
Paso 2. Crear una instancia de CardOptions#
Crea una instancia de CardOptions con la información de la transacción tal como el monto, moneda, entre otros parámetros.
Nota: Para crear una suscripción es necesario que envíes la propiedad isSubscription con el valor de true.
Paso 3. Renderizar campos de lado del servidor con el método initCardToken()#
Después de crear una instancia de CardOptions, es necesario mandar a llamar a la función initCardToken() para inicializar una instancia de ICard.
Revisa la referencia para más información sobre la inicialización del formulario
.

Solicita un token para seguir con el flujo de pago#

Solicita un token de pago con tarjeta que podrás usar posteriormente para realizar un cobro a un cliente con el endpoint para crear un cargo recurrente.
Para obtener un token de pago con tarjeta, es necesario llamar al método requestToken() en la instancia de card inicializada previamente. Este método realiza las validaciones de 3DS, OTP, Sift Science automáticamente. Te recomendamos validar que todos los campos sean correctos; de lo contrario, arrojará una excepción.
Una vez obtenido el token, envíalo a tu back-end para seguir con el flujo de pago.
Para realizar validaciones mediante OTP, revisa validación OTP.
Consulta la referencia para más información sobre la solicitud de token.

2. Configura tu back-end#

La responsabilidad del back-end es recibir el token obtenido desde tu front-end y crear la inscripción con Kushki.
Cuando el usuario envía el formulario, tu front-end transfiere un token a un endpoint que hayas especificado. Con este token, deberás realizar una llamada a nuestro endpoint del API para crear la inscripción de la tarjeta.
JavaScript
Python
PHP
Revisa nuestra Referencia de la API para mayor información.
De acuerdo con tu respuesta, redirecciona al usuario a una pantalla de éxito o fracaso para informar al cliente si la inscripción se creó correctamente o si hubo un error.

Realiza una validación antifraude(Opcional)#

Para la seguridad de tu comercio, el equipo de prevención de fraude de Kushki te solicitará en ciertos casos o para determinados montos activar la validación de identidad al inscribir tarjetas para realizar cargos recurrentes.

¿Cómo funciona la validación antifraude?#

Cuando intentes inscribir una tarjeta, Kushki realizará una validación para verificar si el número de documento está asociado a la tarjeta de crédito enviada. En caso de que la validación sea exitosa, la inscripción se realizará correctamente, en caso contrario, esta se declinará.

Envía la información de la tarjeta#

Deberás enviar la información a validación en el endpoint de creación de suscripción.
Asegúrate de enviar el parámetro ignoreWarnings en false, incluir el tipo y número de documento, nombre, primer apellido y segundo apellido en el objeto contactDetails. Si por el contrario deseas omitir esta validación, envía el parámetro ignoreWarnings con valor de true.

Recibe el resultado de la validación#

La respuesta de la validación de identidad la recibirás en el objeto rules con tres posibles respuestas:
RespuestaParámetros recibidos¿Qué hacer?
Transación aprobada{"code": "000","message": "TransUnion Approval"} {"code": "000","message": "ExperianSignature Approval"}No será necesario hacer nada más, la transacción será enviada para crear la suscripción y de acuerdo a la respuesta, redirecciona al usuario a una página de éxito o fracaso para informar al cliente si la suscripción se creó satisfactoriamente o no.
Transacción rechazada:(No fue posible realizar la validación){"code": "006","message": "TransUnion Unavailable"} {"code": "006","message": "ExperianSignature Unavailable"}Verificar que se hayan enviado los parámetros documentNumber y documentType en el objeto contactDetails y reintentar.
Transacción rechazada{"code": "322","message": "TransUnion Declined"} {"code": "322","message": "Número de tarjeta no corresponde a la identificación dada"}En caso de que la transacción haya sido declinada por el sistema de validación, tendrás dos opciones: 1)Ignorar la alerta e inscribir la tarjeta: En este caso deberás volver al paso anterior, asegurándote de enviar el parámetro ignoreWarnings en true y el mismo token ya generado 2)Acatar la alerta y rechazar la transacción.
En ciertos casos la validación antifraude será obligatoria para procesar la transacción, por lo cual, incluso si envías el parámetro ignoreWarnings con valor de true y obtienes una respuesta negativa del servicio de validación (código 322), la transacción será declinada.
Para mayor información, consulta nuestro artículo Códigos de error.

3. Prueba tu integración#

Los datos especificados a continuación servirán para probar la correcta creación de la inscripción en ambiente de pruebas UAT, sin embargo los cargos calendarizados no se ejecutarán en dicho ambiente.
Existen tarjetas de prueba que puedes utilizar en el ambiente UAT para asegurarte de que tu integración está lista. Úsalas con cualquier CVV, código postal y fecha de expiración futura.
Transacción aprobada: 5451951574925480
Transacción declinada en solicitud de token (front-end): 4574441215190335
Si deseas probar la creación de una suscripción de una tarjeta realizando la validación antifraude, usa los números de tarjeta que se muestran a continuación al solicitar el token de inscripción y al realizar la petición de creación de la inscripción. El número de documento y tipo de documento indicados deberán incluirse dentro del objeto contactDetails.
Validación aprobada:
Tarjeta de crédito: 5642569816497595
Número de documento: 80004393
Tipo de documento: CC
Validación rechazada:
Tarjeta de crédito: 5642569816497595
Número de documento: 8000000
Tipo de documento: CC
Validación no realizada:
No enviar documentNumber ni documentType en el objeto contactDetails
Para probar la validación antifraude, es necesario una configuración adicional por parte del equipo de Kushki en la cuenta de tu comercio. Comunícate con tu agente de soporte desde tu consola de administración para realizar esta configuración.

4. Prepara tu certificación#

Toma en consideración las siguientes pautas para aprobar la certificación técnica (requerida para obtener credenciales productivas):
Los cálculos de los impuestos están correctos.
No almacenas datos sensibles de tarjeta en tu base de datos (número completo de tarjeta, cvv, etc.).
Los mensajes que muestras en pantalla van de acuerdo con las respuestas de Kushki.
Guardas todas las respuestas de Kushki (requeridas en caso de necesitar soporte).
La fecha del primer cobro (startDate) es una fecha futura.
La suscripción se cancela con Kushki cuando tu cliente decide cancelar sus cobros recurrentes.
Asegúrate de enviar todos los datos requeridos que se especifican en la Referencia de la API.
El logo de Kushki debe ser visible para el cliente. Puedes encontrar nuestro logo en varios formatos aquí.
Si estás utilizando Kushki.js, considera también lo siguiente:
El nombre del titular de la tarjeta es requerido.
El campo de número de tarjeta es requerido.
El campo de número de tarjeta acepta solo números.
El campo de número de tarjeta permite un máximo de 16 dígitos (pueden ser menos).
El campo de CVV es requerido.
El campo de CVV acepta sólo números.
El campo de CVV permite un máximo de 4 dígitos y un mínimo de 3.
La fecha de expiración es requerida.
El botón de pago se deshabilita luego de hacer el primer clic.
El logo de Kushki debe ser visible para el cliente. Puedes encontrar nuestro logo en varios formatos aquí.

Maneja tus suscripciones
Edita los datos o cancela los cobros automáticos.
Acepta webhooks
Maneja eventos post-pago de la manera correcta.
Modificado en 2026-09-23 16:50:55
Anterior
Maneja tus cargos calendarizados
Siguiente
¿Cómo funcionan los cargos recurrentes con tarjeta?
Built with