1. Online Payments
Español
  • English
  • Español
  • Docs para desarrolladores 🇪🇨
  • Online Payments
    • Notas de versión
    • Errores del API de Kushki
    • Card Payments
      • Solicitar un token de tarjeta
      • Hacer un cargo o cargo diferido
      • Reembolsar una transacción
      • Anular una transacción
      • Solicitar opciones de diferido
      • Validar OTP
      • Información de BIN V2
      • Información de BIN
    • One Click and Scheduled Payments
      • Solicitar un token de cargo recurrente
      • Crear un cargo recurrente
      • Actualizar los datos de la tarjeta del cargo recurrente
      • Hacer un pago One-click
      • Cancelar un cargo recurrente
      • Actualizar un cargo recurrente
      • Agregar un cargo o descuento temporal
      • Consultar información del cargo recurrente
    • Chargebacks
      • Consultar chargebacks
      • Solicitar exportación de chargebacks
    • Subscription Transactions
      • Consultar transacciones de suscripción
    • Cash in
      • Solicitar un token de Cash In
      • Iniciar transacción
      • Actualizar una transacción de Cash In
      • Estado de la transacción
      • Eliminar una transacción de Cash In
    • Transfer in
      • Solicitar un token de Transfer In
      • Iniciar transacción
      • Consultar estado
    • Analytics
      • Consultar listado de transacciones v2
    • Smartlinks
      • Crear un Smartlink
      • Actualizar un Smartlink
      • Consultar un Smartlink
      • Eliminar un Smartlink
    • Status
      • Consultar estado del gateway
      • Consultar estado de la plataforma
    • Commissions
      • Consultar configuración de comisiones
    • Payment Credentials
      • Crear una credencial
      • Buscar credenciales
      • Activar o desactivar
      • Eliminar credencial
      • Actualizar credencial
      • Regenerar una credencial
      • Búsqueda avanzada
    • Payment Button
      • Crear un Payment Button
    • Settlement
      • Consultar liquidación
  • Appian - Submerchant Register
    • Release Notes
    • Submerchant Validation in Batch
    • Query submerchant status by requestId/submerchantId
    • Get submerchantIds
    • Get credentials for submerchants
  • Schemas
    • threeDomainSecure
    • Card-old
    • Channel
    • SubscriptionTransactionsResponse
    • Card Present (CP)
    • Amount-cash-in
    • webhooks
    • ChargebackListResponse
    • StatusComponent
    • SettlementDateRangeRequest
    • Card
    • networkToken
    • ChargebackItem
    • SettlementRecord
    • Card Not Present (CNP)
    • currency
    • ErrorResponse
    • SubscriptionTransaction
    • Subscription
    • Amount
    • ErrorResponse400
    • SettlementResponse
    • Country
    • Deferred
    • extraTaxes
    • ErrorResponse401
    • Language
    • ErrorResponse403
    • Metadata
    • payment_method
    • ErrorResponse500
    • ContactDetails
    • orderDetails
    • Shipping Address
    • Billing-Address
    • payment_submethod
    • SubscriptionUpdate
    • documentType
    • SubscriptionAdjustmentRequest
    • threeDomainSecure
    • webhooks
    • headers
    • webhooksChargeback
    • citMit
    • network
    • binInfo
    • messageFields
    • UnexpectedErrorResponse
    • ExternalReferenceId
    • product
    • transactionType
    • SettlementTicketRequest
HomePerú 🇵🇪México 🇲🇽Ecuador 🇪🇨
Colombia 🇨🇴Chile 🇨🇱
HomePerú 🇵🇪México 🇲🇽Ecuador 🇪🇨
Colombia 🇨🇴Chile 🇨🇱
  1. Online Payments

Transfer In

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:
ProcesadorExperiencia del cliente
Transferencia bancaria tradicionalFlujo 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!.

