1. Online Payments
Español
  • English
  • Español
  • Docs de API 🇨🇴
  • Online Payments
    • Errores del API de Kushki
    • Errores ISO
    • Notas de versión
    • Card Payments
      • Solicitar un token de tarjeta
      • Hacer un cargo o cargo diferido
      • Crear pago (sin token)
      • Anular una transacción
      • Reembolsar una transacción
      • Solicitar opciones de diferido
      • Autorizar pagos
      • Preautorización (sin token)
      • Reautorizar pagos
      • Capturar un pago autorizado
      • Verificar cuenta
      • 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
      • Hacer un pago One-click
      • Actualizar los datos de la tarjeta del cargo recurrente
      • 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
    • Chargebacks
      • Consultar chargebacks
      • Solicitar exportación de chargebacks
    • Transfer in
      • Consultar lista de bancos
      • Solicitar un token de Transfer In
      • Iniciar transacción
      • Consultar estado
      • Cancelar transacción
    • 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
      • Eliminar una transacción de Cash In
      • Actualizar una transacción de Cash In
    • Cash-out
      • Solicitar un token de Cash Out
      • Iniciar transacción
      • Estado de la transacción
      • Actualizar una transacción de Cash Out
      • Eliminar una transacción de Cash Out
    • Smartlinks-v2
      • Crear un Smartlink
      • Consultar un Smartlink
      • Actualizar un Smartlink
      • Eliminar un Smartlink
    • Analytics
      • Consultar listado de transacciones v2
    • Gateway-status
      • Consultar estado del gateway
      • Consultar estado de la plataforma
    • Payment Credentials
      • Crear una credencial
      • Buscar credenciales
      • Búsqueda avanzada
      • Eliminar credencial
      • Regenerar una credencial
      • Activar o desactivar
      • Actualizar credencial
    • Payment Button
      • Crear un Payment Button
    • Settlement
      • Consultar liquidación
    • Subscription Transactions
      • Consultar transacciones de suscripción
    • Fraud Report
      • Consultar alertas de fraude
  • Kushki One
    • Error Catalog
    • Release notes
    • Transaction Examples
    • Webhooks
    • Cloud Services
      • Payment
        • 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)
        • Search
          • Transaction Search
      • Print
        • Create Print Job
        • Get Print Job Status
    • Local Services
      • Payment
        • 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
        • Create Print Job
        • Get Print Job Status
        • Print Job Webhook (inbound — implemented by your POS)
  • API Raw Card Present Payments
    • Notas de versión
    • Catálogo de errores
    • El objeto Amount
    • Proceso de intercambio de llaves
    • Datos de prueba
    • One-time Payments
      • Pago único
    • Two-step Payments
      • Autorización y captura
    • Card Information
      • Consultar información de BIN
      • Información de BIN V2
      • Solicitar opciones de diferido
    • Voids & Refunds
      • Anular y reversar
      • Reembolsar una transacción
    • Query Transactions
      • Búsqueda de transacciones
    • Webhooks
      • Introducción
      • Buenas prácticas
      • Webhooks-Pagos con tarjeta
      • Webhooks-Reembolsos
      • Revisa tus webhooks
    • Chargebacks
      • Consultar chargebacks
      • Solicitar exportación de chargebacks
    • Fraud Report
      • Consultar alertas de fraude
  • Appian - Submerchant Register
    • Release Notes
    • Submerchant Validation in Batch
    • Query submerchant status by requestId/submerchantId
    • Get submerchantIds
    • Get credentials for submerchants
  • Schemas
    • RequestBodies
      • one-and-two-step-payment
    • Card
    • Channel
    • ChargebackListResponse
    • TransactionResponse
    • PrintJobRequest
    • card
    • one-and-two-step-payment-3
    • Card Present (CP)
    • one-and-two-step-payment-3
    • SubscriptionTransactionsResponse
    • Amount-cash-in
    • SettlementDateRangeRequest
    • amount
    • FraudAlertRequest
    • SubscriptionTransaction
    • ChargebackItem
    • SettlementRecord
    • RawResponse
    • CommandText
    • Card Not Present (CNP)
    • networkToken
    • FraudAlertResponse
    • ErrorResponse400
    • CardData
    • CommandColumns
    • extra_taxes
    • FraudAlertRecord
    • ErrorResponse
    • currency
    • Deferred
    • webhooksItem
    • SettlementResponse
    • ErrorResponse401
    • LinkFailure
    • ColumnItem
    • Amount
    • ValidationError
    • pos_details
    • ErrorResponse403
    • CommandDivider
    • enc_tlv
    • TransactionEvent
    • extraTaxes
    • card_details
    • Country
    • payment_method
    • ErrorResponse500
    • CommandFeed
    • TransactionStatus
    • deferred
    • CommandSpace
    • ReadingType
    • contact_details
    • ContactDetails
    • CommandCut
    • sub_merchant
    • FailureReason
    • CommandImage
    • metadata
    • EventTerminal
    • documentType
    • Subscription
    • orderDetails
    • Language
    • TransactionSearchRequest
    • CommandQR
    • EventOperation
    • Shipping Address
    • payment_submethod
    • CommandBarcode
    • EventAmount
    • Billing-Address
    • EventExtraTaxes
    • PrintJobAccepted
    • PrinterError
    • EventMetadata
    • SubscriptionUpdate
    • AmountWithTaxes
    • PrintJobStatus
    • PrintJobStatusRequest
    • threeDomainSecure
    • SubscriptionAdjustmentRequest
    • AmountCore
    • product
    • webhooks
    • headers
    • ExtraTaxes
    • PrintWebhookPayload
    • Metadata
    • webhooksChargeback
    • AmountWithTip
    • citMit
    • TransactionSearchBody
    • TransactionSearchOnlineBody
    • network
    • binInfo
    • AmountWithOptionalTip
    • TransactionSearchLocalBody
    • TransactionEvent_2
    • messageFields
    • UnexpectedErrorResponse
    • FailureReason_2
    • transactionType
    • ExternalReferenceId
    • EventTerminal_2
    • ExternalSubscriptionId
    • EventOperation_2
    • EventAmount_2
    • EventExtraTaxes_2
    • EventMetadata_2
    • SettlementTicketRequest
    • ErrorResponse
    • TransactionEvent_23
    • TransactionStatus4
    • ReadingType5
    • FailureReason_26
    • EventTerminal_27
    • EventOperation_28
    • EventAmount_29
    • EventMetadata_210
    • EventExtraTaxes_211
    • PrintWebhookPayload12
    • TransactionEvent13
    • FailureReason14
    • EventTerminal15
    • EventOperation16
    • EventAmount17
    • EventMetadata18
    • EventExtraTaxes19
