1. Pagos con transferencias
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 con transferencias

Recibe transferencias bancarias

Tus clientes podrán usar el saldo de su cuenta bancaria para comprar en tu sitio o aplicación
Web
iOS
Android
Permite que tus clientes aprovechen el saldo disponible en su cuenta bancaria para adquirir tus productos o servicios desde tu página web, a través de PSE o PSE Avanza. Para lograrlo, debes habilitar el listado de bancos disponibles en Colombia, obtener los datos básicos de tu cliente pagador y direccionarlos al sitio de su sucursal bancaria virtual, para realizar el débito a la cuenta bancaria.
¿Quieres recibir pagos con Bre-B?
Los pagos con Bre-B se integran desde la sección de Métodos alternativos de pago (APM). Consulta ¿Cómo funcionan los pagos con APM?.
El flujo de pago para PSE (Versión 1.0) que integrarás es el siguiente:
Flujo pago con transferencia (CO) V1.0
El flujo de pago para PSE Avanza (Versión 2.0) que integrarás es el siguiente:
Flujo de pago con transferencia (CO) PSE Avanza
Con esta versión mejoramos la experiencia de usuario permitiendo a tus clientes comprar en menos pasos.
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.

1. Configura tu Front-end#

La responsabilidad del front-end es recolectar los datos principales del usuario, tokenizar esa información a través de los servidores de Kushki y luego enviarla al back-end para iniciar el proceso de pago.
Para ello cuentas con dos opciones: Kajita y Kushki.js.

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, agrega el tag script.
Para la Kajita (v.2) podrás obtener dicho script desde tu Consola de administración, según lo explicado en Crea y personaliza tus Kajitas.
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.
Puedes utilizar Kajita para ofrecer no solo pagos a través de transferencias, sino también con tarjeta o con efectivo.

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.
Opción 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

Solicita el listado de bancos#

Antes de generar el token, necesitas cargar el listado completo de bancos disponibles, para que el cliente pagador pueda seleccionar la entidad para efectuar la transferencia:

Recolecta 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 como desees.
Por ejemplo:
Envía notificaciones a tus clientes
Si deseas que tus clientes reciban notificación de sus transacciones, asegúrate de capturar el email de tu cliente en el formulario de pago. Adicional a esto, recuerda habilitar la opción de envío de notificaciones desde tu Consola.
Luego, cuando el usuario envía el formulario, deberás solicitar el token y enviarlo a tu back-end.
Revisa la referencia completa en nuestra referencia de Kushki.js
Versión PSE Avanza
En caso de no haber detectado en el token toda la información necesaria para poder generar la transacción con PSE Avanza, a tus clientes se les mostrará un formulario, el cual será enviado una única vez para registrar sus datos.

2. Configura tu back-end#

La responsabilidad del back-end es recibir el token obtenido desde tu front-end e iniciar el proceso de pago con Kushki.
Cuando el usuario envía el formulario, tu front-end transfiere un token al endpoint que hayas especificado. Con este token, deberás realizar una llamada a nuestro endpoint de cobros para iniciar el proceso de cobro.
Referencia de la API para Colombia
Solicita un token de transferencia
Init Transaction
Get Status
Autentica siempre desde tu servidor
El inicio de la transacción requiere la cabecera Private-Merchant-Id. Nunca expongas tu Private Key en código de front-end: esta llamada debe salir siempre desde tu back-end.
JavaScript
Python
PHP
Si utilizas la versión 1.0 de PSE no es necesario que envíes el objeto contactDetails.
Para PSE (Versión 1.0)
De acuerdo a la respuesta del consumo del método para iniciar la transacción, redirecciona al usuario hacia PSE usando el parámetro redirectUrl para que tu cliente pueda autenticarse y así autorizar el débito del monto de la transacción del saldo de su cuenta bancaria.
Para PSE Avanza (Versión 2.0)
De acuerdo a la respuesta del consumo del método para iniciar la transacción, redirecciona al usuario hacia la URL que te retorna Kushki para que pueda autenticarse en el portal virtual de su entidad bancaria y así autorizar el débito del monto de la transacción del saldo de su cuenta bancaria.
Para la redirección, trata de no utilizar contenedores como Frame, Panel, o IFrame. Evita funciones como ventanas de pop-up ya que pueden ser bloqueadas por el navegador. Redirecciona al usuario en la misma pestaña o ventana.

Muestra el resultado de la transacción#

