Acepta pagos con Yape

Acepta pagos aprobados en la app de Yape, por redirección o notificación push

Acepta pagos aprobados en la app de Yape, por redirección o notificación push

Yape es uno de los procesadores de APM (métodos alternativos de pago) en Perú: en lugar de redirigir al pagador a su banca electrónica, el pago se aprueba directamente en la app de Yape, por redirección directa a la app (DEEPLINK, cuando el pagador compra desde mobile) o mediante una notificación push al número Yape del pagador (PUSH, cuando compra desde web o desktop).

Qué procesadores tiene tu comercio lo responde la consulta de configuración (GET /transfer/v1/config) — el modelo completo está en ¿Cómo funcionan los pagos con APM?. Las integraciones existentes de transferencia bancaria no cambian: siguen su guía de transferencias bancarias.

Así es la experiencia de pago de tu cliente

La experiencia cambia según el canal desde el que compra tu cliente.

El pagador compra desde su celular, toca Pagar con Yape y se abre directamente la app de Yape, donde aprueba el pago.

Yape deep

Desde web o desktop (PUSH)

El pagador ingresa su número de celular en tu checkout y recibe una notificación push en la app de Yape, donde aprueba la compra desde Aprobar compras.

yape push

Detalles de operación

ParámetroDetalle
MonedaPEN
Tipo de integración100% API — el token se solicita desde tu backend. Kajita y Kushki.js aún no soportan este flujo.
Campo adicional requeridoEl objeto processor (name + flowType) en el cuerpo del token
Flujos disponiblesDEEPLINK (mobile) · PUSH (web / desktop)
Campo extra del flujo PUSHphoneNumber — número celular del pagador asociado a su cuenta Yape
Resultado del initdeepLink para redirigir al pagador (DEEPLINK) · confirmación del envío con ticketNumber y consentId (PUSH)
Consulta de listado de bancosNo requerida para este flujo

1. Consulta tus procesadores

Este paso es opcional si Yape es tu único procesador, pero recomendado siempre: será la regla a medida que se habiliten más procesadores y flujos. Antes de tokenizar, llama a Consulta la configuración de Transfer In (GET /transfer/v1/config) con tu credencial pública. La entrada de Yape llega con supportedFlows: copia su name y el type del flujo elegido en el objeto processor del token.

{
"processors": [
{
"name": "Yape Processor",
"currency": "PEN",
"supportedFlows": [
{ "type": "DEEPLINK", "name": "Deeplink", "description": "Mobile: redirección directa a la app de Yape" },
{ "type": "PUSH", "name": "Push", "description": "Web / Desktop: notificación push al número Yape del pagador" }
]
}
]
}

2. Elige el flujo según el canal del pagador

flowTypeCanalCómo funcionaCampo adicional
DEEPLINKMobileEl pagador es redirigido directamente a la app de Yape, instalada en su celular, para aprobar el pago.—
PUSHWeb / DesktopEl pagador ingresa su número de celular en tu checkout y Yape le envía una notificación push a su app, donde aprueba la compra desde la opción Aprobar compras.phoneNumber requerido.

3. Crea el token

Realiza la petición del token usando el mismo endpoint que el flujo tradicional (POST /transfer/v1/tokens, con tu credencial pública). Incluye el objeto processor con las propiedades name y flowType, copiadas exactamente de la respuesta de la consulta de procesadores.

Campos requeridos

CampoTipoDescripción
amount.subtotalIva0numberMonto de la transacción sin impuestos
amount.subtotalIvanumberMonto gravado de la transacción
amount.ivanumberValor del IVA (0 si no aplica)
currencystringMoneda. Debe ser "PEN"
processor.namestringDebe ser "Yape Processor", exactamente como lo devuelve la consulta de procesadores — sin alias cortos
processor.flowTypestring"DEEPLINK" o "PUSH". No tiene valor por defecto: elige según el canal del pagador
phoneNumberstringSolo con flowType: "PUSH". Número celular del pagador asociado a su cuenta Yape; es el destino de la notificación push

El objeto processor no admite propiedades adicionales: cualquier otra propiedad produce 400.

Campos opcionales

callbackUrl · documentType · documentNumber · paymentDescription · email

Ejemplo con flujo PUSH:

{
"amount": {
"subtotalIva": 0,
"subtotalIva0": 54.56,
"iva": 10
},
"currency": "PEN",
"processor": {
"name": "Yape Processor",
"flowType": "PUSH"
},
"phoneNumber": "938530546"
}

Ejemplo con flujo DEEPLINK:

{
"amount": {
"subtotalIva": 0,
"subtotalIva0": 54.56,
"iva": 10
},
"currency": "PEN",
"processor": {
"name": "Yape Processor",
"flowType": "DEEPLINK"
}
}
curl -X POST "https://api-uat.kushkipagos.com/transfer/v1/tokens" \
-H "Public-Merchant-Id: <tu credencial pública>" \
-H "Content-Type: application/json" \
-d '{
"amount": { "subtotalIva": 0, "subtotalIva0": 54.56, "iva": 10 },
"currency": "PEN",
"processor": { "name": "Yape Processor", "flowType": "PUSH" },
"phoneNumber": "938530546"
}'

