
| Campo | Tipo | Descripción |
|---|---|---|
name | string | Nombre del cliente |
lastName | string | Apellido del cliente |
identification | string | Número de documento del cliente (solo dígitos) |
documentType | string | CI, RUC o PP (ver abajo) |
totalAmount | number | Monto total de la transacción |
currency | string | Siempre USD para Ecuador |
email | string | Correo del cliente (opcional) |
description | string | Descripción del pago (opcional) |
| Valor | Documento |
|---|---|
CI | Cédula de Identidad 🇪🇨 |
RUC | Registro Único de Contribuyentes 🇪🇨 |
PP | Pasaporte 🇪🇨 |
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.| Campo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|
token | ✅ | — | Token del paso anterior |
amount | ✅ | — | Objeto amount (ver la estructura más abajo) |
expirationDate | ❌ | 7 días | Fecha 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 |
| Campo | Descripción |
|---|---|
pin | Código de referencia de pago que el cliente presenta en el punto de recaudación |
pdfUrl | URL del comprobante de pago imprimible |
ticketNumber | Identificador de la transacción en Kushki — úsalo para consultar el estado |
transactionReference | Referencia única basada en UUID para esta transacción |
details.expiration | Timestamp Unix (ms) de la fecha de expiración del PIN |
details.transactionStatus | Siempre initializedTransaction en este punto |
details.agreementDetails | Lista de puntos de recaudación autorizados y sus números de convenio |
Comparte ambos pinypdfUrlcon el cliente — puede usar cualquiera de los dos para pagar en un punto de recaudación.
ticketNumber como parámetro de ruta para confirmar si el pago se completó.| Estado | Significado |
|---|---|
initializedTransaction | PIN generado — el pago aún no se realiza |
approvedTransaction | Efectivo recibido — fondos acreditados en tu cuenta |
expiredTransaction | El PIN expiró antes de que el cliente pagara |
amount es obligatorio en el paso Init Transaction. La estructura depende de si la transacción tiene impuestos:{
"amount": {
"subtotalIva": 0,
"subtotalIva0": 100.00,
"iva": 0,
"ice": 0,
"currency": "USD"
}
}subtotalIva0. Deja los demás campos en 0.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"
]
}
]
}identification para simular distintos resultados en el ambiente Sandbox:identification | Resultado simulado |
|---|---|
| Cualquier número válido | approvedTransaction |
9999999999 | initializedTransaction (pago pendiente) |
1000000000 | declinedTransaction |
| Paso | Cabecera | Tipo de llave |
|---|---|---|
| Solicitar un token | Public-Merchant-Id | Public Key (Kushki Console → Credentials) |
| Init Transaction | Private-Merchant-Id | Private Key (Kushki Console → Credentials) |
| Transaction Status | Private-Merchant-Id | Private Key |
| Actualizar la transacción | Private-Merchant-Id | Private Key |
| Eliminar la transacción | Private-Merchant-Id | Private Key |
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ódigo | Mensaje | Causa |
|---|---|---|
C001 | Cuerpo de la petición inválido | Cuerpo mal formado o faltan campos obligatorios |
C003 | Token inválido | El token enviado es inválido o expiró |
C005 | Id de transacción no válido | ticketNumber inválido en la ruta |
C006 | Monto de la transacción inválido | El monto de la transacción no es válido |
C017 | La fecha de expiración no es válida | expirationDate está en el pasado o es menos de 1 día después de la creación |
C018 | La transacción no existe o ha sido eliminada | La transacción ya fue eliminada o no existe |
C023 | No es posible actualizar la transacción | La transacción no se puede actualizar (ya fue pagada o expiró) |
C040 | El ID de comercio no corresponde a la credencial enviada | Las llaves Public y Private pertenecen a comercios distintos |
C066 | Las credenciales no son correctas o no coinciden | Las credenciales son incorrectas o no coinciden |
K004 | ID de comercio o credencial no válido | ID de comercio o credencial inválido |
https://api.kushkipagos.com/¿Tienes alguna sugerencia sobre esta documentación? Contáctanos.