Si tus usuarios no tienen tarjeta de crédito o prefieren usar el saldo disponible en sus cuentas bancarias para comprar en línea, la transferencia bancaria es la opción de pago ideal.Transfer In permite que tus clientes paguen directamente desde su cuenta bancaria, sin tarjeta. En Ecuador 🇪🇨 puedes ofrecerlo con dos procesadores:
Procesador
Experiencia del cliente
Transferencia bancaria tradicional
Flujo seguro de redirección al banco. El cliente autoriza la transferencia en el portal web de su banco.
DeUna!
Flujo de billetera. El cliente paga desde la app de DeUna! con un QR dinámico, un deep link o un código de referencia.
¡Ten en cuenta!
Por nuestras políticas de riesgo, los métodos de pago disponibles y el tipo de integración pueden variar una vez que completes la afiliación. Te indicaremos cómo proceder si este proceso aplica a tu comercio.
Activación del procesador
DeUna! debe estar habilitado como procesador para tu comercio desde la Kushki Console. Esto lo hace el equipo de Kushki: no hay opción de autoservicio ni un parámetro en la petición para elegir el procesador. Una vez habilitado, el mismo endpoint /transfer/v1/init empieza a devolver los campos de DeUna!.
Un pago con Transfer In en Ecuador tiene 4 pasos secuenciales: tokenización, inicialización, pago del cliente y confirmación del estado. El primer, segundo y cuarto paso son idénticos para ambos procesadores: solo cambia la forma en que el cliente completa el pago.
Solicita un token de Transfer In
Tu backend llama al endpoint de token usando tu Public Merchant ID. Debes incluir el monto de la transacción, los datos del documento del cliente y un callbackUrl: la URL donde aterriza el cliente después de completar el pago.
Reglas del token: los tokens expiran en 30 minutos y son de un solo uso. Si la transacción falla o el token expira, debes solicitar uno nuevo.
Campos requeridos para Ecuador:
Campo
Descripción
amount
Objeto con subtotalIva, subtotalIva0 e iva
callbackUrl
URL de redirección después de la confirmación del pago
userType
0 = Persona Natural · 1 = Persona Jurídica
documentType
CI, RUC o PAS (ver abajo)
documentNumber
Mínimo 6 caracteres
email
Correo del cliente
currency
Siempre USD para Ecuador
Tipos de documento aceptados en Ecuador:
Valor
Documento
CI
Cédula de Identidad 🇪🇨
RUC
Registro Único de Contribuyentes 🇪🇨
PAS
Pasaporte 🇪🇨
Nota:bankIdno es requerido en Ecuador. No necesitas llamar al endpoint de lista de bancos para este país.
Inicia la transacción
Usando tu Private Merchant ID, llama al endpoint Init Transaction con el token obtenido en el paso anterior. Kushki valida el token y devuelve los datos que necesitas para completar el pago.La respuesta depende del procesador habilitado para tu comercio:
Transferencia bancaria tradicional
DeUna!
Campo
Descripción
redirectUrl
URL de un solo uso para redirigir al cliente a su banco
ticketNumber
Identificador de la transacción en Kushki
transactionReference
Referencia única de esta transacción
details.status
Estado inicial: siempre initializedTransaction en este punto
El redirectUrl es de un solo uso: redirige a tu cliente a esa URL inmediatamente después de recibirla.
El cliente completa el pago
Transferencia bancaria tradicional
DeUna!
El cliente es redirigido al portal de su banco y autoriza (o rechaza) la transferencia. Este paso ocurre por completo del lado del banco: tu backend no necesita hacer nada.Cuando el cliente termina, el banco lo redirige de vuelta a tu callbackUrl.
Consulta el estado de la transacción
Después de que el cliente aterriza en tu callbackUrl, llama al endpoint Get Status usando el token original como parámetro de ruta para confirmar el resultado final de la transacción.Estados posibles en Ecuador:
Estado
Significado
initializedTransaction
La transacción se creó pero aún no se completó
approvedTransaction
Transferencia autorizada: los fondos están en camino
declinedTransaction
La transferencia fue rechazada
No tomes el regreso del cliente a tu callbackUrl como comprobante de pago. Confirma siempre con Get Status o con un webhook.
El campo qr contiene una imagen PNG codificada en Base64, con el prefijo data:image/png;base64, ya incluido. Tu sitio debe leer el valor y renderizarlo como imagen en tu checkout: Kushki no aloja la imagen del QR por ti.
No agregues el prefijo dos veces
Como qr ya trae el prefijo data:image/png;base64,, concatenarlo de nuevo produce un data URI inválido y la imagen falla en silencio: te queda un espacio en blanco sin error en consola.
Los artefactos de pago de DeUna! expiran mucho más rápido que el token. Genéralos en el momento en que el cliente esté listo para pagar, muestra una cuenta regresiva y vuelve a llamar a Init Transaction con un token nuevo si expiran.
Si tu comercio también procesa transferencias bancarias tradicionales, DeUna! requiere un MID aparte. Ese es el que identifica las transacciones de DeUna! en tu reporte de liquidación.
El objeto amount es requerido tanto en el paso de Token como en el de Init Transaction. Usa la siguiente estructura según si la transacción tiene impuestos o no:
Puedes recibir notificaciones de transacciones en tiempo real incluyendo el objeto webhooks en tu petición de Init Transaction. Esto es independiente de los webhooks configurados en la Kushki Console: ambos canales se disparan al mismo tiempo.
Si ya tienes un Webhook configurado en la Console, agregar el objeto webhooks en la petición de la API dispara ambos canales. No son mutuamente excluyentes.
Nunca expongas tu Private-Merchant-Id en código de cliente o de frontend. Las peticiones de token con la Public Key se pueden hacer desde el frontend; todas las demás llamadas deben salir de tu backend.