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 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
          • Refund
          • 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
    • Local Services
      • Payment Local
        • Sync
          • Charge
          • Authorization (Pre-auth)
          • Capture
          • Re-authorization
          • Post-tip
          • Void
          • Refund
          • 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)
  • 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
HomePerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
HomePerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
  1. Online Payments

Pagos One-Click y Programados

One-Click & Scheduled Payments te permite registrar la tarjeta de un cliente como una suscripción y cobrarla después, ya sea automáticamente según un calendario o manualmente on demand. Los datos de la tarjeta se tokenizan una sola vez y nunca se almacenan en tus servidores.
¡Ten en cuenta!
La generación del token requiere tu Private Key (Private-Merchant-Id). Nunca la expongas en código de cliente o de frontend: llama siempre al endpoint de token desde tu backend.

Dos modos de cobro#

ModoCómo funciona
ScheduledKushki cobra la tarjeta automáticamente según la periodicity que configures (daily, monthly, yearly, etc.)
One-click (on-demand)Disparas cada cargo manualmente con POST /subscriptions/v1/card/{subscriptionId}. Usa periodicity: "custom" al crear la suscripción.

Flujo#

1
Solicita un token de suscripción
Llama a POST /subscriptions/v1/card/tokens desde tu backend con los datos de la tarjeta del cliente. Devuelve un token de un solo uso.
{
  "card": {
    "name": "Luis García",
    "number": "4242424242424242",
    "expiryMonth": "08",
    "expiryYear": "28",
    "cvv": "123"
  },
  "currency": "PEN"
}
⚠️ Expiración del token: Usa el token de inmediato para crear la suscripción. No lo almacenes.
2
Crea la suscripción
Llama a POST /subscriptions/v1/card con el token, los detalles del plan y el monto recurrente. La respuesta devuelve un subscriptionId que debes guardar de tu lado.
{
  "token": "gV3ox6100000sAxClU033646vnnJsT83",
  "planName": "Premium",
  "periodicity": "monthly",
  "startDate": "2026-06-01",
  "contactDetails": {
    "documentType": "DNI",
    "documentNumber": "12345678",
    "firstName": "Luis",
    "lastName": "García",
    "email": "user@example.com",
    "phoneNumber": "+51912345678"
  },
  "amount": {
    "subtotalIva": 0,
    "subtotalIva0": 99.90,
    "ice": 0,
    "iva": 0,
    "currency": "PEN"
  }
}
3
Cobra la suscripción
Programado: Kushki cobra automáticamente; no necesitas hacer nada.
One-click: Llama a POST /subscriptions/v1/card/{subscriptionId} cuando quieras cobrarle al cliente.
{
  "amount": {
    "subtotalIva": 0,
    "subtotalIva0": 99.90,
    "ice": 0,
    "iva": 0,
    "currency": "PEN"
  },
  "contactDetails": {
    "documentType": "DNI",
    "documentNumber": "12345678",
    "firstName": "Luis",
    "lastName": "García",
    "email": "user@example.com",
    "phoneNumber": "+51912345678"
  }
}
Un cargo exitoso devuelve un ticketNumber y un transactionReference. Usa "fullResponse": "v2" para obtener todos los detalles de la aprobación.
💡 OTP en sandbox: Si se dispara la validación OTP en sandbox, usa 555 tanto para PEN como para USD.

Periodicidades#

ValorFrecuencia
dailyTodos los días
weeklyCada semana
biweeklyCada dos semanas
monthlyUna vez al mes
threefortnightsCada tres quincenas
bimonthlyCada dos meses
quarterlyCada tres meses
fourmonthsCada cuatro meses
halfYearlyCada seis meses
yearlyUna vez al año
customOn-demand: disparas cada cargo manualmente

Tipos de documento#

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

Cargos diferidos en suscripciones#

Perú admite diferido en los cargos de suscripción. Incluye el objeto deferred en la solicitud de cargo:
Modelo Agregador
Modelo Adquirencia
Envía months como campo de primer nivel (no dentro de deferred):
{
  "amount": {
    "subtotalIva": 0,
    "subtotalIva0": 300.00,
    "iva": 0,
    "ice": 0,
    "currency": "PEN"
  },
  "months": 3,
  "contactDetails": {
    "documentType": "DNI",
    "documentNumber": "12345678",
    "firstName": "Luis",
    "lastName": "García",
    "email": "user@example.com",
    "phoneNumber": "+51912345678"
  }
}

Gestión de suscripciones#