Una vez terminado el pago en el portal de PSE (Versión 1.0) o en el portal bancario (Versión 2.0), se retornará el cliente con una llamada GET a la callbackUrl que hayas especificado al solicitar el token.
Junto con la URL de retorno te enviaremos en la ruta el token de la transacción, con el cual puedes verificar el estado de la transacción utilizando este endpoint. Además, obtendrás la información necesaria para el comprobante de pago de tu cliente.
Por ejemplo, para callbackUrl = 'http://www.example.com' se retornará el cliente a:
GET https://www.example.com/?token=26735cbb653a421ba7138eb515e0ab1d
donde token es igual a 26735cbb653a421ba7138eb515e0ab1d
De acuerdo con la respuesta que recibas del estado de la transacción, muestra al usuario una pantalla de éxito o fracaso para informar al cliente si el pago se realizó correctamente o si hubo un error.

3. Prueba tu integración#

El resultado final de estos datos de prueba depende de la configuración de tu comercio: requiere que el ambiente de pruebas (sandbox) esté activo en tu comercio y que el procesador asignado admita simular ciertos estados. Si no obtienes el resultado esperado, escribe a tu ejecutivo de Kushki o a soporte.
Existen números de identificación de prueba que puedes utilizar para asegurarte de que tu integración está lista. Úsalos para simular cualquier estado:
Transacción aprobada: 123456789
Transacción pendiente: 999999990
Transacción en estado rechazado ('NOT_AUTHORIZED'): 100000002
Transacción fallida ('FAILED'): Cualquier número de identificació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):
El cálculo de los impuestos y el monto total, debe ser el correcto.
Muestra tus mensajes en pantalla de acuerdo con las respuestas de Kushki.
Guarda y registra todas las respuestas de Kushki (requeridas en caso de necesitar soporte).
El cliente debe reconocer el método de pago que está utilizando, por lo que debes incluir el logo de PSE.
Puedes mostrar el medio de pago, como:
Débito desde cuenta corriente/Ahorros
Débito bancario PSE
Evita utilizar los siguientes textos:
Transferencia bancaria
Débito a cuenta
Para la redirección no utilices contenedores como Frame, Panel, IFrame, etc. Evita funciones como las ventanas emergentes que son bloqueadas por los navegadores, y redirige en la misma pestaña y/o ventana.
En el comprobante de pago, agrega la siguiente información:
Nombre de tu empresa (Nombre o razón social)
NIT de tu empresa (NIT)
Descripción del pago
Fecha de la transacción
Estado de la transacción
Código de trazabilidad (CUS). Lo puedes obtener en la respuesta del método init
Número de transacción
Banco
Monto
Esta es la información que habrás obtenido utilizando el endpoint del estado de la transferencia, durante el paso Muestra el resultado de la transacción.
Muestra el estado de la transacción de la siguiente forma:
ProcessorState OK:APROBADA El estado no debe mostrarse en inglés. Adicional, evita el uso de sinónimos, como: exitoso, autorizada, aceptada, pagada, afirmativo, etc.
ProcessorState PENDING:PENDIENTE El estado no debe mostrarse en inglés. Adicional, evita el uso de sinónimos, como: en confirmación, sin resolver, incompleto, etc.
ProcessorState NOT_AUTHORIZED:RECHAZADA El estado no debe mostrarse en inglés. Adicional, evita el uso de sinónimos, como: declinado, cancelado, no aceptado, etc.
ProcessorState FAILED:FALLIDA El estado no debe mostrarse en inglés. Adicional, evita el uso de sinónimos, como: falla, error, etc.
Incluir dentro del recibo de pago, un enlace (botón) para acceder a un módulo de consulta en el que se muestren los siguientes datos básicos: CUS, monto, fecha de la transacción, estado actual. Las empresas que no requieran autenticación con nombre de usuario y contraseña para realizar pagos, no tendrán que construir el módulo de consulta.
Incluir una opción para descargar e imprimir el recibo.
Si la transacción queda PENDIENTE, NO se debe permitir realizar una nueva transacción hasta que el estado final de la misma sea aprobada o rechazada.
La transacción no puede estar en PENDING:PENDIENTE por más de 21 minutos.
Todos los estados deben incluir el texto con un número de teléfono y una dirección de correo electrónico de tu empresa, donde tus clientes puedan verificar el estado de la transacción.
En caso de que recibas correctamente la notificación al Webhook, responde la solicitud con un statusCode 200 e informa a tu cliente.
El botón "Pagar" se desactiva después del primer clic.
El logo de Kushki debe ser visible para el cliente. Puedes encontrar nuestro logo en varios formatos aquí.
Asegúrate de enviar todas las variables requeridas, especificadas en la referencia de la API.

Acepta webhooks
Maneja eventos post-pago de la manera correcta.
Consulta el estado de tus transacciones
Con el token que recibiste desde el front-end, también podrás consultar el estado de las transacciones por medio de nuestra API.
Modificado en 2026-10-16 22:07:16
Anterior
Pagos con transferencias
Siguiente
Códigos de error para transferencias
Built with