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

Cash in

Permite que tus clientes sin cuenta bancaria compren tus productos o servicios desde tu sitio web.
Si tus usuarios no tienen cuenta bancaria, o prefieren evitar cargos adicionales como intereses o comisiones, el pago en efectivo es la opción ideal. Con este método, tus clientes solo necesitan una referencia de pago y efectivo para completar una compra en cualquier punto de recaudación autorizado.
¡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.

Proceso de pago#

El proceso de pago en efectivo tiene tres etapas principales: generar una referencia de pago, realizar el pago en un punto físico y confirmar la recepción.
Cash In EN
Flujo de pago de Cash In
Solicita un token de Cash In
El cliente selecciona efectivo como método de pago en el checkout. Tu frontend llama al endpoint de token con tu Public Merchant ID y los datos de identidad del cliente.
Campos obligatorios:
CampoTipoDescripción
namestringNombre del cliente
lastNamestringApellido del cliente
identificationstringNúmero de documento del cliente (solo dígitos)
documentTypestringCI, RUC o PP (ver abajo)
totalAmountnumberMonto total de la transacción
currencystringSiempre USD para Ecuador
emailstringCorreo del cliente (opcional)
descriptionstringDescripción del pago (opcional)
Tipos de documento aceptados en Ecuador:
ValorDocumento
CICédula de Identidad 🇪🇨
RUCRegistro Único de Contribuyentes 🇪🇨
PPPasaporte 🇪🇨
Init Transaction
Tu backend llama al endpoint Init Transaction con el token del paso anterior y tu Private Merchant ID. Kushki genera un PIN y un comprobante de pago (PDF) que el cliente presentará en el punto de recaudación.
Campos de la solicitud:
CampoObligatorioPor defectoDescripción
token✅—Token del paso anterior
amount✅—Objeto amount (ver la estructura más abajo)
expirationDate❌7 díasFecha hasta la que el PIN es válido. Formato: YYYY-MM-DD HH:mm:ss (UTC). Debe ser al menos 1 día después de crear el token.
metadata❌—Pares clave-valor personalizados para tus registros
webhooks❌—URL de notificación en tiempo real
fullResponse❌—Envía "v2" para recibir la respuesta extendida
Campos de la respuesta:
CampoDescripción
pinCódigo de referencia de pago que el cliente presenta en el punto de recaudación
pdfUrlURL del comprobante de pago imprimible
ticketNumberIdentificador de la transacción en Kushki — úsalo para consultar el estado
transactionReferenceReferencia única basada en UUID para esta transacción
details.expirationTimestamp Unix (ms) de la fecha de expiración del PIN
details.transactionStatusSiempre initializedTransaction en este punto
details.agreementDetailsLista de puntos de recaudación autorizados y sus números de convenio
Comparte ambos pin y pdfUrl con el cliente — puede usar cualquiera de los dos para pagar en un punto de recaudación.
El cliente paga en un punto de recaudación
El cliente va a cualquier punto de recaudación físico autorizado con su PIN o el comprobante impreso. El cajero valida la referencia y acepta el pago en efectivo por el monto de la transacción.
En este paso no se requiere ninguna acción de tu backend.
Consulta el estado de la transacción
Después de la ventana de pago, consulta el endpoint Transaction Status usando el ticketNumber como parámetro de ruta para confirmar si el pago se completó.
Estados de transacción en Ecuador:
EstadoSignificado
initializedTransactionPIN generado — el pago aún no se realiza
approvedTransactionEfectivo recibido — fondos acreditados en tu cuenta
expiredTransactionEl PIN expiró antes de que el cliente pagara

Objeto amount#

El objeto amount es obligatorio en el paso Init Transaction. La estructura depende de si la transacción tiene impuestos:
Sin impuestos (IVA 0)
Con impuestos IVA
Con impuesto ICE
{
  "amount": {
    "subtotalIva": 0,
    "subtotalIva0": 100.00,
    "iva": 0,
    "ice": 0,
    "currency": "USD"
  }
}
Envía el monto completo en subtotalIva0. Deja los demás campos en 0.

Gestiona una transacción#

Una vez inicializada la transacción, puedes actualizarla o cancelarla antes de que el cliente complete el pago.
Actualiza el monto
Usa el endpoint Update (PATCH /cash/v1/charges/{ticketNumber}) para modificar el totalAmount de una transacción de cash in existente antes de que el cliente pague.
Solo se puede actualizar el campo totalAmount.
Elimina la transacción
Usa el endpoint Delete (DELETE /cash/v1/charges/{ticketNumber}) para cancelar una transacción e invalidar el PIN antes de que el cliente realice el pago.

Notificaciones por webhook#

Incluye el objeto webhooks en tu solicitud de Init Transaction para recibir notificaciones de pago en tiempo real. 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/cash-in"
      ]
    }
  ]
}

Pruebas en Sandbox#

Escenarios de prueba
Usa estos valores de identification para simular distintos resultados en el ambiente Sandbox:
identificationResultado simulado
Cualquier número válidoapprovedTransaction
9999999999initializedTransaction (pago pendiente)
1000000000declinedTransaction
Después de inicializar la transacción, usa el endpoint Transaction Status para verificar el resultado simulado.

Autenticación#

PasoCabeceraTipo de llave
Solicitar un tokenPublic-Merchant-IdPublic Key (Kushki Console → Credentials)
Init TransactionPrivate-Merchant-IdPrivate Key (Kushki Console → Credentials)
Transaction StatusPrivate-Merchant-IdPrivate Key
Actualizar la transacciónPrivate-Merchant-IdPrivate Key
Eliminar la transacciónPrivate-Merchant-IdPrivate Key
Nunca expongas tu Private-Merchant-Id en código del lado del cliente. Solo la solicitud de token usa la Public Key y se puede llamar desde el frontend.

Códigos de error#

CódigoMensajeCausa
C001Cuerpo de la petición inválidoCuerpo mal formado o faltan campos obligatorios
C003Token inválidoEl token enviado es inválido o expiró
C005Id de transacción no válidoticketNumber inválido en la ruta
C006Monto de la transacción inválidoEl monto de la transacción no es válido
C017La fecha de expiración no es válidaexpirationDate está en el pasado o es menos de 1 día después de la creación
C018La transacción no existe o ha sido eliminadaLa transacción ya fue eliminada o no existe
C023No es posible actualizar la transacciónLa transacción no se puede actualizar (ya fue pagada o expiró)
C040El ID de comercio no corresponde a la credencial enviadaLas llaves Public y Private pertenecen a comercios distintos
C066Las credenciales no son correctas o no coincidenLas credenciales son incorrectas o no coinciden
K004ID de comercio o credencial no válidoID de comercio o credencial inválido

Usa la API#

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

Endpoints disponibles#

Solicitar un token de Cash In
Tokeniza los datos del cliente y del monto. Requiere Public Merchant ID.
Iniciar transacción
Genera el PIN de pago y la URL del comprobante. Requiere Private Merchant ID.
Estado de la transacción
Devuelve el estado actual de una transacción de cash in por ticketNumber.
Actualizar una transacción de Cash In
Actualiza el totalAmount de una transacción inicializada antes del pago.
Eliminar una transacción de Cash In
Cancela e invalida el PIN de una transacción inicializada.

¿Tienes alguna sugerencia sobre esta documentación? Contáctanos.
Modified at 2026-09-07 16:51:12
Previous
Consultar transacciones de suscripción
Next
Solicitar un token de Cash In
Built with