1. Métodos alternativos de pago (APM)
Kushki Docs
Español
  • Español
  • English
  • Inicio
  • Inicio rápido
    • Preguntas frecuentes
    • Paso a producción
    • Política de cambios importantes del API
    • Códigos de error
    • Datos de prueba
    • Últimas novedades
  • Glosario de pagos
    • Glosario de pagos
  • Pagos únicos con tarjeta (Online)
    • Network Tokens
    • Marcas de tarjeta soportadas
    • Funcionalidades por modelo de negocio
    • Pagos en un paso
      • ¿Cómo funcionan los pagos con tarjeta?
      • Acepta pagos únicos con OTP
      • Códigos de error autenticación OTP
      • Códigos de error pagos únicos con tarjeta
      • Cargo directo (sin token)
      • Acepta un pago con tarjeta
    • Pagos en dos pasos
      • ¿Cómo funcionan los pagos únicos con autorización y captura?
      • Recibe pagos con autorización y captura
    • Devoluciones
      • Devoluciones, anulaciones y reembolsos
    • Autenticación 3DS
      • Integración 100% API de 3DS
      • Integración 3DS con librería kushki.js
      • Códigos de error autenticación 3DS
      • Integración 3DS API + librería kushki.js
      • Introducción a 3DS
    • Pagos con Apple Pay
      • Configuración de Apple Pay
      • Pruebas en Sandbox Apple Pay
  • Pagos recurrentes con tarjeta (Online)
    • Autentica tus suscripciones con 3DS
    • Apple Pay en Suscripciones
    • Acepta pagos one click con 3DS
    • Funcionalidades por modelo de negocio
    • Códigos de error en cargos recurrentes
    • Suscripciones externas a Kushki
    • Pagos calendarizados
      • Crea un cargo recurrente
      • Maneja tus cargos calendarizados
      • ¿Cómo funcionan los cargos recurrentes con tarjeta?
    • Pagos OneClick
      • ¿Cómo funcionan los pagos OneClick con autorización y captura?
      • Genera pagos one click
      • Recibe pagos OneClick con autorización y captura
  • Pagos con tarjeta presente
    • Datos de prueba
    • Acepta pagos con tarjeta presente
    • Webhooks para tarjeta presente
    • Raw card-present API
      • Introducción a Raw card-present API
      • Script de ejemplo para cifrar información
      • Intercambio de claves criptográficas
      • Preguntas frecuentes
      • Códigos de error para transacciones con tarjeta presente
      • Acepta pagos
    • Transacciones
      • Anula un pago
      • Transacciones
    • Kushki One
      • Autenticación y Cifrado de Requests
      • Realiza cobros con Kushki One
      • Servicios asíncronos y webhooks
      • Formato de montos en Kushki ONE
      • Catálogo Unificado de Errores — Kushki ONE Connect
      • Primeros Pasos
      • Impresión en terminal SmartPOS
    • Kushki One App de Pagos
      • Descripción general
      • Devoluciones y PreAuth & Capture
      • Pago Dividido en la terminal
      • Configuración del terminal
      • Consulta tus transacciones
      • Procesa un cobro
  • Pagos con transferencias
    • Consulta el estado de una transacción
    • Experiencias de compra y detalles de operación para pagos con transferencia bancaria
    • Recibe transferencias bancarias
  • Pagos en efectivo
    • Puntos de recaudo
    • Códigos de error para transacciones declinadas en efectivo
    • Acepta un pago en efectivo
  • Métodos alternativos de pago (APM)
    • ¿Cómo funcionan los pagos con APM?
    • Acepta pagos con Yape
  • Dispersión de dinero
    • Transferencia bancaria
      • ¿Cómo funciona la dispersión por transferencia bancaria?
      • Códigos de error para dispersiones por transferencia
      • Dispersa a cuentas bancarias
    • Tarjeta
      • ¿Cómo funciona el envío de fondos a tarjetas?
      • Envía dinero a una tarjeta
      • Códigos de error
  • Plugins
    • Shopify
      • Operación del Plugin
      • Shopify
    • Vtex
      • Guía de integración VTEX
  • Links de pago
    • Smartlinks
  • Formularios y botones de pago
    • Kajita
      • Kajitas de pago
      • ¿Cómo funciona?
    • Botón de pago
      • ¿Cómo funciona el botón de pago?
      • Genera un botón de pago
  • Administración de sucursales
    • ¿Cómo realizar el onboarding de subcomercios vía API?
  • Notificaciones
    • Buenas prácticas
    • Consulta tus webhooks
    • Webhooks para pagos únicos
      • Webhook para pagos únicos con tarjeta
      • Webhook para pagos únicos con transferencia bancaria
      • Webhook para pagos únicos con efectivo
    • Webhooks para pagos recurrentes
      • Webhook para pagos recurrentes con tarjeta
    • Webhooks para dispersiones
      • Webhook para dispersión de dinero con Transferencia
      • Webhook para dispersión con tarjeta
    • Webhooks para smartlinks
      • Webhooks con Smartlinks
    • Webhooks para botón de pagos
      • Webhooks con Botón de pago
    • Webhooks para devoluciones
      • Webhook para devoluciones
      • Webhook para contracargos
HomeMexico 🇲🇽Ecuador 🇪🇨Chile 🇨🇱Colombia 🇨🇴Peru 🇵🇪
HomeMexico 🇲🇽Ecuador 🇪🇨Chile 🇨🇱Colombia 🇨🇴Peru 🇵🇪
Status
Soporte / Support
Español
  • Español
  • English
  1. Métodos alternativos de pago (APM)

Acepta pagos con Yape

🚧 Early Release — Beta
Este producto está en acceso temprano. Los parámetros, estructuras de respuesta y comportamientos pueden cambiar sin previo aviso. No uses esta versión en producción sin coordinarlo previamente con el equipo de integraciones de Kushki.
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.
Importante
Disponible exclusivamente para Perú, en soles (PEN), con el procesador Yape configurado en tu MID. Para habilitarlo, contacta a tu ejecutivo de cuenta.

Así es la experiencia de pago de tu cliente#

La experiencia cambia según el canal desde el que compra tu cliente.
Desde mobile (DEEPLINK)
Desde web o desktop (PUSH)
El pagador compra desde su celular, toca Pagar con Yape y se abre directamente la app de Yape, donde aprueba el pago.
Experiencia de pago con Yape desde mobile (DEEPLINK): el cliente elige Yape, se abre la app para aprobar y el pago queda aprobado

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"
  }
}

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"
  }
}

Respuesta 201 — flujo DEEPLINK#

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.
Rechazos de Yape. Cuando Yape declina la transacción, retorna el código 006 con el mensaje «Transacción declinada». Es el único código de rechazo y se usa para todos los casos, por lo que no permite distinguir el motivo.

Artículos relacionados#

Recibe transferencias bancarias
Integración de la transferencia bancaria tradicional
Modificado en 2026-10-21 19:12:04
Anterior
¿Cómo funcionan los pagos con APM?
Siguiente
Dispersión de dinero
Built with