HomePerú 🇵🇪México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴
Chile 🇨🇱
HomePerú 🇵🇪México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴
Chile 🇨🇱
  1. Online Payments

Pagos One-Click y programados

Las tarjetas de crédito tienen cobertura global y son una de las formas más populares de pagar en línea. Existen distintos tipos de tarjeta y varios pasos en el proceso. Conoce cómo funciona, quiénes participan y las etapas de un pago por suscripción.
¡Ten en cuenta!
Debido a nuestras políticas de riesgo, los métodos de pago disponibles y el tipo de integración pueden variar una vez que completes la afiliación. Te indicaremos cómo proceder si este proceso aplica a tu comercio.
Este servicio también se conoce como Tokenización y ejecución de cargos recurrentes.

Proceso de pago#

Un pago con tarjeta de crédito para una suscripción se realiza en 2 etapas principales: el registro de la tarjeta y la ejecución del cargo recurrente.
Flujo de pago recurrente
Flujo de pago recurrente

Etapa 1 — Registro de la tarjeta de crédito o débito#

Selecciona un método de pago
En tu sitio web o app, el usuario selecciona el método de pago. Asegúrate de que quede claro para el pagador que su tarjeta de crédito o débito quedará registrada para cargos recurrentes.
Ingresa los datos de la tarjeta
El usuario ingresa los datos de su tarjeta. Tu sitio web o app debe verificar que la información de la tarjeta sea correcta — por ejemplo, que la fecha de expiración no esté vencida o que el número de tarjeta pase el algoritmo de Luhn.
Nota: En esta etapa todavía no se puede confirmar que la tarjeta sea válida.
Envía los datos a Kushki
Kushki recibe los datos y verifica si hay fondos suficientes ejecutando un cargo de validación de la suscripción. Este cobro pequeño lo hace Kushki y se reversa automáticamente si es exitoso. Sirve para asegurar que la tarjeta del cliente se pueda cobrar después del registro.
Notificación de la suscripción
Kushki te informa el resultado del registro de la tarjeta para que puedas mostrárselo al usuario en pantalla.

