1. Perú 🇵🇪
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. Perú 🇵🇪

Pagos presenciales (API RAW)

La API Card Present te permite procesar pagos presenciales con tarjeta directamente desde tus terminales POS en Perú. Un único conjunto de endpoints cubre todo el ciclo de vida del pago: cargos únicos, autorización y captura en dos pasos, anulaciones, reembolsos y consultas de transacciones — en los canales de lectura chip (ICC), banda magnética (MCR) y contactless (NFC).
Beta
Los pagos presenciales están en fase Beta. Contacta a tu ejecutivo de cuenta para obtener acceso.

Operaciones disponibles#

Pagos únicos
Procesa cargos inmediatos — únicos, diferidos, con cashback o con propina — en una sola llamada a la API.
Pagos en dos pasos
Bloquea el monto (preautorización) y captura cuando estés listo. Admite reautorización y captura sin lectura de tarjeta.
Anulaciones y reembolsos
Anula una autorización (void), reversa una transacción (reverse) o reembolsa un pago ya liquidado — total o parcial, con o sin lectura de tarjeta.
Información de la tarjeta
Consulta los datos del BIN, verifica la disponibilidad de diferido y revisa las opciones de cuotas antes de iniciar un cargo.
Consultar transacciones
Busca y pagina las transacciones de tus terminales POS con filtros por fecha, BIN, dígitos de la tarjeta o referencia.

Cómo funciona#

Todas las operaciones presenciales comparten una estructura de request común, construida alrededor de tres objetos principales: la intención de la transacción, los datos de la tarjeta y los detalles de la terminal.
POST /pos/v1/transaction
Private-Merchant-Id: <your-private-key>
Content-Type: application/json
{
  "transaction_type": "charge",
  "transaction_mode": "Authorization",
  "country": "PER",
  "client_transaction_id": "<uuid-v4>",
  "amount": {
    "currency": "PEN",
    "subtotal_iva": 0,
    "subtotal_iva0": 500,
    "iva": 0
  },
  "card_details": {
    "reading_type": "ICC",
    "enc_tlv": "<encrypted-tlv>",
    "pin_ksn": "<ksn-value>"
  },
  "cvm_type": "pin",
  "pos_details": {
    "brand": "SUNMI",
    "model": "P2-EU",
    "version": "1.1.13"
  }
}

Conceptos clave#

Canales de lectura#

Envía card_details.reading_type para indicar cómo se presentó la tarjeta.
ValorCanalDatos de tarjeta requeridos
ICCChip (EMV)enc_tlv, pin_ksn
MCRBanda magnéticatracks.enc_track2, tracks.track_ksn
NFCContactlessenc_tlv y/o tracks según la tarjeta

Verificación del tarjetahabiente (cvm_type)#

ValorSignificado
pinPIN en línea — el PIN block cifrado se envía en card_details.pin_block
signatureFirma en la terminal
noneSin CVM (por ejemplo, transacciones de bajo monto, contactless)

Operaciones sin lectura de tarjeta#

Para anulaciones, reversos, reembolsos, capturas y reautorizaciones en las que volver a leer la tarjeta no es práctico, envía omit_card: true. En este caso los campos card_details y cvm_type son opcionales.

Cargos diferidos#

Para procesar un pago en cuotas, envía is_deferred: true e incluye el objeto deferred. Llama siempre primero al endpoint BIN lookup para confirmar que la tarjeta admite cuotas.
"is_deferred": true,
"deferred": {
  "months": "6"
}

Idempotencia#

Cada request debe incluir un client_transaction_id único (UUID v4). Reutilizar el mismo ID en los reintentos es seguro: Kushki devuelve el resultado de la transacción original en lugar de crear un duplicado.

Monedas#

MonedaCódigo
Sol peruanoPEN
Dólar estadounidenseUSD

Cifrado#

Los datos de la tarjeta (TLV, track data, PIN blocks) deben cifrarse con el protocolo DUKPT (Derived Unique Key Per Transaction) antes de enviarse a la API. Kushki y el comercio intercambian las Base Derivation Keys (BDK) mediante una ceremonia segura de Key Encryption Key (KEK) antes de salir a producción.
Consulta Key Exchange Process para conocer el procedimiento completo.

Webhooks#

Kushki envía notificaciones webhook para todos los eventos presenciales: cargos, autorizaciones, capturas, anulaciones, reversos y reembolsos. Configura tus endpoints de webhook desde la Console (Developers > Webhooks).
Consulta Introduction para la verificación de firma y Card Payments / Refunds para la estructura del body del webhook.
WARNING
Los webhooks de pagos presenciales solo se pueden configurar desde la Console. No se admite la configuración de webhooks por API.

Autenticación#

OperaciónCabecera
Cargos, anulaciones, reembolsos, listado de transaccionesPrivate-Merchant-Id: <your-private-key>
BIN lookup, información de la tarjetaPrivate-Credential-Id: <your-private-credential>
Opciones de diferido, información del BINPublic-Merchant-Id: <your-public-key>
Consulta de transacciones (analytics)Private-Credential-Id: <your-private-credential>

Cómo usar la API#

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

Recursos adicionales#

Proceso de intercambio de llaves
Ceremonia DUKPT/KEK requerida antes de procesar transacciones en producción.
Datos de prueba
Montos y escenarios para pruebas en sandbox en Perú.
Catálogo de errores
Códigos de estado HTTP y códigos de error ISO para Mastercard y Visa.
Notas de versión
Últimos cambios e historial de versiones de la API Card Present.

¿Tienes una sugerencia sobre esta documentación? Contáctanos.
Modified at 2026-09-11 14:40:54
Previous
Consultar alertas de fraude
Next
Notas de versión
Built with