1. Online Payments
Español
  • English
  • Español
  • Docs de API 🇵🇪
  • Online Payments
    • Errores ISO
    • Errores del API de Kushki
    • Notas de versión
    • Card Payments
      • Solicitar un token de tarjeta
      • Hacer un cargo o cargo diferido
      • Preautorización (sin token)
      • Crear pago (sin token)
      • Anular una transacción
      • Reembolsar una transacción
      • Verificar cuenta
      • Solicitar opciones de diferido
      • Autorizar pagos
      • Reautorizar pagos
      • Capturar un pago autorizado
      • Validar OTP
      • Información de BIN
      • Información de BIN V2
    • One-Click & 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
      • Autorizar pagos
      • Capturar un pago autorizado
      • Consultar información del cargo recurrente
    • Card Out
      • Obtener token de Card Payout
      • Obtener token de suscripción
      • Push funds
      • Push Funds en suscripciones
      • Consultar estado de la transacción
      • Eliminar suscripción
    • Transfer In
      • Consultar la configuración de Transfer In
      • Consultar lista de bancos
      • Solicitar un token de Transfer In
      • Iniciar transacción
      • Consultar estado
    • Transfer Out
      • Consultar lista de bancos
      • Consultar lista de bancos V2
      • Solicitar un token de Transfer Out
      • Iniciar transacción
      • Consultar estado
      • Saldo para payouts
    • Cash In
      • Solicitar un token de Cash In
      • Iniciar transacción
      • Estado de la transacción
    • Smartlinks V2
      • Crear un Smartlink
      • Actualizar un Smartlink
      • Consultar un Smartlink
      • Eliminar un Smartlink
    • Analytics
      • Consultar listado de transacciones v2
    • Chargebacks
      • Consultar chargebacks
      • Solicitar exportación de chargebacks
    • Gateway Status
      • Consultar estado del gateway
    • Payment Credentials
      • Crear una credencial
      • Buscar credenciales
      • Búsqueda avanzada
      • Activar o desactivar
      • Eliminar credencial
      • Actualizar credencial
      • Regenerar una credencial
    • Payment Button
      • Crear un Payment Button
    • Platform Status
      • Consultar estado de la plataforma
    • Subscription Transactions
      • Consultar transacciones de suscripción
    • Settlement
      • Consultar liquidación
    • Fraud Report
      • Consultar alertas de fraude
  • Card Present Payments (API Raw)
    • Notas de versión
    • Proceso de intercambio de llaves
    • Datos de prueba
    • Catálogo de errores de Kushki para transacciones POS
    • El objeto Amount
    • One-time Payments
      • Pago único
    • Two-step Payments
      • Autorización y captura
    • Voids & Refunds
      • Reembolsar una transacción
      • Anular y reversar
    • Card information
      • Consultar información de BIN
      • Información de BIN V2
      • Solicitar opciones de diferido
    • Query Transactions
      • Búsqueda de transacciones
    • Webhooks
      • Introducción
      • Buenas prácticas
      • Reembolsos
      • Pagos con tarjeta
      • Revisa tus webhooks
    • Chargebacks
      • Consultar chargebacks
      • Solicitar exportación de chargebacks
    • Fraud Report
      • Consultar alertas de fraude
  • Kushki One
    • Error Catalog
    • Release notes
    • Transaction Examples
    • Webhooks
    • Cloud Services
      • Payment Cloud
        • Sync
          • Charge
          • Authorization (Pre-auth)
          • Capture
          • Re-authorization
          • Post-tip
          • Abort
          • Void
        • Async
          • Charge (Async)
          • Authorization — Pre-auth (Async)
          • Capture (Async)
          • Re-authorization (Async)
          • Post-tip (Async)
          • Void (Async)
        • Search
          • Transaction Search
      • Print Cloud
        • Create Print Job
        • Get Print Job Status
      • Diagnostics
        • Connection test
        • Terminal info
    • Local Services
      • Payment Local
        • Sync
          • Charge
          • Authorization (Pre-auth)
          • Capture
          • Re-authorization
          • Post-tip
          • Void
          • Abort
        • Async
          • Charge (Async)
          • Authorization — Pre-auth (Async)
          • Capture (Async)
          • Re-authorization (Async)
          • Post-tip (Async)
          • Void (Async)
          • Abort (Async)
        • Search
          • Transaction Search — Online
          • Transaction Search — Local
      • Print Local
        • Create Print Job
        • Get Print Job Status
        • Print Job Webhook (inbound — implemented by your POS)
      • Diagnostics
      • Diagnostics
        • Connection test
        • Terminal info
  • Appian - Submerchant Register
    • Release Notes
    • Submerchant Validation in Batch
    • Query submerchant status by requestId/submerchantId
    • Submerchant Document Upload
    • Get submerchantIds
    • Get credentials for submerchants
  • Schemas
    • Shared
      • ErrorResponse
      • BadRequestResponse
      • InvalidBinResponse
      • payment_method
      • payment_submethod
      • messageFields
      • Channel
    • Amount & Taxes
      • Amount-cash-in
      • GetConfigurationRequest
    • Identity & Contact
      • Shipping Address
    • Card & Payments
      • ChargesVoidCardResponse
      • Promotions
      • Submerchant
    • Subscriptions
      • SubscriptionUpdate
      • SubscriptionAdjustmentRequest
      • SubscriptionTransactionsResponse
    • Webhooks
    • Analytics
      • AnalyticsTransactionItem
      • AnalyticsListResponse
    • Settlement
      • SettlementDateRangeRequest
      • SettlementTicketRequest
      • SettlementResponse
    • Chargebacks
      • ChargebackListResponse
      • ChargebackSearchRequest
    • Cash
      • CashChargeInitRequest
      • CashStatusResponse
    • Transfer
      • TransferTokenRequest
      • TransferInitRequest
      • TransferStatusResponse
    • Payouts
      • PayoutsWebhooksItem
    • Smart Link
      • SmartLinkAmount
    • Terminal
      • TerminalContactDetails
      • TerminalCardDetails
      • TerminalPosDetails
      • TransactionSearchRequest
      • TerminalCardData
    • RequestBodies
      • one-and-two-step-payment
    • card-old
    • AmountWithTaxes-old
    • TransactionResponse
    • PrintJobRequest
    • one-and-two-step-payment
    • Card Present (CP)
    • one-and-two-step-payment1
    • Card
    • amount
    • FraudAlertRequest
    • SettlementDateRangeRequest
    • SubscriptionTransactionsResponse
    • Shipping Address
    • transactionType
    • ChargebackItem-old
    • SubscriptionTransaction
    • amount
    • AmountCore-old
    • CommandText-old
    • Language
    • extra_taxes
    • CommandText
    • RawResponse
    • Card Not Present (CNP)
    • Deferred
    • networkToken
    • FraudAlertResponse
    • ErrorResponse400-old
    • Deferred-old
    • SettlementResponse
    • extra_taxes-old
    • ExtraTaxes-old
    • CommandColumns-old
    • card
    • CommandColumns
    • CardData
    • FraudAlertRecord
    • currency
    • currency
    • ErrorResponse
    • webhooksItem
    • orderDetails-old
    • Country
    • ErrorResponse401-old
    • SettlementRecord
    • pos_details-old
    • ColumnItem-old
    • LinkFailure
    • ColumnItem
    • Amount
    • card_details
    • ValidationError
    • documentType
    • ErrorResponse403-old
    • card_details-old
    • TransactionResponse-old
    • CommandDivider-old
    • enc_tlv
    • CommandDivider
    • TransactionEvent
    • extraTaxes
    • extraTaxes-old
    • payment_method
    • ErrorResponse500-old
    • threeDomainSecure
    • enc_tlv
    • RawResponse-old
    • CommandFeed-old
    • CommandFeed
    • TransactionStatus
    • deferred
    • binInfo
    • contact_details-old
    • CardData-old
    • CommandSpace-old
    • CommandSpace
    • ReadingType
    • pos_details
    • Billing-Address-old
    • deferred-old
    • sub_merchant
    • AmountWithTip-old
    • CommandCut-old
    • metadata
    • sub_merchant
    • CommandCut
    • FailureReason
    • contact_details
    • headers
    • metadata
    • LinkFailure-old
    • CommandImage-old
    • CommandImage
    • EventTerminal
    • Amount-old
    • ContactDetails-old
    • SubscriptionUpdate
    • TransactionSearchRequest-old
    • CommandQR-old
    • orderDetails
    • CommandQR
    • EventOperation
    • Subscription
    • payment_submethod
    • citMit
    • SubscriptionAdjustmentRequest
    • CommandBarcode-old
    • Shipping Address
    • CommandBarcode
    • EventAmount
    • messageFields
    • PrinterError-old
    • Billing Address
    • EventExtraTaxes
    • PrintJobAccepted
    • webhooksChargeback
    • Language
    • PrintJobStatus-old
    • PrinterError
    • EventMetadata
    • networkToken-old
    • PrintWebhookPayload-old
    • AmountWithTaxes
    • PrintJobStatus
    • PrintJobStatusRequest
    • threeDomainSecure
    • webhooks
    • AmountCore
    • webhooks
    • product-old
    • headers
    • PrintWebhookPayload
    • ExtraTaxes
    • Metadata
    • webhooksChargeback
    • UnexpectedErrorResponse-old
    • AmountWithTip
    • citMit
    • TransactionSearchBody
    • TransactionSearchOnlineBody
    • network
    • Card-old-old
    • binInfo
    • AmountWithOptionalTip
    • TransactionSearchLocalBody
    • TransactionEvent_2
    • messageFields
    • Promotions-old
    • UnexpectedErrorResponse
    • FailureReason_2
    • transactionType
    • EventTerminal_2
    • EventOperation_2
    • InvalidBinResponse-old
    • EventAmount_2
    • EventExtraTaxes_2
    • EventMetadata_2
    • currency
    • Amount-CL-old
    • SettlementTicketRequest
    • metadata
    • payment_method
    • currency
    • currency
    • Submerchant
    • Shipping Address
    • GetConfigurationRequest-old
    • BadRequestResponse
    • ContactDetails
    • product
    • TransactionEvent_21
    • TransactionStatus2
    • ReadingType3
    • FailureReason_24
    • EventTerminal_25
    • EventOperation_26
    • EventAmount_27
    • EventMetadata_28
    • EventExtraTaxes_29
    • PrintWebhookPayload10
    • TransactionEvent11
    • FailureReason12
    • EventTerminal13
    • EventOperation14
    • EventAmount15
    • EventMetadata16
    • EventExtraTaxes17
    • TransactionSearchOnlineResponse
    • TransactionSearchLocalResponse
    • TransactionSearchOnlineResponse
    • TransactionSearchLocalResponse
    • TransactionSearchOnlineResponse
    • TransactionSearchLocalResponse
    • TransactionSearchOnlineResponse
    • TransactionSearchLocalResponse
HomePerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
HomePerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
Status
Soporte / Support
Español
  • English
  • Español
  1. Online Payments

Transfer In

Transfer In cobra directamente desde la cuenta bancaria de un cliente, sin tarjeta. En Perú funciona con procesadores, el flujo tradicional por el portal del banco y Yape, a través de los mismos endpoints bajo /transfer/v1. Toda integración empieza preguntando qué procesadores tiene el comercio.

Endpoints#

EndpointMétodo y rutaCredencialPropósitoLo usa
Consultar la configuración de Transfer InGET /transfer/v1/configPúblicaEmpieza aquí. Lista los procesadores habilitados para el comercio y, cuando aplica, los supportedFlows de cada unoTodos
Consultar lista de bancosGET /transfer/v1/bankListPúblicaBancos soportados (code, name)Tradicional
Solicitar un token de Transfer InPOST /transfer/v1/tokensPúblicaCrea un token de un solo usoTodos
Iniciar transacciónPOST /transfer/v1/initPrivadaInicia la transacción con el tokenTodos
Consultar estadoGET /transfer/v1/status/{token}PrivadaEstado final de la transacciónTodos

Flujo de integración#

1
Consulta los procesadores
Llama a Consultar la configuración de Transfer In con la credencial Public-Merchant-Id. processors[] lista los procesadores habilitados para el comercio. Es el punto de partida de toda integración directa por API.
2
Elige el procesador
Una entrada sin supportedFlows es el procesador tradicional. Una entrada con supportedFlows es un procesador con flujos de pago (Yape), y además eliges el flujo. Si el comercio tiene varios, usa los supportedFlows de cada entrada para decidir cómo armar cada token.
3
Solicita el token
El cuerpo depende del procesador; consulta Procesadores de un vistazo más abajo. Los tokens son de un solo uso.
4
Inicia la transacción
Envía el token y repite el mismo monto. La respuesta depende del procesador: redirectUrl (tradicional), o ticketNumber y consentId (Yape), además de deepLink con DEEPLINK.
5
Confirma el estado final
Por webhook o con Consultar estado.
Kajita y Kushki.js
Estas herramientas no soportan el objeto processor: con ellas no hay consulta de procesadores y la tokenización sigue el proceso tradicional. Yape requiere una integración directa por API, donde el token se solicita desde tu backend.