4. Inicia la transacción

Con el token obtenido, llama a Init Transaction (POST /transfer/v1/init) con tu credencial privada (Private-Merchant-Id), repitiendo el mismo monto del token. El body es el mismo del flujo tradicional; lo que cambia es la respuesta, según el flowType con el que generaste el token.

{
"token": "{{token}}",
"amount": { "subtotalIva": 0, "subtotalIva0": 54.56, "iva": 10 },
"fullResponse": "v2"
}

El token queda ligado al procesador con el que fue generado: si no coincide con el procesador configurado para tu comercio, la respuesta es 422 E046. En ese caso, revisa la consulta de procesadores y regenera el token con el procesador correcto.

Respuesta 201 — flujo PUSH

Yape envía la notificación push al phoneNumber que enviaste en el token. La respuesta confirma el envío; el pagador aprueba el pago desde la app de Yape.

{
"ticketNumber": "9748463867065188",
"consentId": "4d09b123-84c4-4363-955e-70ac1e58d8e6",
"transactionReference": "d0d07647-3866-4f95-8cbd-87d46ce08658",
"details": {
"status": "initializedTransaction",
"amount": { "currency": "PEN", "iva": 10, "subtotalIva": 0, "subtotalIva0": 54.56 },
"created": 1789747994247,
"description": "-",
"merchantId": "20000000100000000001",
"merchantName": "COMERCIO DEMO PERU"
}
}

La respuesta incluye además deepLink. Redirige al pagador a esa URL tal como la recibes, sin modificar sus parámetros: en el navegador móvil abre la app de Yape, donde aprueba el pago.

{
"ticketNumber": "9748582884405310",
"consentId": "ec9cd71c-63e7-4c58-9860-7589c587adc0",
"transactionReference": "4ff5221b-8ad8-4728-b35f-cc9d45315f54",
"deepLink": "https://www.yape.com.pe/app/checkout/oneshotpayment?origin=deeplink-externo&consentId=ec9cd71c-63e7-4c58-9860-7589c587adc0&partnerCode=PEX022",
"details": {
"status": "initializedTransaction",
"amount": { "currency": "PEN", "iva": 10, "subtotalIva": 0, "subtotalIva0": 54.56 },
"created": 1789748578782,
"description": "-",
"merchantId": "20000000100000000001",
"merchantName": "COMERCIO DEMO PERU"
}
}
CampoFlujoDescripción
ticketNumberPUSH, DEEPLINKNúmero de ticket de la transacción en Kushki.
consentIdPUSH, DEEPLINKIdentificador (UUID) del consentimiento de pago en Yape. Permite correlacionar la aprobación del pagador.
deepLinkDEEPLINKEnlace al checkout de Yape. Úsalo tal como se recibe.
transactionReferenceAmbosIdentificador de la transacción en Kushki. Úsalo para correlacionar el webhook con tu orden.
detailsAmbosSolo con fullResponse: "v2": estado, monto, fecha de creación y datos del comercio.
FlujoQué haces con la respuesta
PUSHIndica al pagador que apruebe la notificación que le llegó a su app de Yape.
DEEPLINKRedirige al pagador al deepLink.

5. Espera el resultado del pago

El pagador aprueba (o no) el pago en la app de Yape. El estado final — aprobado, rechazado o expirado — te llega por el webhook configurado para tu comercio; también puedes consultarlo con Get Status (GET /transfer/v1/status/{token}). Usa transactionReference para correlacionar la notificación con tu orden.

6. Errores

Al operar con el flujo multiprocesador puedes recibir errores de la API en la consulta de procesadores, la tokenización o al iniciar la transacción. Los campos de la respuesta de error son code y message.

EndpointHTTPCódigo¿Cuándo ocurre?¿Qué debe hacer el comercio?
GET /transfer/v1/config500E002Error al consultar la configuración del comercio. Mensaje: «Ha ocurrido un error inesperado.»Reintenta; si persiste, contacta a soporte.
POST /transfer/v1/tokens400—El body no cumple el contrato: campo requerido ausente (incluido phoneNumber en Yape PUSH), valor fuera del enumerado (processor.name, processor.flowType) o propiedad no permitida dentro de processor.Corrige el body según la consulta de procesadores y el contrato del flujo elegido.
POST /transfer/v1/init422E046El token no es compatible con el procesador resuelto (p. ej., token con processor y comercio con otro procesador, o token tradicional y comercio con Yape).Revisa la consulta de procesadores y regenera el token con el procesador correcto.
Todos401—Credencial pública o privada inválida o ausente.Verifica tus credenciales.

Los códigos de rechazo específicos de Yape aún no están documentados.

Los errores de las transferencias bancarias están en Códigos de error para transferencias.


Artículos relacionados

Recibe transferencias bancarias

Integración de la transferencia bancaria tradicional