1. Kushki One
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. Kushki One

Formato de montos en Kushki ONE

Aprende a construir el campo amount en unidades mínimas según la moneda de tu país y evita cobros con el monto equivocado
🚧 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.
Todos los endpoints de Kushki ONE Connect que involucran dinero comparten el mismo objeto amount. Antes de construir tu primer request, necesitas entender una sola regla: los montos se envían como números enteros, en la unidad mínima de la moneda.
Nunca envíes puntos, comas, espacios ni ningún otro separador.

Tu moneda y sus decimales#

En Perú operas en soles (PEN), que usan dos decimales.
La moneda no viaja en el request
El objeto amount no incluye un campo de moneda: la terminal resuelve la moneda desde su propia configuración. El equipo de integraciones confirma cuál usa tu terminal durante el onboarding.

La regla de conversión#

Los últimos dos dígitos del entero son siempre la parte decimal. Cuando el monto no tiene fracción, agrega igualmente los dos ceros.
Para cobrarEnvías
12.44 PEN1244
12.00 PEN1200
100.00 PEN10000
118.00 PEN11800

Cómo se compone el monto#

El monto cobrado es la suma de todos los campos del objeto amount.
CampoQué representa
subtotal_ivaPorción de la venta afecta a impuesto
ivaMonto del impuesto sobre esa porción
subtotal_iva0Porción exenta. Usa solo este campo cuando la venta no tiene desglose
extra_taxesImpuestos de giros específicos: airport_tax, iac, ice, travel_agency. Envía 0 cuando no aplican
tipPropina. Viaja en /charge y /authorization; en /pos_tip es el monto de la operación. Si la funcionalidad no está habilitada la terminal la ignora — solicítala en soporte@kushkipagos.com
El campo se llama iva aunque el impuesto sea el IGV
En Perú el impuesto general a las ventas es el IGV, pero el campo de la API conserva el nombre iva en todos los mercados. Envía el monto del IGV en ese campo.

Ejemplo completo#

Venta de 100.00 PEN con IGV del 18%.
ComponenteValorUnidad mínima
subtotal_iva100.00 PEN10000
iva18.00 PEN1800
Total cobrado118.00 PEN11800
{
  "amount": {
    "iva": 1800,
    "subtotal_iva": 10000,
    "subtotal_iva0": 0,
    "extra_taxes": { "airport_tax": 0, "iac": 0, "ice": 0, "travel_agency": 0 }
  },
  "client_transaction_id": "5e6f7a8b-1111-4000-8000-aabbccddeeff"
}

Venta sin desglose de impuestos#

Cuando no detallas impuestos, coloca el monto completo en subtotal_iva0:
{
  "amount": {
    "iva": 0,
    "subtotal_iva": 0,
    "subtotal_iva0": 11800,
    "extra_taxes": { "airport_tax": 0, "iac": 0, "ice": 0, "travel_agency": 0 }
  },
  "client_transaction_id": "1a2b3c4d-3333-4000-8000-112233445566"
}

Convierte a la unidad mínima#

No uses aritmética de punto flotante
En la mayoría de los lenguajes, 12.44 * 100 da 1243.9999999999998, que al truncar queda en 1243. Subcobras un centavo y tu conciliación se rompe de forma intermitente. Usa enteros o un tipo decimal.
Pasa el valor como cadena de texto, no como número decimal: Decimal(12.44) hereda el mismo error binario que intentas evitar.
JavaScript
Python

Errores frecuentes#

ErrorQué pasaCómo lo evitas
Enviar el monto con decimalesEl cobro sale con el monto equivocado o el request se rechazaConvierte a unidad mínima antes de enviar
Rellenar con 00 una moneda sin decimalesCobras 100 veces más de lo debidoEn COP y CLP el monto se envía tal cual
Reutilizar un helper de conversión de otro mercadoCobras 100 veces más o de menosDeriva los decimales por terminal, no por código
Enviar el monto como texto con separadoresError de validaciónElimina todos los separadores y envía un entero
Convertir con punto flotanteDiferencia de un centavo en algunos montosUsa enteros o un tipo decimal
Reutilizar un monto devuelto por un webhookMagnitud incorrectaEl evento no copia tu request: operation.amount omite iva y subtotal_iva cuando van en cero y agrega currency y tip
Valida antes de enviar
Verifica que los campos de amount sumen el total que esperas cobrar antes de llamar a la API. Un monto mal armado es la causa más frecuente de diferencias en conciliación.

Si operas en varios mercados#

Esta sección aplica solo si tu sistema de caja atiende comercios en más de un país.
MonedaPaísDecimales
CLPChile0
COPColombia0
MXNMéxico2
PENPerú2
El mismo entero es distinto dinero
1244 representa 12.44 MXN en México y 1.244 COP en Colombia: una diferencia de 100 veces. Como el payload no lleva campo de moneda, resolver esto queda enteramente de tu lado.
Consulta el currency_code configurado en cada terminal y deriva la cantidad de decimales a partir de ahí, nunca a partir de la sucursal o del idioma del usuario.
Acepta cobros con Kushki ONE
Con el monto correctamente construido, revisa los flujos de cobro: venta directa, pre-autorización, captura, propina posterior y anulación.
Catálogo de errores
Consulta los códigos de validación de monto y las acciones correctivas recomendadas.
Modificado en 2026-10-13 20:10:45
Anterior
Servicios asíncronos y webhooks
Siguiente
Catálogo Unificado de Errores — Kushki ONE Connect
Built with