OperaciónEndpointDescripción
Consultar infoGET /subscriptions/v1/card/search/{subscriptionId}Obtén los detalles de la suscripción, la información de la tarjeta y la configuración del plan
Actualizar tarjetaPUT /subscriptions/v1/card/{subscriptionId}/cardReemplaza la tarjeta registrada por un nuevo token
Actualizar planPATCH /subscriptions/v1/card/{subscriptionId}Modifica el monto, la periodicidad o el nombre del plan
Agregar cargo temporalPUT /subscriptions/v1/card/{subscriptionId}Aplica un cargo o descuento extra por una sola vez en el siguiente ciclo de facturación
CancelarDELETE /subscriptions/v1/card/{subscriptionId}Cancela la suscripción de forma permanente

Flujo de preautorización#

Para suscripciones que requieren reservar fondos antes de la captura:
1
Autoriza
POST /subscriptions/v1/card/{subscriptionId}/authorize: reserva los fondos sin cobrar. Devuelve un ticketNumber.
2
Captura
POST /subscriptions/v1/card/{subscriptionId}/capture: captura el monto reservado. Envía el ticketNumber de la autorización.

Ejemplo de respuesta (completa)#

{
  "details": {
    "amount": {
      "subtotalIva": 0,
      "subtotalIva0": 99.90,
      "ice": 0,
      "iva": 0,
      "currency": "PEN"
    },
    "approvalCode": "000000",
    "approvedTransactionAmount": 99.90,
    "binInfo": {
      "bindCard": "445652",
      "cardCountry": "Peru",
      "lastFourDigits": "9860",
      "type": "credit"
    },
    "merchantName": "Mi Comercio Perú",
    "paymentBrand": "Visa",
    "responseCode": "000",
    "responseText": "Transacción aprobada",
    "transactionStatus": "APPROVAL",
    "transactionType": "SALE",
    "maskedCreditCard": "445652XXXXXX9860"
  },
  "ticketNumber": "028590538321035813"
}

Network Tokens (BETA)#

Perú admite tokenizar las tarjetas de suscripción usando tarjetas con network token (tokens provisionados por Visa o Mastercard a través de wallets digitales como Apple Pay).
Cuando solicites un token de suscripción (POST /subscriptions/v1/card/tokens), envía isNetworkToken: true e incluye el objeto networkToken:
CampoDescripción
deviceTypeTipo de dispositivo desde el que se origina la transacción tokenizada
requestorIdID único que la red de tarjetas asigna al solicitante del token
sourceOrigen del token
walletIdIdentificador de la wallet digital: "01" para Apple Pay, "04" para otras wallets
authenticationLevelNivel de autenticación aplicado durante el provisionamiento del token
mvvMerchant Verification Value de 10 dígitos (solo transacciones Visa)
⚠️ BETA: Esta funcionalidad está disponible en Perú. Contacta a tu account manager de Kushki antes de activarla.

Autenticación#


Uso de la API#

🟢 Producción
🧪 Sandbox (UAT)
https://api.kushkipagos.com/

Endpoints disponibles#

Solicitar un token de suscripción
Tokeniza una tarjeta para uso recurrente. Devuelve un token de un solo uso para crear la suscripción.
Crear una suscripción
Registra la tarjeta y configura el plan: periodicidad, monto, fecha de inicio y datos de contacto.
Cobrar una suscripción
Dispara un cargo on-demand sobre una suscripción. También se usa para cargos diferidos.
Consultar una suscripción
Obtén la configuración completa y los detalles de la tarjeta de una suscripción existente.
Actualizar la tarjeta
Reemplaza la tarjeta registrada por un nuevo token, por ejemplo tras el vencimiento de la tarjeta o un cargo fallido.
Actualizar una suscripción
Modifica el monto, la periodicidad o el nombre del plan de una suscripción existente.
Agregar un cargo temporal
Aplica un cargo o descuento extra por una sola vez en el siguiente ciclo de facturación, sin modificar el plan base.
Cancelar una suscripción
Cancela una suscripción de forma permanente. El cliente no volverá a ser cobrado.
Autorizar (preautorización)
Reserva fondos en la tarjeta de la suscripción sin capturarlos de inmediato.
Capturar
Captura un monto previamente autorizado en una suscripción.

¿Tienes una sugerencia sobre esta documentación? Contáctanos.
Modified at 2026-09-11 14:39:55
Previous
Información de BIN V2
Next
Solicitar un token de cargo recurrente
Built with