Etapa 2 — Pago recurrente#

Ejecución del pago
Kushki procesa los cargos recurrentes a la tarjeta registrada de forma automática. Los pagos se ejecutan y se repiten según el monto y el periodo definidos en la suscripción.
La lógica de facturación se ejecuta todos los días a partir de las 6 AM GMT-5. Asegúrate de crear la suscripción antes de esa hora si quieres que el primer pago ocurra el mismo día del registro. Al crear una suscripción, debes definir el campo startDate.
Lógica de reintentos
Si un pago es rechazado, Kushki reintenta el cargo automáticamente. Por defecto, hay 3 reintentos durante 3 días seguidos a partir del startDate original. Por ejemplo, para una suscripción mensual con startDate: 10-01-2021 y un rechazo el 10-02-2021, el pago se reintentará hasta el 13-02-2021 — 3 veces por día, para un total de 9 intentos.
Puedes personalizar la lógica de reintentos con el objeto retryConfiguration:
scheduled — Por intervalo
fixed — Días específicos
Reintenta cada N días. El ejemplo siguiente reintenta 3 veces por día, cada 2 días, durante todo el mes.
{
  "retryConfiguration": {
    "retryType": "scheduled",
    "value": [2]
  }
}
Si el último intento de cargo es declinado, Kushki puede notificarte vía Webhook. En ese caso, te recomendamos contactar al tarjetahabiente y ofrecerle alternativas — por ejemplo, actualizar la tarjeta registrada o solicitar un One-click payment por una sola vez. Kushki seguirá ejecutando los cargos automáticos en los periodos siguientes.
Notificación del estado de la transacción
Recibirás una notificación del estado de cada cargo automático mediante las Webhook notifications que expone tu sistema. También puedes verificar las transacciones, sus detalles y su estado directamente en la Kushki Console.

Uso de la API#

Para usar la API, debes solicitar tus credenciales de Kushki Sandbox, compuestas por un Public-Merchant-Id y un Private-Merchant-Id.
🟢 Producción
🧪 Sandbox (UAT)
https://api.kushkipagos.com/

Endpoints disponibles#

Solicitar un token de cargo recurrente
Tokeniza los datos de la tarjeta para registrarla para cargos recurrentes.
Crear un cargo recurrente
Crea una nueva suscripción con el token de la tarjeta registrada.
Hacer un pago One-Click
Ejecuta un cargo on demand único sobre una tarjeta registrada.
Consultar un cargo recurrente
Obtén los detalles y el estado actual de una suscripción.
Actualizar los datos de la tarjeta
Reemplaza la tarjeta asociada a una suscripción activa.
Actualizar un cargo recurrente
Modifica el monto, la frecuencia o las fechas de una suscripción existente.
Agregar un cargo o descuento temporal
Aplica un cargo o descuento adicional por una sola vez al siguiente ciclo de facturación.
Cancelar un cargo recurrente
Cancela y desactiva una suscripción activa.
Preautorización de suscripción
Reserva fondos en una tarjeta registrada sin capturarlos de inmediato.
Captura de suscripción
Captura un monto previamente autorizado en una tarjeta registrada.