Flujo de pago#

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:
CampoDescripción
amountObjeto con subtotalIva, subtotalIva0 e iva
callbackUrlURL de redirección después de la confirmación del pago
userType0 = Persona Natural · 1 = Persona Jurídica
documentTypeCI, RUC o PAS (ver abajo)
documentNumberMínimo 6 caracteres
emailCorreo del cliente
currencySiempre USD para Ecuador
Tipos de documento aceptados en Ecuador:
ValorDocumento
CICédula de Identidad 🇪🇨
RUCRegistro Único de Contribuyentes 🇪🇨
PASPasaporte 🇪🇨
Nota: bankId no 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!
CampoDescripción
redirectUrlURL de un solo uso para redirigir al cliente a su banco
ticketNumberIdentificador de la transacción en Kushki
transactionReferenceReferencia única de esta transacción
details.statusEstado 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:
EstadoSignificado
initializedTransactionLa transacción se creó pero aún no se completó
approvedTransactionTransferencia autorizada: los fondos están en camino
declinedTransactionLa 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.

Integrar DeUna!#

Renderizar el código QR#

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.

Expiración#

ÍtemVigencia
Token de Transfer In30 minutos
QR, deep link y código de referencia de DeUna!3 minutos
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.

Límites de transacción#

LímiteValor
Monto mínimo por transacciónUSD 1.00, no configurable
Máximo por usuario, por díaUSD 5,000
Máximo por usuario, por mesUSD 36,000
MonedaSolo USD
DeUna! solo admite pagos entrantes de tarjeta no presente, no recurrentes. No está disponible para pagos salientes ni para cargos recurrentes.

Disponibilidad por tipo de integración#

CapacidadAPI · Kushki JSKajita · SmartLinks
Redirección por deep link✅ Sí✅ Sí
Código de referencia✅ Sí✅ Sí
QR dinámico✅ Sí❌ No se renderiza
Logo de DeUna! en el checkout✅ Tu propio diseño❌ Texto genérico de transferencia
Transferencia tradicional + DeUna! en paralelo✅ Sí❌ Solo un procesador
Recomendación
Para aprovechar DeUna! al máximo (las tres experiencias, tu propia marca y más de un procesador a la vez) integra por API o Kushki JS.

Merchant ID#

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.

Objeto amount#

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:
Con impuestos (IVA)
Sin impuestos (IVA 0)
Con impuestos adicionales
{
  "amount": {
    "subtotalIva": 100.00,
    "subtotalIva0": 0,
    "iva": 12.00
  }
}
Envía en subtotalIva la base imponible y en iva el valor del impuesto. Envía 0 en subtotalIva0.

Notificaciones por webhook#

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.
{
  "webhooks": [
    {
      "events": ["approvedTransaction", "declinedTransaction"],
      "headers": [
        { "label": "Authorization", "value": "Bearer your-token" }
      ],
      "urls": [
        "https://merchant.example.com/webhooks/transfer-in"
      ]
    }
  ]
}
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.

Autenticación#

Cada paso usa una credencial distinta:
PasoCabeceraTipo de llave
Request a TokenPublic-Merchant-IdPublic Key (desde Kushki Console → Credentials)
Init TransactionPrivate-Merchant-IdPrivate Key (desde Kushki Console → Credentials)
Get StatusPrivate-Merchant-IdPrivate Key
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.

Usar la API#

🟢 Producción
🧪 Sandbox (UAT)
https://api.kushkipagos.com/

Endpoints disponibles#

Solicitar un token de Transfer In
Tokeniza los datos de la transacción. Requiere Public Merchant ID. El token es válido por 30 minutos y de un solo uso.
Iniciar transacción
Inicializa la transferencia usando el token. Devuelve el redirectUrl y, para DeUna!, el qr y el referenceCode.
Consultar estado
Recupera el estado final de una transacción usando el token como parámetro de ruta.

¿Tienes una sugerencia sobre esta documentación? Escríbenos.
Modified at 2026-09-11 14:47:23
Previous
Eliminar una transacción de Cash In
Next
Solicitar un token de Transfer In
Built with