Private-Merchant-Id). Nunca la expongas en código de cliente o de frontend: llama siempre al endpoint de token desde tu backend.GET /transfer/v1/bankList para obtener la lista de bancos soportados con su code y su name. Muestra esta lista para que el cliente elija su banco.POST /transfer/v1/tokens con los datos del pago. Devuelve un token de un solo uso.{
"bankId": "1022",
"amount": {
"subtotalIva": 0,
"subtotalIva0": 150.00,
"iva": 0
},
"currency": "PEN",
"callbackUrl": "https://yoursite.com/payment/return",
"userType": "0",
"documentType": "DNI",
"documentNumber": "12345678",
"email": "user@example.com",
"paymentDescription": "Order #1234"
}⚠️ callbackUrles obligatorio en Perú. El cliente se redirige a esta URL después de completar (o abandonar) el pago.
POST /transfer/v1/init con el token. La respuesta devuelve un redirectUrl: envía ahí al cliente para que complete la transferencia bancaria.{
"token": "V0OzRB100000xhxQB8035251pHLBQsq5",
"amount": {
"subtotalIva": 0,
"subtotalIva0": 150.00,
"iva": 0,
"currency": "PEN"
},
"fullResponse": "v2"
}{
"redirectUrl": "https://api.kushkipagos.com/transfer/v1/agent?token=...",
"transactionReference": "28e6ac31-0af1-479a-9a6f-1a596bba6aea"
}callbackUrl, llama a GET /transfer/v1/status/{token} para confirmar el estado final.status en la respuesta:| Valor | Significado |
|---|---|
approvedTransaction | Pago completado correctamente |
declinedTransaction | El banco rechazó el pago |
initializedTransaction | El pago sigue pendiente |
expiredTransaction | El token o la sesión expiraron sin pago |
| Moneda | Código |
|---|---|
| Sol peruano | PEN |
| Dólar estadounidense | USD |
| Valor | Descripción |
|---|---|
DNI | Documento Nacional de Identidad 🇵🇪 |
CE | Carné de Extranjería 🇵🇪 |
PAS | Pasaporte 🇵🇪 |
RUC | Registro Único de Contribuyentes 🇵🇪 |
| Valor | Descripción |
|---|---|
0 | Persona natural |
1 | Persona jurídica |
| Campo | Requerido | Descripción |
|---|---|---|
bankId | No | Código del banco de destino. Si lo omites, el cliente elige el banco en el portal bancario. |
amount | Sí | Desglose del monto del pago (subtotalIva, subtotalIva0, iva). |
currency | Sí | PEN o USD. |
callbackUrl | Sí | URL a la que se redirige al cliente después del pago. Obligatorio en Perú. |
documentType | No | Tipo de documento del cliente. |
documentNumber | No | Número de documento del cliente. Obligatorio si envías documentType. |
email | No | Correo electrónico del cliente. |
userType | No | 0 = persona natural, 1 = persona jurídica. |
paymentDescription | No | Descripción de texto libre que se muestra al cliente en el portal bancario. |
| Campo | Requerido | Descripción |
|---|---|---|
token | Sí | Token que devuelve el endpoint de token. |
amount | No | Desglose del monto, incluida la currency. Obligatorio si es distinto del monto del token. |
expirationDate | No | Fecha y hora de expiración de la transacción. Solo para Perú. |
webhooks | No | Array de URLs a notificar cuando cambia el estado de la transacción. |
fullResponse | No | Envía "v2" para recibir el detalle completo de la transacción en la respuesta. |
metadata | No | Pares clave-valor personalizados para tu propio seguimiento. |
webhooks en tu solicitud init para recibir notificaciones de estado en tiempo real:{
"webhooks": ["https://yoursite.com/kushki/notify"]
}https://api.kushkipagos.com/¿Tienes una sugerencia sobre esta documentación? Escríbenos.