Pagos diferidos en suscripciones#

Colombia 🇨🇴 admite cargos diferidos (en cuotas) en los pagos one-click. Llama siempre a Request Deferred Options para verificar los planes disponibles según el BIN de la tarjeta del cliente antes de ofrecer diferido.
Llama siempre a Request Deferred Options para verificar los planes de diferido disponibles según el BIN de la tarjeta del cliente antes de presentarle las opciones de diferido al usuario.
Modelo de adquirencia
Modelo de agregador
Envía el objeto deferred con creditType, graceMonths y months dentro de la solicitud de cargo:
{
  "deferred": {
    "creditType": "01",
    "graceMonths": "00",
    "months": 3
  }
}
Valores comunes de creditType para Colombia:
CódigoDescripción
01Cuotas — diferido estándar
02Cuotas con período de gracia — diferido con meses de gracia

Flujo de preautorización de suscripción#

Producto en versión beta 🔐👨‍💻
Estamos trabajando en nuestra versión beta. ¡Muy pronto será su lanzamiento oficial! También puedes contactar a tu ejecutivo de cuenta para más información.
Usa la preautorización de suscripción para reservar fondos en una tarjeta registrada antes de confirmar el cargo.
1
Preautoriza
Llama a Subscription Pre-Authorization (POST /subscriptions/v1/card/{subscriptionId}/preAuthorization). El banco reserva el monto en la tarjeta del cliente.
La autorización expira 28 días después para tarjetas de crédito y 7 días después para tarjetas de débito, contados desde el momento de la solicitud.
2
Captura
Llama a Subscription Capture (POST /subscriptions/v1/card/{subscriptionId}/capture) con el ticketNumber de la respuesta de la preautorización para cobrar los fondos reservados.

Idempotencia#

🔁
La API de Kushki admite solicitudes idempotentes para reintentar operaciones de forma segura sin riesgo de ejecutar la misma transacción dos veces. Es especialmente útil cuando problemas de red, timeouts o reintentos del cliente podrían crear registros duplicados.

Cómo funciona#

Para hacer una solicitud idempotente, incluye la cabecera Idempotency-Key con un valor único al llamar a un endpoint compatible.
Kushki guarda la respuesta solo si la solicitud original es exitosa.
Si se envía la misma llave dentro de la ventana de vigencia, se devuelve la misma respuesta exitosa.
Si la solicitud original falló (4XX / 5XX), no se guarda ningún registro y el cliente puede reintentar con la misma llave.

Cabecera#

Reglas#

ReglaDetalle
Ventana de vigencia24 horas. Después de ese tiempo, la misma llave genera una nueva transacción.
Longitud máxima56 caracteres
UnicidadDebe ser única por tipo de transacción
Formato recomendadoUUIDv4 o una cadena aleatoria equivalente de alta entropía

Endpoints compatibles#

Actualmente la cabecera Idempotency-Key es compatible con:
Void a transaction — cargos únicos, preautorizaciones y cargos de suscripción.
Refund a transaction — reembolsos de cargos únicos, preautorizaciones y cargos de suscripción.
Preautorizaciones de suscripción.

Escenarios de error#

5XX — Errores del servidor
4XX — Errores del cliente
No se guarda ningún registro de idempotencia. El cliente puede reintentar con la misma Idempotency-Key. El reintento queda a discreción del integrador.

Buenas prácticas#

Genera siempre una Idempotency-Key nueva para cada intento de transacción único.
Usa UUIDv4 u otro generador de cadenas aleatorias robusto para garantizar la unicidad.

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