Procesadores de un vistazo#

Los procesadores con flujos de pago, como Yape, también se conocen como APM (métodos alternativos de pago).
TradicionalYape
Se identifica porEntrada de config sin supportedFlowsEntrada de config con supportedFlows
Solicitud del tokenamount, currency y callbackUrl requeridos; bankId, userType, documentType, documentNumber, email y paymentDescription opcionales. Sin objeto processor.amount, currency y processor: { name, flowType }, copiados tal cual de config; además phoneNumber en PUSH.
Lista de bancosOpcional: sin bankId, el cliente elige el banco en el portal del bancoNo se usa
Respuesta de initredirectUrldeepLink (DEEPLINK) o la confirmación del push (PUSH), ambas con ticketNumber y consentId
Experiencia del clienteCompleta el pago en el portal en línea de su bancoAprueba el pago en la app de Yape: redirección directa desde mobile (DEEPLINK), o notificación push desde web o desktop (PUSH)
MonedaPEN o USDPEN
Tipos de integraciónAPI directa, Kajita, Kushki.jsSolo API directa
DisponibilidadGeneralBeta, en comercios con el procesador habilitado
El token queda ligado al procesador con el que fue generado, y Iniciar transacción lo valida:
Token generadoProcesador del comercioResultado
Sin processorTradicionalContinúa; la respuesta incluye redirectUrl.
Con processor de YapeYapeContinúa; la respuesta incluye ticketNumber y consentId (y deepLink con DEEPLINK).
Con processorOtro procesador422 E046
Sin processorYape422 E046

