1. Raw card-present API
Kushki Docs
Español
  • Español
  • English
  • Inicio
  • Inicio rápido
    • Últimas novedades
    • Datos de prueba
    • Preguntas frecuentes
    • Paso a producción
    • Política de cambios importantes del API
    • Códigos de error
  • 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
      • Acepta un pago con tarjeta
      • Cargo directo (sin token)
      • ¿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
    • Pagos en dos pasos
      • Recibe pagos con autorización y captura
      • ¿Cómo funcionan los pagos únicos con autorización y captura?
    • Devoluciones
      • Devoluciones, anulaciones y reembolsos
    • Autenticación 3DS
      • Integración 3DS API + librería kushki.js
      • Introducción a 3DS
      • Integración 100% API de 3DS
      • Integración 3DS con librería kushki.js
      • Códigos de error autenticación 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
    • Suscripciones externas a Kushki
    • Acepta pagos one click con 3DS
    • Funcionalidades por modelo de negocio
    • Códigos de error en cargos recurrentes
    • Pagos calendarizados
      • Maneja tus cargos calendarizados
      • Crea un cargo calendarizado
      • ¿Cómo funcionan los cargos recurrentes con tarjeta?
    • Pagos OneClick
      • Recibe pagos OneClick con autorización y captura
      • Genera pagos one click
      • ¿Cómo funcionan los pagos OneClick con autorización y captura?
  • Pagos con tarjeta presente
    • Acepta pagos con tarjeta presente
    • Datos de prueba
    • Webhooks para tarjeta presente
    • Raw card-present API
      • Introducción a Raw card-present API
      • Script de ejemplo para cifrar información
      • Acepta pagos
      • Intercambio de claves criptográficas
      • Preguntas frecuentes
      • Códigos de error para transacciones con tarjeta presente
    • Kushki One
      • Primeros Pasos
      • Autenticación y Cifrado de Requests
      • Realiza cobros con Kushki One
      • Formato de montos en Kushki ONE
      • Impresión en terminal SmartPOS
      • Catálogo Unificado de Errores — Kushki ONE Connect
      • Servicios asíncronos y webhooks
    • Kushki One App de Pagos
      • Descripción general
      • Devoluciones y PreAuth & Capture
      • Pago Dividido en la terminal
      • Configuración del terminal
      • Procesa un cobro
      • Consulta tus transacciones
    • Transacciones
      • Transacciones
      • Anula un pago
  • Pagos con transferencias
    • Recibe transferencias bancarias
    • Códigos de error para transferencias
    • Consulta el estado de una transacción
    • Bancos y detalles de operación para pagos con transferencia bancaria
  • Pagos en efectivo
    • Acepta un pago en efectivo
    • ¿Cómo funcionan los pagos en efectivo?
    • Puntos de recaudo
    • Códigos de error para transacciones declinadas en efectivo
  • Métodos alternativos de pago (APM)
    • ¿Cómo funcionan los pagos con APM?
    • Acepta pagos con Bre-B
  • Dispersión de dinero
    • Recarga tu saldo para dispersiones
    • Transferencia bancaria
      • Dispersa a cuentas bancarias
      • Dispersa con Bre-B
      • Códigos de error para dispersiones por transferencia
      • ¿Cómo funciona la dispersión por transferencia bancaria?
    • Efectivo
      • Dispersa dinero en efectivo
      • Maneja tus dispersiones
      • ¿Cómo funciona la dispersión por efectivo?
  • Plugins
    • Shopify
      • Shopify
      • Operación del Plugin
    • Vtex
      • Guía de integración VTEX
  • Links de pago
    • Smartlinks
  • Formularios y botones de pago
    • Introducción
    • Kajita
      • Kajitas de pago
      • ¿Cómo funciona?
    • Botón de pago
      • Genera un botón de pago
      • ¿Cómo funciona el 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 smartlinks
      • Webhooks con Smartlinks
    • Webhooks para dispersiones
      • Webhook para dispersión de dinero con transferencia
      • Webhook para dispersión de dinero con efectivo
    • 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. Raw card-present API

Script de ejemplo para cifrar información

Importante
Esta opción está disponible solo en ambiente de pruebas. Para el pase a producción, deberás contar con un HSM y seguir las instrucciones del artículo
Intercambio de claves.
Versión beta del producto
Estamos trabajando en nuestra versión beta de Raw card present. ¡Mantente atento para el lanzamiento oficial! También puedes contactar a tu account manager para más información.
En caso de que estés en fase de pruebas y aún no cuentes con un HSM (Hardware Security Module), puedes solicitar a Kushki que te proporcione las claves de prueba para que, a través de una biblioteca, puedas cifrar los datos de la transacción y hacer peticiones en Postman a la API de Kushki, de esta forma poder acelerar la implementación de tu solución.
A continuación se mostrarán los pasos a seguir para poder cifrar los datos de la tarjeta leída con la terminal POS utilizando las claves de cifrado mediante la herramienta Cardtool.
Ten en cuenta que la herramienta Cardtool no es compatible con chip m de Mac.

Requisitos#

Para poder realizar el cifrado por medio del script y obtener la información que se debe incluir en la solicitud, es necesario contar con los siguientes elementos:
BDK (en formato TR-31) que será proporcionada por el área de Seguridad de la Información de Kushki.
BDK (en formato TR-31) de PIN que de igual manera es proporcionado por el área de Seguridad de la Información. Este es utilizado solamente para transacciones con PIN online.
Un par de credenciales para transaccionar, deberás contar con tu private key y tu public key.
Key Serial Number (KSN) de tu terminal, puedes obtener un KSN de ejemplo y simplemente modificar el contador cada que realices una nueva transacción
Instalar Python.
Instalar la herramienta de Cardtool.

1. Preparación de variables#

Debes configurar los siguientes datos en los archivos de configuración setting.yml y cards-out.json dentro del proyecto antes de ejecutarlo.
preparacion variables
Ejecutar los siguientes comandos:
python3 -m venv .env
source .env/bin/activate
!pip3 install cardtool

2. Obtener clave en “claro”#

Para poder realizar el cifrado de los datos de PIN y tarjeta es necesario primero obtener la clave en “claro” desde la clave compartida por Kushki en formato tr-31
Para ello, vamos a realizar la ejecución del siguiente comando
cardtool decrypt-key -kbpk <your_key_block_protection_key> -kcv <key_check_value> YOUR_KEY_BLOCK
El resultado será parecido al siguiente:
Plaintext Key: ABCD1234AB01CD23F126FBAB02621ADA
Este valor será utilizado para el siguiente comando donde vamos a cifrar la información de la data y PIN.

3. Ejecución de script para obtener data cifrada#

Ahora que tenemos configurado el archivo de settings.yaml e instalada nuestra dependencia, vamos a realizar la ejecución del siguiente comando:
cardtool gen-card -cfg setting.yml -fmt json cards-out.json
Al ejecutar el comando vamos a obtener el archivo de cards-out.json como salida, este archivo contendrá la información necesaria para poder enviar en el cuerpo de tu petición de ejemplo:
resultado comando

4. Payload de transacción#

Para poder ejecutar el payload de prueba de una transacción, recomendamos utilizar Postman, en el cual ya contamos con una colección que podrás encontrar en este enlace. Dicha colección puede ser de apoyo para las pruebas y validaciones durante la implementación.
Al obtener la información cifrada de la tarjeta y el PIN, solo debes incluir en el body del request y enviar:
postman
Modificado en 2026-09-23 16:56:34
Anterior
Introducción a Raw card-present API
Siguiente
Acepta pagos
Built with