Detalle por procesador#

Tradicional
Yape (Beta)
Campos de la solicitud del token
CampoRequeridoDescripción
bankIdNoCódigo del banco destino. Si se omite, el cliente selecciona el banco en el portal del banco.
amountSíDesglose del monto del pago (subtotalIva, subtotalIva0, iva).
currencySíPEN o USD.
callbackUrlSíURL a la que regresa el cliente después del pago, completado o abandonado.
documentTypeNoTipo de documento del cliente.
documentNumberNoNúmero de documento del cliente. Requerido si se envía documentType.
emailNoCorreo electrónico del cliente.
userTypeNo0 = persona natural, 1 = persona jurídica.
paymentDescriptionNoDescripción libre que el cliente ve en el portal del banco.
{
  "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"
}
La respuesta de init devuelve el redirectUrl al que debes enviar al cliente:
{
  "redirectUrl": "https://api.kushkipagos.com/transfer/v1/agent?token=...",
  "transactionReference": "28e6ac31-0af1-479a-9a6f-1a596bba6aea"
}

Monedas#

MonedaCódigo
Sol peruanoPEN
Dólar estadounidenseUSD

Tipos de documento#

ValorDescripción
DNIDocumento Nacional de Identidad 🇵🇪
CECarné de Extranjería 🇵🇪
PASPasaporte 🇵🇪
RUCRegistro Único de Contribuyentes 🇵🇪

Tipos de usuario#

ValorDescripción
0Persona natural
1Persona jurídica

Campos de la solicitud init#

CampoRequeridoDescripción
tokenSíToken devuelto por el endpoint de token.
amountSíDesglose del monto, incluida la currency. Debe coincidir con el monto usado al tokenizar.
expirationDateNoFecha y hora de expiración de la transacción. Solo Perú.
webhooksNoArreglo de URLs a notificar cuando cambie el estado de la transacción.
fullResponseNo"v2" devuelve el detalle completo de la transacción.
metadataNoPares clave-valor personalizados para tu propio seguimiento.
{
  "token": "V0OzRB100000xhxQB8035251pHLBQsq5",
  "amount": { "subtotalIva": 0, "subtotalIva0": 150.00, "iva": 0, "currency": "PEN" },
  "fullResponse": "v2"
}

Estados#

Confirma el resultado final con Consultar estado (GET /transfer/v1/status/{token}). El webhook y los estados son los mismos para todos los procesadores.
EstadoSignificado
approvedTransactionEl pago se completó correctamente.
declinedTransactionEl pago fue rechazado por el banco o por el procesador.
initializedTransactionEl pago sigue pendiente.
expiredTransactionEl token o la sesión expiraron sin pago.

Webhooks#

Incluye un arreglo webhooks en tu solicitud init para recibir notificaciones de estado en tiempo real:
{
  "webhooks": ["https://yoursite.com/kushki/notify"]
}

Errores#

ProcesadorEndpointHTTPCódigoCuándo ocurreQué hacer
TodosGET /transfer/v1/config500E002Error al consultar la configuración del comercio («Ha ocurrido un error inesperado.»).Reintenta; contacta a soporte si persiste.
YapePOST /transfer/v1/tokens400—El cuerpo no cumple el contrato: falta un campo requerido (incluido phoneNumber con PUSH), valor fuera del enumerado (processor.name, processor.flowType) o propiedad adicional dentro de processor.Corrige el cuerpo según config.
TodosPOST /transfer/v1/init422E046El token no es compatible con el procesador resuelto.Regenera el token para el procesador correcto.
TodosCualquiera401—Credencial ausente o inválida.Revisa Public-Merchant-Id o Private-Merchant-Id, según el endpoint.
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.

Autenticación y entornos#

Las credenciales se envían en un header; cada endpoint usa una de ellas (consulta la columna Credencial de arriba):
HeaderCredencialUso
Public-Merchant-IdPúblicaConfiguración, lista de bancos y tokenización.
Private-Merchant-IdPrivadaInit, estado y cancelación. Nunca la expongas en código de frontend.
🟢 Producción
🧪 Sandbox (UAT)
https://api.kushkipagos.com/
Modified at 2026-10-20 22:12:16
Previous
Eliminar suscripción
Next
Consultar la configuración de Transfer In
Built with